news 2026/8/10 7:17:59

智能体范式实战:从ReAct到Plan-and-Solve的架构设计与工程实践

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
智能体范式实战:从ReAct到Plan-and-Solve的架构设计与工程实践

1. 从“玩具”到“工具”:智能体范式的价值回归

最近和几个做AI应用的朋友聊天,发现一个挺有意思的现象:大家嘴上都在聊“智能体”(Agent),但聊到最后,往往又回到了“Prompt工程”或者“调用API”的老路上。一个朋友想做个自动处理客服工单的助手,吭哧吭哧写了几百行的提示词,结果稍微复杂一点的场景就“宕机”,要么答非所问,要么陷入死循环。他问我:“都说Agent是未来,我这做的算Agent吗?怎么感觉就是个加强版的ChatGPT?”

这其实点出了当前很多AI应用开发者的困惑。随着大语言模型(LLM)能力的爆发,我们似乎一夜之间拥有了一个“全能”的大脑。但很快我们就发现,这个大脑虽然知识渊博,却像个“思想上的巨人,行动上的矮子”——它很会“想”,但不太会“做”。让它写首诗、总结文章没问题,但一旦涉及到需要多步骤推理、调用外部工具、处理动态信息、并从错误中学习的复杂任务时,单纯靠一个精心设计的Prompt就显得力不从心了。

这就是“智能体范式”要解决的核心问题。它不是一个具体的框架或工具,而是一套构建具备自主感知、规划、决策与执行能力的AI系统的设计模式与架构思想。简单说,它让AI从一个被动的、一次性的“答题器”,转变为一个主动的、可持续运作的“执行者”。今天,我们不谈那些天花乱坠的概念,就从一个一线开发者的视角,拆解几个最经典、最经得起实战考验的智能体构建范式。理解了这些范式,你就能像搭积木一样,组合出真正能解决实际问题的AI应用,而不仅仅是又一个“玩具级”的演示。

2. 智能体的核心组件:超越“提示词工程”的四大支柱

在深入具体范式之前,我们必须先统一“语言”。一个合格的智能体,远不止是一个大模型加上一段提示词。它更像一个完整的软件系统,由几个关键组件协同工作。理解这些组件,是设计任何范式的基础。

2.1 大脑(推理核心):大语言模型(LLM)

这是智能体的“CPU”,负责所有的理解、推理和决策生成。但这里有一个关键认知转变:我们不再把LLM当作一个“百科全书式的问答机”,而是将其视为一个通用的推理引擎和规划器。它的核心价值在于将非结构化的自然语言指令,转化为结构化的思维过程或行动计划。选择LLM时,除了关注其知识量和对话能力,更要关注其指令遵循(Instruction Following)能力、逻辑推理(Reasoning)能力和输出格式的稳定性。例如,GPT-4在复杂推理上通常优于GPT-3.5,而Claude系列在长上下文和格式输出上可能有独特优势。

2.2 记忆系统:短期、长期与外部记忆

记忆是智能体实现连续性和个性化的关键。它通常分为三层:

  • 短期记忆(工作记忆/上下文):即当前对话或单次任务执行所能保留的上下文信息。这直接受限于LLM的上下文窗口长度。它的管理策略(如哪些历史对话需要保留、如何压缩或总结)直接影响智能体处理长程任务的能力。
  • 长期记忆(向量数据库/图数据库):用于存储超越上下文窗口的历史经验、领域知识、用户偏好等。通常通过嵌入(Embedding)技术将信息向量化后存入向量数据库,供需要时检索。对于需要强逻辑关联的知识(如人物关系、事件链条),图数据库可能是更好的选择。
  • 外部记忆(工具/API的调用结果):智能体通过工具执行动作后产生的新信息(如查询到的天气、计算出的结果、更新的数据库记录)。这些信息需要被有效地整合到当前的推理上下文中,作为下一步决策的依据。

2.3 工具集(行动能力)

这是智能体与物理世界或数字世界交互的“手脚”。没有工具,智能体就只是一个空想家。工具可以非常广泛:

  • 信息获取类:搜索引擎API、数据库查询、知识图谱查询。
  • 计算与处理类:代码解释器(Python)、计算器、数据格式转换工具。
  • 状态改变类:发送邮件、操作数据库(增删改查)、调用业务系统API、控制智能设备。
  • 专业领域类:金融数据分析工具、法律条文检索系统、医疗诊断辅助接口。

