像Agent一样思考,3个核心理念

AI 时代程序员必备技能

Codex、Claude Code、Cursor、Hermes Agent、OpenClaw等工程化实战专栏 ,讲透 AI 如何接管脏活累活

AI编程和Agent有关的概念和观点多如牛毛,让人难以把握重点。

本文试图用3个简单的理念,总结梳理全部重要概念知识,帮助读者形成体系化的认知。

夸张一些说,希望这3个理念的效果,能够像牛顿三定律驱散自然规律的迷雾那样,驱散你看到的Agent世界的迷雾。

Nature and nature‘s laws lay hid in night;
God said: Let Newton be! 

And all was light.

一、上下文至关重要

第一个理念:上下文至关重要(Context is First)。

如果说学习使用Agent,哪个观念最重要?我会说:给 AI 提供解决问题所需的最少必要上下文。

先说Why? 为什么是最少必要?

首先说必要。因为必要的信息不给它的话,它就会瞎猜。猜的结果很可能不是我们想要的。 如果你只告诉它给我写一个能赚钱的APP,保不准会给你弄出一个啥来。

再说最少。因为给太多了的话,模型可能会降智。由于注意力稀释等原因,上下文塞得越满,塞得越乱,模型就会越笨。

以GLM-5为例,这个模型的标称上下文有200K tokens。 根据实测,当上下文长度在64K(约30%)以内,模型是最聪明的。到了100K(约50%)以上,能感觉到明显的降智。

超过160K(约80%),进入断崖降智区间。

再说How? 如何实现这种最少必要的上下文注入?

 一个好的思路是让AI自己在需要的时候主动地加载它所需要的信息。

这里的两个关键词是:主动加载,在需要的时候加载。

在需要的时候加载有个专业术语叫做懒加载。

和主动加载相反的是被动加载,和懒加载相反的是急加载。

主动加载优于被动加载

  • ● 被动加载: Agent框架把信息塞到大模型的上下文中。
  • ● 主动加载: 大模型自己决定需要获取哪些信息。

早期使用得比较多的RAG架构,是一种典型的被动加载方案。

框架根据用户的提问,通过关键词索引 或者向量索引 去 知识库中找到 大量相关文本信息。

然后 作为 提问的增强上下文,硬塞给大模型。

与之相对应的,则是搜索工具,这是一种主动加载方案。

大模型根据问题内容,视需要情况主动调用搜索工具,构建关键词来查询相关信息。

很显然,随着模型能力越来越强,我们把更多的选择空间交给大模型自己会更好一些,主动加载方式会越来越有优势。

懒加载优于急加载

  • ● 急加载: 在对话刚开始的时候,就将全部相关信息注入到聊天上下文窗口。
  • ● 懒加载: 在对话刚开始的时候只注入索引或概要信息,对话进行中根据需要逐渐将详细信息注入到聊天上下文窗口。

比较典型的急加载的例子是 AGENTS.md 和 MCP中的Schema信息。 它们都会在对话开始前全部纳入上下文窗口。

AGENTS.md通常的建议是不超过200行,以便保持上下文窗口的干净清爽。

如果有非常多的个性化配置想写入AGENTS.md,通常的建议是把这些配置分门别类放在不同的Markdown文档下。 然后在AGENTS.md中索引这些文档,让大模型在有需要的时候阅读它们。(变成懒加载)

再说MCP,对于一些工具特别多的MCP,要慎重加载。

例如,接入一个 GitHub MCP Server,93 个工具定义一次性全部塞入 context,约 55,000 tokens。 还没开始干活,半个 context window 就没了。

比较典型的懒加载的例子是 Skill 和 Subagent方式。

Agent 只看到每个 skill 的名称和描述(约 100 tokens/个),只有判断相关时才加载 skill 正文,只有执行到具体步骤才读取引用文件。 这种渐进式披露让 300 个 skill 的 token 消耗也比 3 个 MCP server 少。

Subagent 则是懒加载的另外一种形态。

当主Agent调用Subagent的时候,实际上相当于调用了一个工具。

