
1. 项目概述当“更少”成为智能体、推理与编码大模型的“更多”最近在折腾大模型应用落地的朋友估计都听过一个词Agentic。它描绘的是一种能自主感知、规划、决策和执行的智能体形态是让LLM从“聊天机器”走向“实干家”的关键。与此同时社区里关于如何提升模型的推理Reasoning和代码生成Coding能力的讨论也从未停歇。大家似乎都在追求更复杂的架构、更庞大的上下文、更精巧的提示工程。但今天我想聊一个有点反直觉的观点它源自一篇让我反复琢磨的论文标题“Yet Even Less Is Even Better For Agentic, Reasoning, and Coding LLMs”。直译过来是“对于智能体、推理和编码大模型而言更少甚至更好”。这“更少”指的是什么是更少的参数更短的提示词还是更简洁的思维链经过一段时间的实践和拆解我发现这背后隐藏着一条被许多人忽视的高效路径通过极致的简化和聚焦反而能激发出模型更深层、更可靠的能力。这不仅仅是学术观点更是我们在构建实际AI应用特别是涉及复杂任务编排Agentic、逻辑推理Reasoning和代码生成Coding时必须重新审视的设计哲学。如果你正在为智能体的不稳定、推理的跳跃性或者生成代码的冗余而头疼那么这种“少即是多”的思路或许能给你带来新的启发。2. 核心理念拆解为什么“更少”反而“更好”在深入具体技术之前我们必须先理解这个反直觉命题背后的逻辑。它挑战的是“堆料就能解决问题”的朴素工程思维。在AI领域尤其是在应用层我们常常陷入一种误区认为给模型更多的信息超长上下文、更复杂的指令冗长的System Prompt、或者更庞大的工具集就一定能得到更好的结果。但现实往往事与愿违复杂度会引入噪音、模糊焦点并放大模型固有的缺陷。2.1 “更少”的三个核心维度根据我的实践和观察这里的“Less”主要体现在三个相互关联的维度更精炼的上下文Context不是无脑地将所有相关文档都塞进上下文窗口。超长的上下文会导致关键信息被稀释模型注意力分散甚至产生“中间丢失”现象——即模型无法有效处理位于上下文中间部分的信息。对于需要精准引用或逻辑连贯的任务精炼、结构化的少量关键信息远胜于海量杂乱文本。更聚焦的指令与约束Instruction Constraint避免使用模糊、充满可能性的自然语言描述任务。取而代之的是清晰、原子化、可验证的指令。同时通过严格的输出格式约束如JSON Schema、特定的代码结构将模型的创造力引导到正确的轨道上减少其“自由发挥”导致偏离目标的空间。更简约的智能体工作流Agentic Workflow并非智能体数量越多、工具调用链越长就越智能。复杂的多智能体协作容易产生通信开销、状态混乱和错误累积。一个设计精良的、由少数几个职责明确的智能体构成的简约工作流往往比一个庞大而笨重的系统更鲁棒、更高效。2.2 “更好”的具体体现那么践行“更少”的原则后我们能得到哪些“更好”更高的可靠性Reliability简化后的系统变量更少出错的环节也更少。模型需要处理的信息和做的决策更明确其输出结果的可预测性和一致性会显著提升。更强的可控性Controllability开发者对流程和结果的控制力更强。当每个步骤都清晰且受限时更容易进行调试、监控和干预。更低的延迟与成本Latency Cost更短的上下文意味着更快的推理速度和更低的API调用成本。更简洁的工作流意味着更少的循环和工具调用直接提升响应效率和经济效益。更优的核心能力涌现Emergent Ability这可能是最有趣的一点。当模型不被冗余信息干扰被迫在有限的“资源”下解决问题时有时反而会激发出更精妙的推理路径或更优雅的代码解决方案。这类似于“限制产生创造力”。3. 实践路径将“Less is Better”应用于三大场景理解了“为什么”接下来我们看“怎么做”。我将分别从智能体Agentic、推理Reasoning和编码Coding这三个具体场景分享可落地的实践方案。3.1 场景一构建简约而高效的智能体系统智能体系统的复杂度和其稳定性常常成反比。我推崇的是“微智能体”或“函数式智能体”架构。核心思路将复杂的宏观任务分解为一系列原子化的微任务。每个微任务由一个高度专业化、功能单一的智能体或一个函数调用来完成。这些智能体通过一个轻量级的、状态清晰的中枢Orchestrator进行调度。实操要点智能体职责原子化不要设计一个“全能型”智能体。例如与其让一个智能体同时负责“理解用户需求、检索知识、生成答案、检查格式”不如拆分成需求解析器只做一件事将用户输入结构化例如提取实体、意图、关键约束。知识检索器根据结构化的查询从向量数据库或知识库中返回最相关的N个片段N不宜过大3-5个为佳。答案合成器基于解析后的需求和检索到的精准片段生成最终答案。格式校验器确保输出符合预定义的模板或Schema。中枢调度器保持极简中枢的核心是状态管理和流程控制。它不应该包含复杂的业务逻辑。它的决策应基于一套简单的规则if-else或一个极其轻量的策略模型。其核心状态机可能只包含“待处理”、“执行中”、“成功”、“失败”等少数几个状态。工具设计追求精准为智能体配备的工具Tools/Function Calling应像手术刀一样精准。每个工具应有明确、单一的输入输出接口。避免设计那种需要传入一个庞大配置对象、返回一个复杂嵌套结构的“瑞士军刀”式工具。避坑指南在智能体协作中最容易出现的问题是“责任扩散”和“错误传递”。原子化设计能有效隔离故障。当一个智能体失败时中枢可以清晰地知道是哪一环出了问题并采取重试、降级或报错等策略而不会导致整个系统状态混乱。3.2 场景二提升大模型的推理与规划能力推理能力的核心是思维链。但“更少”的原则告诉我们冗长、散漫的思维链有害无益。核心思路用结构化、可验证的中间步骤替代自由文本的“逐步思考”。强迫模型将其推理过程转化为一种接近形式化语言的、机器和人都容易检查的中间表示。实操方案采用规划-执行框架对于复杂问题首先要求模型生成一个执行计划而不是直接开始回答。这个计划必须是结构化的例如一个任务列表、一个决策树的关键节点、或一个伪代码大纲。计划本身应作为后续执行步骤的严格约束。提示词示例“请先为解答以下问题制定一个分步计划。请将计划以JSON数组的形式输出每个步骤是一个对象包含step_id序号、action动作描述和expected_output预期产出字段。问题{用户问题}”推行“写下来再计算”原则当涉及数值计算或逻辑判断时禁止模型在“脑中”完成。必须要求它先将计算步骤或逻辑判断条件明确写出来然后再基于写出的内容给出结论。反面教材“模型直接输出最终答案是42。”正确做法“模型输出首先根据条件A我们得到x10。其次根据公式yx*25代入x10得到y25。最后zy17251742。因此最终答案是42。” 即使对于简单计算这也是一种极好的“思维体操”能暴露模型在逻辑连贯性上的问题。利用外部验证器模型的推理结果尤其是涉及事实或计算的必须有一个独立的验证环节。这个验证器可以是一个简单的规则引擎、一个计算库调用、或者一次快速的知识库检索。这实现了“思考”和“验证”的分离符合“单一职责”原则。3.3 场景三优化代码生成与辅助编程体验代码生成是“Less is Better”原则最能大显身手的领域。流行的“Vibe Coding”或“Coding Plan”概念其本质也是通过更好的规划和约束来提升代码质量。核心思路将代码生成任务从“一次性描述需求并期望得到完整代码”转变为“多轮次、增量式、基于规格说明的协作过程”。核心是先定契约再实现。实操流程需求结构化与接口先行不要一上来就让模型写具体实现。首先要求它根据自然语言需求生成一份技术规格说明或API接口定义如OpenAPI Spec、函数签名与文档字符串。输入“帮我写一个函数处理用户订单计算折扣和总价。”第一步输出期望模型应首先生成类似以下的接口定义def calculate_order_total(items: List[Dict], user_tier: str, coupon_code: Optional[str] None) - Dict: 计算订单总金额。 Args: items: 商品列表每个商品包含 pricefloat和 quantityint。 user_tier: 用户等级可选 regular, vip, svip。 coupon_code: 可选优惠码。 Returns: 包含 subtotal小计 discount折扣额 total总计的字典。 Raises: ValueError: 如果输入参数无效。 pass这一步锁定了函数的输入、输出和行为边界至关重要。基于规格的增量实现在接口定义获得确认后再指导模型分模块或分函数地实现内部逻辑。可以结合单元测试驱动开发TDD的思想要求模型为每个关键分支或复杂逻辑先编写测试用例再编写实现代码。极简的上下文管理在代码生成会话中保持编辑窗口的整洁。只将当前正在实现的函数、相关的类定义以及最重要的错误信息保留在上下文里。避免将整个项目文件都塞进提示词。对于大型项目更有效的做法是使用代码索引工具如基于AST的索引让模型具备“按需查看”相关代码的能力而不是拥有全部代码的“上帝视角”。个人心得在实践“先契约后实现”的模式时我发现在System Prompt中强制要求模型“在输出任何代码前必须先以注释形式陈述你对需求的理解和即将采取的实现方案概要”能极大减少方向性错误。这相当于让模型自己先做一次“思维链”验证并且这个验证过程是可见、可审查的。4. 工具与模式推荐实现简约设计的具体抓手理念需要工具来落地。以下是我在项目中验证过的一些有效模式和工具选型它们都服务于“简化”这一核心目标。4.1 结构化输出与强类型约束这是实现“Less is Better”的第一道也是最重要的防火墙。你必须强制模型以你指定的、机器可解析的格式输出。Pydantic 函数调用如果你使用OpenAI的API将函数调用Function Calling的parameters参数用JSON Schema严格定义其效果就等同于要求模型输出一个符合Pydantic模型的对象。这不仅能获得结构化的数据还能在第一时间进行数据验证。专用输出解析库像instructor、marvin这样的库其核心思想就是利用Pydantic模型作为“提示词的一部分”来约束和引导模型的输出格式。这比在自然语言提示词里说“请输出JSON”要可靠得多。提示词模板化将重复使用的、关键的指令部分如输出格式要求、推理步骤模板抽象成模板。这减少了每次提示的随机性和噪音让模型更快地进入“角色”。4.2 思维过程的外部化与检查点不要让推理过程只存在于模型的黑箱里。Chain-of-Verification (CoVe)这是一种让模型自我验证其答案的框架。基本步骤是1) 模型生成初始回答2) 模型基于初始回答规划几个可能证伪它的问题3) 模型独立地、不带偏见地研究这些问题4) 模型根据研究结果修正初始回答。这个过程将“生成”和“验证”分离虽然增加了步骤但每一步都更简单、更专注整体可靠性更高。检查点模式在长流程任务中设置明确的检查点。例如在智能体完成知识检索后中枢可以先检查检索结果的相关性评分如果低于阈值则直接转向人工处理或重试而不是将低质量信息传递给下一个环节。这防止了错误在系统中蔓延。4.3 针对编码场景的专项优化基于AST的代码理解与生成与其让模型处理纯文本代码不如引导它理解代码的抽象语法树结构。一些先进的代码智能体已经开始尝试接收和输出AST的片段这在处理代码重构、语法转换时更加精确。“Coding Plan”的具象化不要停留在概念层面。可以要求模型将编码计划输出为一个具体的待办列表TODO list甚至是一个简单的甘特图描述。然后你可以让模型或另一个智能体按照这个计划一项一项地生成代码并集成。这模仿了人类开发者的工作方式。利用LSP语言服务器协议信息在IDE插件开发中将LSP提供的代码符号、类型、文档信息作为上下文提供给模型而不是整个文件内容。这提供了极度精准的“局部上下文”能显著提升代码补全和函数内联生成的准确性。5. 常见陷阱与效能瓶颈排查在追求简约的道路上也会遇到一些典型的陷阱。以下是我踩过的一些坑和对应的解决方案。5.1 陷阱一过度简化导致信息不足“更少”不是“残缺”。简化是在去除噪音而不是砍掉必要信息。一个常见的错误是在知识检索环节为了追求速度只取top-1的片段结果这个片段恰好是无关或片面的。排查与解决设置相关性阈值对检索结果设置一个最低分数阈值。如果top-1的分数低于阈值则考虑扩大检索范围如top-3或者直接触发“信息不足需要进一步澄清”的流程。引入摘要或重写对于检索到的多个片段可以增加一个“摘要/合成”智能体它的任务是将多个相关但可能冗余的片段整合成一段连贯、简洁的背景信息再交给答案生成器。这实现了从“多段粗糙信息”到“一段精炼信息”的转换。5.2 陷阱二僵化的结构扼杀了创造性过于死板的输出格式和流程可能会让模型无法处理边界情况或需要创新性解决方案的问题。排查与解决设计“逃生舱”机制在严格的输出Schema中可以预留一个reasoning或note字段允许模型在此字段中自由文本阐述它遇到的困难、所做的假设或提供的备选方案。这给了模型一个表达“不确定性”或“创造性”的出口。分层级的约束对于核心答案如最终数据、决策结论使用强约束如Pydantic模型。对于辅助性内容如解释、推理过程可以使用弱约束如Markdown段落。这样既保证了核心输出的可靠性又保留了灵活性。5.3 陷阱三简约工作流在复杂任务上的局限性对于极其复杂、探索性强的任务一个预先定义好的简约工作流可能无法覆盖所有可能性。排查与解决动态工作流组装中枢调度器可以根据任务类型或初始分析结果从一组预定义的“微工作流”模块中动态组装出一个执行流程。这类似于乐高积木每个积木微工作流本身是简单可靠的但组合方式可以灵活多变。人机协同检查点在关键决策点例如计划确认、重大方案选择设置人工审核或确认环节。将人的判断作为复杂系统中的一环而不是试图用完全的自动化去解决所有问题。这往往是性价比最高的“简化”方案——把最难的部分交给最擅长的人。5.4 性能瓶颈排查清单当你发现系统变慢或效果不佳时可以从以下由简到繁的顺序排查上下文长度检查平均每次API调用的tokens数量。是否塞入了大量不必要的上下文能否通过更精准的检索或摘要来压缩智能体调用链长度一个用户请求最终触发了多少次LLM调用和工具调用能否通过合并步骤、缓存中间结果来缩短链条工具调用开销每个工具调用本身是否有性能瓶颈如网络IO、复杂计算能否优化工具的实现或对工具结果进行缓存提示词复杂度你的System Prompt和Few-Shot Examples是否过于冗长能否用更精炼的语言表达相同的指令移除那些“以防万一”但实际很少用到的示例。模型选型是否在所有环节都需要使用最强大也最昂贵、最慢的模型对于分类、格式化、简单检索等任务是否可以用更小、更快的模型或甚至规则系统来替代回归到那个最初的标题“Yet Even Less Is Even Better”。这并非一句空洞的口号而是一种经过实践检验的、构建稳健高效AI应用的系统性方法论。它要求我们从追求“功能全面”转向追求“核心可靠”从设计“复杂系统”转向设计“简单组件的优雅组合”。下一次当你设计智能体、优化推理链或编写代码提示词时不妨先问自己一个问题“我能不能用更少的东西来完成这件事” 这个思考过程本身往往就是通往更优解的第一步。