工具的设计需要提供清晰的名称、描述、输入参数格式和输出示例,以便LLM能准确理解何时以及如何调用它们。

2.4 决策与行动循环(控制流)

这是将以上组件串联起来的“工作流程”或“算法”。它定义了智能体如何接收输入、进行思考、选择工具、执行动作、观察结果,并决定下一步是继续、修正还是结束任务。不同的经典范式,本质上就是不同的决策与行动循环设计。

3. 经典范式一:ReAct —— 思维链与行动链的结合

ReAct(Reason + Act)范式,由Princeton和Google的研究者在2022年提出,是当前最主流、影响最深远的智能体范式之一。它完美地诠释了“让AI把思考过程说出来再行动”的价值。

3.1 ReAct的核心思想与工作流程

在ReAct之前,常见的做法是让模型直接输出最终答案(Act)或者先进行一连串的推理再输出答案(CoT, Chain-of-Thought)。ReAct的创新在于将两者交织在一起,形成一个动态的“思考-行动-观察”循环。

它的标准流程可以概括为:

  1. 任务输入:用户提出一个需要多步骤解决的问题(例如:“特斯拉股票过去一周的最高价和最低价分别是多少?两者差价是多少?”)。
  2. 思考(Think):LLM分析当前任务、已有的上下文(包括之前的行动和观察结果),规划下一步应该做什么。关键点:思考内容必须结构化输出,通常以“Thought:”开头。
  3. 行动(Act):根据思考,LLM决定是调用某个工具,还是直接给出最终答案。如果调用工具,必须以特定格式(如Action: Search[特斯拉股价])精确输出。
  4. 观察(Observe):执行工具调用,获取结果(可能是网页内容、数据库返回值或错误信息)。这个结果以“Observation:”为前缀,反馈给LLM,成为下一轮思考的新上下文。
  5. 循环:重复步骤2-4,直到LLM认为已经收集到足够信息,可以给出最终答案(以“Final Answer:”开头)。

3.2 一个实战代码片段示例

假设我们有一个搜索工具search_web(query)和一个计算工具calculate(expression)。一个简化的ReAct循环实现可能如下(使用Python伪代码):

import re class ReActAgent: def __init__(self, llm, tools): self.llm = llm self.tools = {tool.name: tool for tool in tools} # 工具名到工具的映射 self.max_steps = 10 def run(self, query): context = f"Question: {query}\n" for step in range(self.max_steps): # 生成包含 Thought 和 Action 的响应 prompt = f"""你是一个ReAct智能体。请根据当前上下文,思考下一步该做什么,然后执行行动。 你必须严格按照以下格式输出: Thought: [你的推理过程] Action: [工具名称][工具输入] # 例如:Action: Search[特斯拉股价] 或者,如果你认为可以回答问题了: Thought: [你的推理过程] Final Answer: [你的答案] 当前上下文: {context} """ response = self.llm.generate(prompt) # 解析响应 thought_match = re.search(r'Thought:\s*(.*)', response) action_match = re.search(r'Action:\s*(\w+)\[(.*)\]', response) final_match = re.search(r'Final Answer:\s*(.*)', response) if final_match: return final_match.group(1) # 返回最终答案 if action_match and thought_match: tool_name, tool_input = action_match.group(1), action_match.group(2) if tool_name in self.tools: # 执行工具 observation = self.tools[tool_name].execute(tool_input) # 将本次思考、行动和观察加入上下文,供下一步使用 context += f"Thought: {thought_match.group(1)}\nAction: {action_match.group(0)}\nObservation: {observation}\n" else: observation = f"Error: Unknown tool '{tool_name}'." context += f"Thought: {thought_match.group(1)}\nAction: {action_match.group(0)}\nObservation: {observation}\n" else: # 输出格式错误,给予提示并重试或结束 observation = "Error: Your response format is incorrect. Please output 'Thought: ...' followed by either 'Action: ...' or 'Final Answer: ...'." context += f"Observation: {observation}\n" return "Agent reached maximum steps without final answer."

