Skip to content

第12章:Agent 开发最佳实践

本章从编程思想(ch01~ch09)、Opus 4.6 System Card(ch10~ch11)和源码剖析(source/)三个维度交叉提炼,为 Agent 开发者提供可直接落地的实战指南。


设计原则:从 Claude Code 源码提炼的 7 条铁律

这些原则不是教科书上的理论——每一条都能在 Claude Code 的 16,668 行代码中找到对应实现。

原则一:工具即接口,而非函数

源自:编程思想 ch03 + 源码 tool-system

传统编程中,函数是程序员之间的契约。Agent 编程中,工具是人与 AI 之间的契约

传统函数设计Agent 工具设计
参数类型由编译器检查参数由 JSON Schema 验证
返回值直接使用返回值需要模型"理解"
调用者知道要调什么模型自主决定调什么
错误通过异常传播错误需要可恢复的文本描述

实践要点

  • ✅ 工具的 description 比代码实现更重要——它是模型做决策的唯一依据
  • ✅ 返回值应是人类可读的文本,而非仅机器可解析的结构
  • ❌ 不要设计需要严格调用顺序的工具——模型可能以任意顺序调用

原则二:三层安全不可少

源自:编程思想 ch05 + 源码 permission + Opus 4.6 ch11

Claude Code 的三层安全模型是生产级 Agent 的最低标准:

第一层 Schema 约束 ──→ 不合法的参数根本无法到达执行层
第二层 会话模式约束 ──→ 权限级别控制操作范围
第三层 执行层沙箱 ──→ 即使前两层被绕过,沙箱限制破坏范围

对应 Opus 4.6 发现

  • Prompt 注入可以绕过第二层(模型被骗修改了权限判断)→ 第一层和第三层兜底
  • Reward Hacking 可以绕过第一层(参数合法但意图不合法)→ 需要输出验证

原则三:大输出必须落盘

源自:源码 deep-analysis + 编程思想 ch04

Claude Code 的 persistedOutputPath / persistedOutputSize 设计解决了一个真实痛点:

问题:Agent 执行 `grep -r "TODO" .` → 10万行输出 → 塞满上下文窗口
解法:超过阈值的输出自动落盘为文件,上下文只保留摘要 + 文件路径

实践要点

  • ✅ 设置工具输出的最大长度阈值(如 10KB)
  • ✅ 超出阈值时自动截断 + 提供"查看更多"的方式
  • ✅ 搜索类工具(Grep/Glob)必须有 limitoffset 参数

原则四:操作应可回滚

源自:源码 architecture(Worktree) + 编程思想 ch09

Claude Code 的 Git Worktree 隔离给出了最佳示范:

EnterWorktree → 在隔离分支中操作 → ExitWorktree(keep/remove/discard)

不同场景的回滚策略

场景回滚机制
文件编辑Git diff + 快照恢复
数据库操作事务 + savepoint
API 调用补偿事务(compensation)
部署操作蓝绿/金丝雀发布

原则五:Extended Thinking 是性价比的关键

源自:Opus 4.6 ch10 评测数据

Opus 4.6 的评测数据揭示了一个关键洞察:

Effort LevelTerminal-Bench 分数Token 消耗
Max65.4%基准
High61.1%-23%
Medium55.1%-40%

实践建议

  • 简单任务(文件读写、格式转换)→ 关闭 Extended Thinking 或用 Medium Effort
  • 中等任务(Bug 修复、代码审查)→ High Effort
  • 复杂任务(架构设计、多步推理)→ Max Effort + Adaptive Thinking

原则六:MCP 优于内置工具扩展

源自:源码 mcp-overview + 编程思想 ch06

当你需要给 Agent 添加新能力时,永远优先选择 MCP 扩展而非修改内置工具:

维度内置工具扩展MCP 扩展
改动范围需要修改 Agent 核心代码独立进程,零侵入
部署方式与 Agent 一起部署可独立部署/升级
语言限制必须使用 Agent 的语言栈任何语言都行
故障隔离工具崩溃可能影响 Agent进程级隔离

原则七:评估是持续的,不是一次性的

源自:Opus 4.6 ch11 六层审计体系

Anthropic 对 Opus 4.6 的评估包含了 7 个审计层级。你的 Agent 至少需要:

层级最小实现
自动化测试关键场景的回归测试套件
行为审计记录所有工具调用日志
输出验证不只看"任务完成",验证输出质量
红队测试定期测试 Prompt 注入和边界行为

模式与反模式

✅ 推荐模式

模式一:依赖图驱动的知识加载

python
# 不要一次加载所有内容
# 而是根据依赖图按需加载
deps = manifest['dependency_graph'][target_chapter]
for dep in deps:
    load_chapter(dep)  # 先加载依赖
load_chapter(target_chapter)  # 再加载目标

模式二:key_takeaways 优先

python
# 不要直接读全文
# 先用摘要判断是否需要全文
chapter = fetch(f'/chapters/{id}.json')
takeaways = chapter['key_takeaways']
if is_relevant(takeaways, user_question):
    full_content = chapter['sections']  # 按需展开

模式三:操作确认三阶梯

低风险(读取、搜索)  → 自动执行
中风险(编辑、运行)  → 展示 diff → 单次确认
高风险(删除、部署)  → 展示影响范围 → 二次确认 → 操作日志

❌ 常见反模式

反模式问题正确做法
上帝工具一个工具做所有事每个工具只做一件事(SRP)
盲目重试失败就重试,不分析原因分析错误类型,只对暂时性错误重试
无限上下文把所有信息塞进 prompt用摘要+按需加载控制上下文大小
信任外部输入直接使用网页/文件中的指令将外部数据视为不可信输入
结果只看通过率测试通过就算完成检查测试是否被修改(Reward Hacking)

生产部署 Checklist

基于编程思想 + Opus 4.6 安全评估 + 源码架构分析的综合清单:

安全

  • [ ] 三层安全模型已实现(Schema → 模式 → 沙箱)
  • [ ] Prompt 注入防御已测试(至少覆盖编码/网页/文件三个攻击面)
  • [ ] 工具权限遵循最小权限原则
  • [ ] 敏感操作有确认机制
  • [ ] 操作审计日志完整

性能

  • [ ] 大输出有落盘机制(阈值建议 10KB)
  • [ ] 搜索工具有 limit/offset
  • [ ] Extended Thinking 按任务复杂度分级使用
  • [ ] 上下文压缩策略已实现

可靠性

  • [ ] 关键操作可回滚(Worktree / 事务 / 快照)
  • [ ] 错误重试有指数退避
  • [ ] Token 预算控制已启用
  • [ ] 健康检查和告警已配置

评估

  • [ ] 自动化回归测试覆盖关键场景
  • [ ] Reward Hacking 检测(测试文件修改告警)
  • [ ] 定期红队测试
  • [ ] 输出质量验证(不只看通过率)

延伸阅读

主题推荐章节
工具系统设计细节编程思想 ch04源码剖析 tool-system
安全模型实现编程思想 ch05源码剖析 permission
MCP 协议编程思想 ch06源码剖析 mcp-overview
评估方法论Opus 4.6 安全与对齐
能力边界Opus 4.6 能力评测

基于 MIT 许可发布