主Agent传入给Subagent的Prompt信息相当于工具的输入参数,然后从Subagent获取的结果相当于工具的输出结果。

利用Subagent能够一定程度上缓解MCP急加载的问题,方法是让大型 MCP Server 只挂载在 subagent 上。

SubAgent在任务完成后上下文整体销毁,主 agent 永远保持轻量。

主 Agent(轻量,只做调度)
├── Skill: change-report(按需加载)
├── Subagent: GitHub PR Agent
│   ├── GitHub MCP Server(隔离在子 agent 内)
│   └── Skill: change-report(被 subagent 使用)
└── Subagent: 数据分析 Agent
    └── Python REPL / pandas CLI

八种典型上下文注入方式

除了上面提到的一些加载方式,我们总结一下Agent常用的八种典型上下文注入方式的特性。

  • ● System Prompt注入: 急加载,被动加载
  • ● Human Prompt注入: 懒加载,被动加载
  • ● RAG方式注入: 懒加载,被动加载
  • ● 工具注入(典型如搜索工具): 懒加载,主动加载
  • ● MCP方式注入: 急加载,被动加载
  • ● AGENTS.md/CLAUDE.md等文件注入: 急加载,被动加载
  • ● SKILL方式注入: 懒加载,主动加载
  • ● Subagent方式注入: 懒加载,主动加载

二、Agent喜爱命令行

第二个理念:Agent喜爱命令行(Agent Loves CLI)。

人擅长用 GUI,AI 擅长用 CLI。 这个判断不是偏好,是事实。

为什么 AI 天生适合 CLI?

人类设计 GUI 是为了降低记忆负担——用图标、菜单、按钮来提示功能。 AI 没有记忆负担,它不需要图标,它需要的是结构化的、可组合的、输出明确的接口。

CLI 完美满足Agent的需求。

  1. 指令极简:git log --oneline -10 做且只做一件事
  2. 输出明确:stdout/stderr/exit code,机器可直接解析
  3. 自带文档:--help 随时可查,无需预加载 schema
  4. 天然可组合:命令行管道让 Agent 能链式解决复杂问题

更重要的是:大模型 在训练数据里见过数十亿行的终端操作、Shell 脚本、GitHub 仓库。 它对 git、gh、docker、duckdb 等常用工具命令行形态的 熟悉程度远超任何自定义 MCP 工具。

alt text

MCP 和 CLI 对比

以 github MCP 和 gh CLI为例对比,它们的功能是一样的,但是体验差异巨大。

alt text

CLI 封装成 Skill 的威力

对于一些比较冷门的CLI,或者自己开发的CLI,大模型训练时没看过足够数据,不具有内置知识。

这时候,最佳实践是将其封装为 Skill,把这个CLI的名字和功能告诉Agent,让Agent知道什么时候用它。

例如,以我创建的wxgzh 这个skill为例,它的SKILL.md文档可以如此简单。

---
name:wxgzh
description:微信公众号文章发布工具。使用wxgzhCLI将Markdown文章发布到公众号草稿箱。触发场景:用户要发公众号文章、配置公众号AppID/AppSecret、生成封面图、Markdown转HTML、多账号管理。
---
常用命令参考

#查看帮助
wxgzh--help

#一键发布
wxgzharticle.md--author你的名字--themeblue--account公众号名称1

#配置管理
wxgzhconfig--account公众号名称1--appidxxx--appsecretxxx

可见性就是信任

这条理念里最被低估的一点:CLI 对人和机器一视同仁。

当 Agent 调用 gh pr create --title "Fix auth bug" --body "..." 时,你在终端里能直接看到这条命令,能理解它在做什么,能立刻发现问题。

而 MCP 的 call_tool("create_pr", {...}) 是一个黑盒,出了问题你得去 MCP Server 的日志里挖。

可见性是可信赖系统的基础。放弃 MCP 的黑盒,拥抱 CLI 的透明。

三、Agent需要反馈

第三个理念:Agent需要反馈(Agent Needs Reward)。