3.3 ReAct的优劣与实战心得

  • 优势
    • 可解释性强:完整的“Thought”记录让整个决策过程白盒化,便于调试和追溯。当智能体犯错时,你可以清晰地看到是“思考”错了,还是“行动”错了,或是“观察”的信息有问题。
    • 纠错能力强:通过观察工具返回的结果(甚至是错误信息),智能体可以调整后续计划。例如,搜索“特斯拉股价”返回了太多无关信息,下一轮思考可能会调整为“搜索‘特斯拉股票 TSLA 历史股价’”。
    • 通用性好:该范式不依赖于特定领域,只要定义好工具,可以应用于各种任务。
  • 挑战与注意事项
    • 提示工程要求高:需要精心设计提示词,确保LLM稳定输出格式正确的“Thought/Action/Observation”序列。格式错误会导致循环崩溃。
    • 依赖LLM的规划能力:对于极其复杂、需要超长链条规划的任务,LLM可能在早期思考中就出现方向性偏差,导致后续步骤全错。
    • 效率与成本:每一步都需要调用一次LLM,对于简单任务可能显得冗长,token消耗和延迟较高。
    • 工具描述的准确性:工具的名称、描述和输入输出示例必须极其准确,任何歧义都可能导致LLM误用。

实战心得:在实现ReAct时,对LLM输出的解析鲁棒性至关重要。不要指望LLM每次都能完美格式化输出。除了正则表达式,可以结合JSON格式要求(让LLM输出JSON对象),或使用LLM本身进行二次解析(例如,用一个小提示词问“请从上文提取Action部分”)。另外,为循环设置最大步数并监控异常(如重复动作、陷入死循环)是生产环境必须的。

4. 经典范式二:Plan-and-Solve —— 先谋定而后动

如果说ReAct是“边想边做”的敏捷风格,那么Plan-and-Solve(计划与执行)范式就更像是“先设计图纸,再按图施工”的传统工程风格。它尤其适合那些步骤清晰、依赖关系明确、且不太需要中途探索的任务。

4.1 Plan-and-Solve的核心思想

该范式的核心是将“规划”与“执行”两个阶段分离:

  1. 规划阶段:LLM根据任务目标,一次性生成一个完整的、分步骤的执行计划。这个计划应该尽可能详细,列出每一步要做什么、使用什么工具、预期的输入输出是什么。
  2. 执行阶段:另一个执行模块(可以是一个简单的程序,也可以是另一个LLM)严格地、按顺序地执行这个计划,调用相应的工具,并收集结果。在执行过程中,通常不允许修改原计划。如果某一步失败,整个任务可能就失败了,或者进入预定义的错误处理流程。

4.2 与ReAct的对比及应用场景

特性ReAct范式Plan-and-Solve范式
决策方式动态、循环、基于反馈静态、一次性、先验的
灵活性高,可根据执行反馈调整后续步骤低,计划一旦制定不易更改
可解释性高,有完整的实时推理链中等,有计划但无执行中的实时思考
执行效率相对较低(多轮LLM调用)相对较高(一次LLM调用生成计划,后续是确定性执行)
适用场景探索性、信息不完整、需要试错的任务(如复杂问答、研究)流程固定、步骤明确、依赖清晰的任务(如数据ETL流水线、标准操作流程SOP)
错误处理在循环中自然处理,可重试或调整依赖计划阶段的周全性,或在执行层预设错误处理

Plan-and-Solve非常适合以下场景

  • 自动化工作流:例如,“每天上午10点,从A数据库抽取销售数据,计算环比,生成图表,并发送邮件给经理”。这个流程步骤固定,可以预先规划好。
  • 代码生成与执行:让LLM为一个复杂问题生成完整的Python脚本(计划),然后由解释器执行(解决)。
  • 结构化数据操作:任务可以分解为一系列清晰的数据库查询、API调用和数据处理步骤。

4.3 实战中的变体与增强

纯粹的Plan-and-Solve缺乏灵活性,因此在实战中常需增强:

  • 分层规划(Hierarchical Planning):先制定一个高层大纲(如“1. 数据获取, 2. 数据清洗, 3. 数据分析”),再对每个高层步骤进行细化规划。这降低了单次规划的复杂度。
  • 计划验证与回滚:在执行前,用另一轮LLM调用或规则引擎对计划的合理性和安全性进行校验。当某一步执行失败时,不是整个任务失败,而是回滚到上一个检查点,或触发一个修复子计划。
  • 与ReAct结合:在高层采用Plan-and-Solve确定主阶段,在每个阶段内部采用ReAct进行灵活的探索和执行。这平衡了效率与灵活性。

