Components of A Coding Agent
核心观点
这篇文章系统性地解释了coding agent的六大核心组件。对于理解LLM如何在真实编码环境中工作,这篇文章提供了权威的参考框架。
关键洞见: 当前的LLM(如GPT-5.4、Claude Opus 4.6、GLM-5)在基础能力上已经非常接近,真正的差异化往往在于agent harness——即围绕模型的外层软件架构。
LLM vs Reasoning Model vs Agent vs Harness
- LLM: 核心的next-token模型
- Reasoning Model: 经过训练/提示优化,在推理时投入更多计算资源进行中间推理、验证或搜索
- Agent: 模型外层的控制循环,决定下一步检查什么、调用什么工具、如何更新状态、何时停止
- Agent Harness: 管理context、tool use、prompts、state和control flow的软件脚手架
- Coding Harness: 针对软件工程的特定harness,管理代码context、tools、执行和迭代反馈
六大核心组件
1. Live Repo Context (WorkspaceContext)
当用户说"修复测试"或"实现XYZ"时,模型需要知道:
- 是否在Git仓库中
- 当前在哪个分支
- 项目文档在哪里
- 仓库根目录和布局
Agent在开始工作前收集这些"稳定事实"作为workspace summary,而不是每次都从零开始。
2. Prompt Shape And Cache Reuse
Coding sessions是重复性的:
- Agent规则通常不变
- Tool描述通常不变
- Workspace summary也基本不变
智能的runtime不会在每个turn重建所有内容,而是构建稳定的prompt prefix,只在需要时添加变化的部分。
3. Structured Tools, Validation, And Permissions
工具是agent能力的延伸:
- Shell命令执行
- 文件读写编辑
- Git操作
- 搜索和导航
- 测试运行
关键:需要对危险操作进行权限控制和验证。
4. Context Reduction And Output Management
随着对话进行,context会增长。需要:
- 上下文裁剪/压缩
- 历史消息管理
- 输出格式化
5. Transcripts, Memory, And Resumption
会话持久化能力:
- 保存会话transcript
- 蒸馏session memory
- 恢复历史会话
6. Delegation And Bounded Subagents
子代理委托能力,让agent可以调用其他agent完成子任务。
实践示例: Mini Coding Agent
Sebastian Raschka提供了一个极简的开源实现,用纯Python实现,包含约400行代码,展示了所有6个核心组件。
GitHub: https://github.com/rasbt/mini-coding-agent
特性: Workspace snapshot collection, stable prompt + turn state, structured tools, approval handling, transcript/memory persistence, bounded delegation
特性: Workspace snapshot collection, stable prompt + turn state, structured tools, approval handling, transcript/memory persistence, bounded delegation
为什么这很重要
文章指出一个重要观点:
如果把最新的开源LLM(如GLM-5)放入类似的harness中,它很可能在Codex或Claude Code中与GPT-5.4或Claude Opus 4.6性能相当。虽然这只是推测,但说明harness可能是区分不同LLM系统的关键因素。
换句话说:模型是引擎,harness帮助模型发挥最大潜力。这解释了为什么Claude Code或Codex能够比相同模型在普通聊天界面中表现更强。