编程智能体的六大核心组件详解
来源:Sebastian Raschka 博士
核心洞察
智能体现在之所以这么火,不仅仅靠模型本身变强,更在于我们怎么用它们。
在很多真实的落地场景里,模型外围的配套系统——比如工具调用、上下文管理和记忆功能——发挥的作用一点都不比模型本身小。
这就解释了,为什么像 Claude Code 或 Codex 这样的系统,用起来感觉比你在普通聊天界面里直接跟它们背后的模型对话要强得多。
概念厘清
大语言模型(LLM)
最原始的基础模型,本质上就是一个不断预测"下一个词"的模型。
推理模型(Reasoning Model)
优化过的 LLM,专门为了输出中间推理过程(思维链 Chain of Thought)和增强自我验证能力。
智能体(Agent)
一个包含了"模型 + 工具 + 记忆 + 环境反馈"的循环系统。
Agent Harness
围绕智能体搭建的软件脚手架,负责管理上下文、工具调用、提示词、状态和控制流。
Coding Harness
Agent Harness 的"特化版",专门针对软件工程量身定制,负责管理代码上下文、开发工具、代码执行和迭代反馈。
核心要点: 更好的 LLM 能为推理模型打下更坚实的基础,而优秀的 Harness 则能把推理模型的潜力压榨到极致。
六大核心组件
1. 实时代码仓库上下文(Live Repo Context)
关键问题: 当用户下达命令"把测试代码修一下"时,模型需要知道:
- 是不是在一个 Git 代码库里
- 当前在哪个分支上
- 项目的哪些文档里可能藏着开发规范
做法: 在动手干活之前,编程智能体会先去收集情报,把这些"稳定的事实"打包成一份工作区摘要。
精髓: 面对每一次提示时,它都不是在没有任何上下文的"零基础"状态下盲目启动。
2. 提示词形态与缓存复用(Prompt Shape And Cache Reuse)
核心问题: 如果每一次用户提问,都要把一大坨工作区摘要重新拼凑、让模型重新阅读一遍,那绝对是巨大的算力浪费。
稳定内容:
- 通用的系统指令
- 工具的说明
- 工作区摘要
动态内容:
- 短期记忆
- 近期的对话记录
- 用户最新的需求
策略: 把"稳定的提示词前缀"缓存起来重复利用,主流的大模型 API 都支持 Prompt Cache,可以大幅省钱和提升响应速度。
3. 工具的接入与调用(Tool Access and Use)
流程:
- 模型输出一个结构化的动作
- Harness 对其进行验证
- 需要的话请求人工批准
- 执行该动作
- 把受控的执行结果传回给循环系统
安检问题:
- "这是一个已知的工具吗?"
- "参数合法吗?"
- "这个高危操作需要用户手动批准吗?"
- "你要访问的文件路径,超出当前代码仓库的范围了吗?"
安全边界: 通过卡死文件路径,把模型的操作死死限制在代码仓库的范围内。
4. 给上下文瘦身,防止撑爆(Minimizing Context Bloat)
第一招:裁剪(Clipping) 面对长篇大论的文档片段、海量的工具输出日志,会毫不留情地截断。
第二招:对话记录精简或总结(Transcript reduction/summarization) 把完整的历史记录提炼成一份轻量级的、方便放入提示词的摘要。
核心秘诀:
- 越近的事情,保留的细节越多
- 越久远的事情,压缩得越狠
去重处理: 对早期读取的文件做去重,不能因为智能体在几轮对话前反复查看了某个文件,就让模型一遍遍地在上下文里看到同样的文件内容。
被低估的环节: 我们平时夸赞的所谓"这个模型真聪明",很大程度上其实归功于"这个系统喂给它的上下文质量真高"。
5. 结构化的会话记忆(Structured Session Memory)
两层结构:
| 层级 | 特点 | 用途 |
|---|---|---|
| 工作记忆(Working memory) | 小巧而纯粹,被不断修改和提炼 | 保持任务连贯性,手动维护核心关键点 |
| 完整记录(Full transcript) | 涵盖了所有请求、工具输出和 LLM 回答 | 作为持久档案,支持会话恢复 |
区别:
- 精简版对话是为了重组提示词服务
- 工作记忆是为了保持任务连贯性服务
6. 任务委派与受限子智能体(Delegation With Bounded Subagents)
为什么需要: 把某些脏活累活拆成子任务,分给"小弟(子智能体)"去并行处理,从而大幅加快主线任务的进度。
示例: 主智能体正干着大活,突然需要查个资料:
- 这个变量是在哪个文件里定义的?
- 配置文件里写了啥?
- 这个测试为啥挂了?
紧箍咒设计:
- 只能只读访问文件,绝不允许乱改代码
- 限制它再往下摇人的深度,防止无限递归
- 限制任务范围、上下文大小和执行深度
Claude Code 和 Codex 的实现:
- Claude Code 很早就支持子智能体
- Codex 最近也补上了这个功能
- 子智能体一般会继承主智能体的沙箱环境和审批权限
与 OpenClaw 的区别
| 维度 | Coding Harness | OpenClaw |
|---|---|---|
| 定位 | 终端专用的纯血编程助手 | 本地运行的通用智能体平台 |
| 优化方向 | 趴在代码库里高效干活 | 在多个聊天框、频道和工作区里同时养着一群长期存活的本地智能体 |
| 写代码 | 唯一的追求 | 众多日常打卡工作之一 |
| 共同点 | 都利用工作区提示词、JSONL 会话文件、对话记录压缩、支持子智能体 |
关键洞察
模型 vs Harness
现在的原味基础版大模型(GPT-5.4、Opus 4.6、GLM-5 的基础版),它们的能力其实已经非常接近了。
真正拉开差距的决定性因素,往往就是这个外围 Harness。
大胆猜测:如果把最新、最强的开源模型(如 GLM-5)塞进一个同样优秀的 Harness 里,它的表现很可能跟 Codex 里的 GPT-5.4 或者 Claude Code 里的 Claude Opus 4.6 不相上下。
关联
- harness-engineering/overview — Harness Engineering 概览
- harness-engineering/components-coding-agent — 编程智能体的核心组件(简述版)
- claude-code/overview — Claude Code
- harness-engineering/managed-agents-architecture — Managed Agents 架构