实战心得:使用Plan-and-Solve时,规划提示词的质量直接决定任务成败。你需要在提示词中强烈要求LLM输出结构化、无歧义、可操作的计划。例如,要求它以YAML或JSON列表格式输出,每个步骤必须包含“step_id”, “description”, “tool_to_use”, “input_parameters”, “expected_output”。模糊的计划如“分析数据”是没用的,必须是“调用工具calculate_summary_stats,输入参数{‘data’: df, ‘columns’: [‘sales’, ‘profit’]}”。此外,务必在执行模块中加入对工具返回结果的基础验证(如检查返回类型、是否为空、是否包含错误码),避免因为计划的小偏差导致雪崩式失败。

5. 经典范式三:基于框架的智能体工作流(以React Agent为例)

当我们谈论“React Agent”时,有时会与前述的“ReAct范式”混淆。但更多时候,“React Agent”指的是基于特定框架(如LangChain、LlamaIndex、AutoGen)实现的,一种集成了工具使用、记忆管理和多轮对话的智能体封装。它通常以“Agent”类的形式存在,提供了比手动实现ReAct循环更高级、更便捷的抽象。

5.1 框架如何抽象智能体

以最流行的LangChain为例,它提供了一个AgentExecutor。开发者不需要自己写循环和解析逻辑,而是:

  1. 定义工具(Tool)。
  2. 选择一种代理类型(AgentType),如ZERO_SHOT_REACT_DESCRIPTIONSTRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION等。这些类型内置了优化过的提示词模板。
  3. 初始化代理(initialize_agent),将LLM、工具和代理类型传入。
  4. 运行代理(agent.run(“查询”)),框架会自动处理思考、行动、观察的循环。
from langchain.agents import initialize_agent, AgentType from langchain.llms import OpenAI from langchain.tools import Tool def search_api(query): # 模拟搜索工具 return f"关于'{query}'的搜索结果..." llm = OpenAI(temperature=0) tools = [ Tool( name="Search", func=search_api, description="用于搜索最新信息。输入是一个搜索词。" ), ] agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True) result = agent.run("特斯拉最新的车型是什么?")

verbose=True会让框架打印出类似ReAct的思考过程,方便调试。

5.2 框架带来的便利与隐藏的坑

  • 便利性
    • 开箱即用:无需从零设计提示词和循环逻辑,极大降低入门门槛。
    • 功能集成:轻松集成记忆(ConversationBufferMemory)、知识库(RetrievalQA)等组件。
    • 工具生态:框架通常提供大量预置工具(如数学计算、维基百科搜索),也易于自定义。
    • 多智能体协作:如AutoGen框架专门简化了多智能体对话与协作的构建。
  • 隐藏的坑与注意事项
    • 黑盒性与调试困难:框架封装了复杂性,但当出现奇怪行为时(如智能体突然不调用工具了),调试起来可能比手写代码更困难。你需要深入理解框架内置的提示词模板。
    • 性能与成本失控:框架为了通用性,提示词可能比较冗长,导致单轮交互消耗大量tokens。在复杂循环中,成本会指数级上升。需要仔细监控token使用。
    • 版本依赖与灵活性限制:你的智能体行为受框架版本和内置逻辑约束。当你有非常定制化的需求时(例如特殊的错误恢复机制),可能会发现框架反而成了枷锁。
    • “魔法”幻觉:初学者容易认为调用initialize_agent就万事大吉,忽略了智能体底层依然依赖LLM的不可预测性和工具设计的合理性。

实战心得从框架入手,但不要被框架限制。建议先用LangChain这类框架快速搭建原型,验证想法。一旦核心流程跑通,并且你发现框架的某些部分成为瓶颈(如提示词效率低、循环逻辑不满足需求)时,就要考虑“脱框”,基于其思想用更精简的代码实现自己的智能体循环。例如,你可以借鉴LangChain的ZERO_SHOT_REACT_DESCRIPTION提示词模板,但用自己的轻量级循环逻辑来执行,以精确控制token消耗和错误处理流程。永远记住,框架是仆人,不是主人。

6. 范式选择与系统设计:没有银弹,只有权衡

面对ReAct、Plan-and-Solve和各类框架封装,我们该如何选择?答案取决于你的任务特性、资源约束和对系统行为的期望。

6.1 根据任务复杂度与确定性进行选择