要让 Agent 在持续迭代中不跑偏,就需要在系统中给它提供奖励/反馈信号。

为什么 AI 会跑偏?

没有约束的 AI 就像没有测试的代码——它可能"看起来能用",但一旦需求复杂、迭代多轮,就开始漂移。 每次迭代,它都在优化"让用户满意",但用户的满意感往往来自表面顺畅,而非系统正确。

解决方案不是写更多 prompt 去约束它,而是给系统设计客观的奖励信号。 一种不依赖人类实时判断的、机器可验证的正确性评判机制。

三种典型奖励信号

  1. LSP(语言服务器协议)— 语法层奖励

LSP 让编辑器和 AI 编码工具能实时获得"代码是否正确"的反馈:类型错误、未定义变量、语法问题,立即报错,立即惩罚。 AI 写出不符合类型规范的代码?LSP 报红。不修好就无法继续。 这是 AI 编码工具(Claude Code、OpenCode、Copilot 、Cursor等)好用的核心基础设施之一——它们都深度集成了 LSP,用语言服务器的即时反馈来持续纠正 AI 的生成方向。

  1. TDD(测试驱动开发)— 行为层奖励

TDD 的核心循环:先写测试(定义期望行为),再写代码(满足测试)。

Red(写失败的测试)→ Green(写最小实现通过测试)→ Refactor(优化)→ 循环

对 AI Agent 来说,TDD 是一种天然的奖励信号机制:

  • ● 测试用例 = 对期望行为的精确规格说明
  • ● 测试通过 = 客观的"正确"信号,不依赖人类判断
  • ● 测试失败 = 明确的惩罚信号,告诉 AI 哪里错了

实践中,AI 配合 TDD 的效果远好于"自由发挥"。让 AI 先看测试再写代码,它会朝着明确目标迭代,而不是生成一段"看起来对"的代码。

alt text

  1. SDD(规格驱动开发)— 架构层奖励 SDD(Spec-Driven Development)是 TDD 的升级版。

先写规格(Spec),规格既是设计文档,也是验证标准。 以非常流行的SDD工具OpenSpec为例,它定义了设计文档 的4层结构:

Proposal(提案层,描述问题背景、目标和可行性分析)
    ↓
Specs(规格层,定义系统行为、接口和约束的正式规格)
    ↓
Design(设计层,技术方案和架构设计文档)
    ↓
Tasks(任务层,可独立实现和验证的工作单元)

每个 Task 都有配套的验证方式——类似 TDD 中的测试,但粒度更大,覆盖整个功能模块甚至系统行为。

对 AI 来说,SDD 提供了从需求到实现的全链路"奖励信号":

  • ● AI 看着 Specs 写代码,Specs 里的约束就是边界
  • ● 每完成一个 Task,验证步骤告诉它是否走对了方向
  • ● 代码与规格不对齐?惩罚,返工

SDD 解决了 AI 编码中非常棘手的问题:在长周期多轮迭代中保持方向一致性。

"Vibe Coding"之所以会产出大量 AI 代码垃圾,正是因为没有规格约束,AI 每次都在随机漂移。

类比:建筑师有建筑图纸(规格),施工团队按图施工,验收时对照图纸检查。

奖励信号设计原则

好的奖励信号有三个特征:

  1. 客观可验证:不依赖人类主观判断(测试要么通过要么失败,没有"差不多")
  2. 及时反馈:问题发生时立即告知(LSP 实时报错,比代码 review 快得多)
  3. 粒度适当:太细(每行代码都要验证)或太粗(整个项目最终验收)都不好

alt text

三种机制叠加使用,形成从语法到行为到架构的完整约束体系。

总结:三条理念,一个核心

alt text

这三条理念有一个共同核心:不要试图用 prompt 控制一切,而是设计系统让 AI 自我校正。

最好的 Agent 系统不是那个 prompt 写得最精妙的——而是那个能给 AI 大模型 提供清晰上下文、合适工具、客观反馈的系统。

给它信息,给它工具,给它反馈。然后让它工作。