我通常使用一个简单的二维矩阵来辅助决策:

  • 高确定性 + 低复杂度:直接使用函数调用或简单的脚本。不需要智能体。
  • 高确定性 + 高复杂度:首选Plan-and-Solve或其变体。任务步骤多但明确,一次性规划后高效执行。例如,月度财务报告自动化生成。
  • 低确定性 + 低复杂度:可以使用简化版的ReAct或框架提供的基础Agent。任务需要一些推理和工具调用,但路径不长。例如,回答需要查一次百科和做一次计算的问题。
  • 低确定性 + 高复杂度:必须使用完整的ReAct范式高级的多智能体框架。任务目标模糊,路径不明确,需要大量探索、试错和工具交互。例如,研究一个新兴技术趋势并撰写综合评估报告。

6.2 关键设计考量点

  • 状态管理:智能体在长时间、多步骤任务中如何保持状态?是将所有历史记录都塞进上下文(成本高),还是定期总结摘要?状态中需要包含哪些关键信息(用户目标、已执行步骤、关键结果、失败经验)?
  • 工具设计与治理:工具并非越多越好。工具接口设计要追求“高内聚、低耦合”,功能单一且明确。更重要的是工具的安全性治理:哪个智能体可以调用删除数据库的工具?调用外部API的权限和频次如何控制?必须建立严格的工具访问控制列表。
  • 幻觉与错误处理:LLM的幻觉在智能体中被放大。它可能规划出一个调用不存在的工具步骤,或者错误解析工具返回的结果。系统必须有冗余校验机制:在执行工具前校验参数合法性;在解析结果后校验结果是否符合预期格式或逻辑。设定最大重试次数和明确的失败降级方案(如转人工)。
  • 评估与监控:如何知道你的智能体工作得好不好?除了最终任务成功率,还需要监控中间指标:平均任务步数、工具调用准确率、规划步骤的合理性评分、异常退出比例等。建立一套评估体系至关重要。

6.3 一个混合范式的实战案例设想

假设我们要构建一个“智能数据分析助手”,它允许用户用自然语言提出复杂的数据查询和可视化需求。

  1. 第一层:Plan-and-Solve(宏观规划)。用户输入“帮我分析上季度销售情况,并找出表现最好的三个产品”。智能体首先调用一个“规划LLM”,生成高层计划:[“从CRM系统获取上季度销售数据”, “按产品聚合销售额和利润”, “计算增长率等指标”, “排序找出Top 3”, “生成柱状图和总结文字”]
  2. 第二层:ReAct(微观执行)。对于第一个步骤“从CRM系统获取数据”,启动一个ReAct子智能体。它需要:思考查询条件(时间范围、字段),调用“数据库查询工具”,观察返回的数据结构,如果数据太大可能思考是否需要采样,最终将获取到的数据整理好。
  3. 第三层:确定性脚本。对于“生成柱状图”这个步骤,由于非常确定(使用Matplotlib或Plotly),可以直接调用一个预设的图表生成函数,传入前面步骤整理好的数据。
  4. 状态总线:所有步骤的结果和上下文,存储在一个共享的“状态总线”中,供后续步骤使用。

这种混合架构结合了不同范式的优点,既保证了复杂任务的可管理性,又在需要灵活性的环节保持了探索能力。

7. 超越单智能体:多智能体协作的初探

当单个智能体难以处理过于庞大或需要多领域专家知识的任务时,多智能体系统(MAS)就成为自然的选择。这不再是让一个“全能大脑”做所有事,而是组建一个“专家团队”,让它们通过协作、辩论甚至竞争来解决问题。

7.1 多智能体的典型模式

  • 主从架构(Manager-Worker):一个“管理者”智能体负责分解任务、分配子任务给不同的“工作者”智能体、并汇总结果。这类似于Plan-and-Solve,但执行者也是智能体,更具灵活性。
  • 辩论架构(Debate):针对一个复杂问题(如“某技术方案的利弊”),让多个持不同视角的智能体(如技术专家、产品经理、安全顾问)分别提出自己的论点和证据,通过多轮辩论,最终达成一个更全面、平衡的结论。
  • 市场竞标架构(Market Auction):将任务分解为多个“合约”,智能体们根据自己的能力和当前“资源”(如计算力)来竞标执行,形成一个自组织的任务分配网络。

7.2 实现多智能体的核心挑战

  • 通信与协调:智能体之间如何高效、无歧义地交换信息?需要定义统一的通信协议和消息格式。过多的通信会导致效率低下和成本激增。
  • 共识形成:当智能体意见不一致时,如何达成共识?是简单的投票,还是引入更复杂的协商机制?
  • 系统稳定性:多智能体系统可能涌现出难以预测的集体行为。如何防止系统陷入死锁、活锁或无效的循环辩论中?
  • 开发与调试复杂度:系统的复杂度呈指数级增长。调试一个由多个LLM驱动的智能体间的交互故障,极具挑战性。

7.3 现有框架与工具

AutoGen(微软)、CrewAI这样的框架正在努力降低多智能体系统的开发门槛。它们提供了定义角色、设定目标、管理对话流程的高级API。例如,在CrewAI中,你可以定义一个“研究员”Agent和一个“写作专家”Agent,并设定流程让研究员先搜集资料,然后交给写作专家撰写报告。

实战建议:除非你的问题场景确实需要多专家视角或分布式任务处理,否则应从单智能体开始。多智能体带来的复杂性和成本远超想象。初期可以尝试用简单的“主从模式”来解决明确的任务分解问题,例如用一个智能体做规划,另一个专门负责执行某项复杂工具调用。在真正投入复杂多智能体系统前,务必进行充分的小规模原型验证。

构建有效的智能体,本质上是一场在灵活性可控性能力成本之间的精妙权衡。经典的ReAct和Plan-and-Solve范式为我们提供了两种基础而强大的思维模型。框架的出现加速了原型验证,但深入理解底层原理才能让你在关键时刻游刃有余。从明确你的任务边界开始,选择匹配的范式,精心设计工具与记忆系统,并始终对LLM的不可预测性保持敬畏,通过严格的校验和监控来构建可靠的系统。智能体不是魔法,它是软件工程、提示词工程和机器学习相结合的严谨实践。这条路没有捷径,但每一步扎实的探索,都让我们离创造出真正有用的AI伙伴更近一步。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/10 7:16:31

终极免费指南:如何完全解锁Wand专业版所有功能

终极免费指南:如何完全解锁Wand专业版所有功能 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer 还在为Wand(原WeMod&#xf…

作者头像 李华
网站建设 2026/8/10 7:11:40

PHP编程思维:从语法到架构设计的进阶之路

1. 为什么说"语言只是工具,思想才是核心"?在编程领域摸爬滚打十几年后,我越来越深刻地体会到:真正区分优秀程序员和普通码农的,从来不是对某种语言语法细节的掌握程度。就像木匠的好坏不取决于他使用锤子的熟…

作者头像 李华
网站建设 2026/8/10 7:07:43

高效提示工程:结构化System Prompt设计降低Token成本

你是不是也遇到过这种情况:给 GPT 写了一大段指令,从背景、要求到格式,事无巨细,结果它要么漏掉关键点,要么输出一堆无关的废话,最后还得自己手动“调教”半天?更让人头疼的是,每次对…

作者头像 李华
网站建设 2026/8/10 7:06:05

红旗HS5无损升级指南:龙须灯、旗标灯与360软包脚垫安装详解

最近在给爱车红旗HS5做内饰升级时,发现原厂氛围灯和脚垫总感觉差了那么点意思。尤其是看到车友群里有人改了龙须灯和旗标灯,效果确实惊艳,自己也心痒痒。经过一番研究和实操,终于完成了龙须灯、旗标灯和360航空软包脚垫的升级&…

作者头像 李华
网站建设 2026/8/10 7:05:15

从氛围编程到精准协作:18个Claude Code技能提升AI编程效率

1. 从“氛围编程”到“精准协作”:我的Claude Code技能觉醒之路用Claude Code写了一年代码,说实话,前大半年我都觉得自己挺高效的。每天打开编辑器,把需求描述扔给AI,看着它哗啦啦地生成代码,修修改改&…

作者头像 李华
网站建设 2026/8/10 7:04:21

SpringBoot+Vue+MyBatis作家管理系统开发实践

1. 项目概述:当代中国获奖作家信息管理系统的技术架构这个基于SpringBootVueMyBatisMySQL的前后端分离项目,是一个专门用于管理当代中国获奖知名作家信息的专业系统。作为一位长期从事全栈开发的工程师,我认为这类系统在文化机构、出版社和文…

作者头像 李华