AI 时代程序员必备技能

Codex、Claude Code、Cursor、Hermes Agent、OpenClaw等工程化实战专栏 ,讲透 AI 如何接管脏活累活

内容概要:本文系统整理了《微软面试100题完整版(含解析+备考指南)2026最新求职资源》,涵盖算法编程、逻辑思维、计算机基础、系统设计与工程实践、职场综合五大核心题型,共100道高频原题,均来自微软近十年真实面试题库,剔除过时内容,新增AI工程应用、轻量化系统设计等2026年前沿考点。每道题目配有详细解题思路与考察要点,覆盖数据结构、动态规划、位运算、网络协议、数据库事务、微服务架构、高并发设计等关键技术领域,并包含逻辑推理、工程排查、产品权衡等综合素质题目,全面适配微软海内外各岗位面试需求。此外,文章还提供分层刷题策略、地域差异化备考建议及完整资源获取路径,助力求职者高效通关初面、复面与终面。; 适合人群:准备应聘微软的应届毕业生、1-5年工作经验的技术岗从业者(如软件开发、算法、测试、数据、运维等),以及计划投递微软海外岗位的求职者;尤其适合缺乏系统面试准备、希望提升解题思维与工程表达能力的人群。; 使用场景及目标:①针对微软技术面试中的算法题进行专项突破,掌握最优解法与代码规范;②训练逻辑思维与系统设计能力,应对高阶岗位考察;③准备终面综合问题,提升职场素养与岗位匹配度表达;④根据国内/海外不同考点调整复习重点,实现精准备考。; 阅读建议:此资源以真题为核心,强调解题思路而非死记硬背,建议按“分类刷题—总结模板—模拟手撕—复盘优化”流程学习,重点关注代码边界处理、复杂度优化与中英文表达逻辑,结合自身背景补充项目复盘与系统设计练习,全面提升面试实战能力。
内容概要:本文围绕永磁同步电机(PMSM)的二阶线性自抗扰矢量控制系统展开深入研究,重点实现了基于Simulink的系统建模仿真。研究采用二阶线性自抗扰控制(LADRC)策略,结合扩张状态观测器(ESO)对系统内部动态和外部扰动进行实时估计与前馈补偿,有效提升了电机在负载突变、参数摄动等复杂工况下的转速控制精度、动态响应速度与系统鲁棒性。文中详细构建了电流环与转速环的双闭环矢量控制架构,系统分析了控制器关键参数的设计方法、观测器带宽的整定原则以及整体系统的稳定性条件,并通过大量仿真实验验证了所提出控制方案相较于传统PI控制在抗干扰能力、响应性能和鲁棒性方面的显著优越性。; 适合人群:具备自动控制理论、电机控制原理、现代控制理论等相关专业知识,熟悉Simulink/Matlab仿真环境,且有一定工程实践经验的电气工程、自动化、控制科学与工程等领域的硕士/博士研究生、科研人员及从事高性能电机驱动系统开发的工程技术人员。; 使用场景及目标:①为高等院校和科研机构提供先进电机控制算法的教学案例与科研实验平台,深化对自抗扰控制(ADRC)理论的理解;②为企业在高性能伺服驱动、新能源汽车电驱系统、工业自动化等领域的下一代控制器研发提供可靠的技术参考、仿真验证方案和原型设计基础;③帮助研究人员系统掌握ADRC的核心思想、设计流程及其在高精度运动控制系统中的具体工程实现方法。; 阅读建议:学习者应具备扎实的自动控制与电机学理论基础及Simulink建模能力,建议结合韩京清教授的经典ADRC文献进行原理性学习,深入理解ESO的观测机理与TD的安排机制。在仿真实践中,应动手调试控制器带宽、观测器增益等核心参数,对比分析不同扰动工况(如突加负载、转速指令跳变)下的系统响应曲线,以直观感受控制性能的差异。为进一步深化研究,可将该仿真模型与硬件在环(HIL)测试平台或实际电机实验平台对接,完成从算法设计、仿真验证到物理实现的完整闭环验证流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值