Agentic Engineering 实战:把计划、上下文和验证做成 AI 工作台
- 原文链接:https://mp.weixin.qq.com/s/TTLaGn28owLQSy-cvEgPWw
- 原始素材:Matt Van Horn《Every Agentic Engineering Hack I Know》/ John Kim《How I use Claude Code》/ Kaxil Naik《I Haven’t Written a Line of Code in 4 Months》/ Simon Willison《Context engineering》/ Addy Osmani《Agent Skills》
- 来源:微信公众号 / 架构师 JiaGouX(若飞,编译)
- 发布时间:2026-06-08 23:20
- 获取时间:2026-06-09
核心结论(一句话)
“Agent 面前摆着一张工作台”——AI 工作台 = 计划 / 上下文 / 执行 / 验证 / 治理 五层;个人可以 YOLO,团队必须把”任务卡 + 工作区隔离 + 可验证结果 + 合并规则”这四件事说清楚后再多开 Agent;CLAUDE.md 三段式(What/Domain/Validation)、plan.md 任务协议、Skill = 过程资产、Subagents = 隔离、团队 3 层权限渐进(只读→半自动→受控写入)构成可落地的最小工作台。
分类提炼
- 场景:AI-Native 工程团队 / 工作台分层治理 / 工程师角色升级
- 标签:#主题/AI-Coding #主题/AI-Native #主题/Harness #主题/工作台
- 类型:实战方法论 / 编译长文 / 范式归纳
- 价值层级:⭐⭐⭐(这是 [[every-agentic-engineering-hack-2026-06]](个人 YOLO 版)的”团队工程化版”——把 Matt 的 Hacks 翻译成可治理的工程交付物)
知识节点(8 个独立概念)
- AI-工作台五层:计划 / 上下文 / 执行 / 验证 / 治理;每层有”最小交付物”和”用来解决什么”——可作为团队 AI-Native 改造的总检查清单
- 可控并行:多开 Agent 之前必须先回答 5 问(任务怎么拆 / 工作区怎么隔离 / 结果怎么验 / 冲突怎么收 / 错了怎么退);每开一个 Agent 先写一张”任务卡”
- plan-md 任务协议:8 段核心(目标/不做什么/背景输入/涉及文件/实施步骤/验收标准/验证命令/当前状态)+ 2 段进阶(证据要求/合并条件);Agent 提前收工通常因为”完成条件没写清楚”
- 5层上下文 × 3档载入:5 层(当前窗口/项目规则/任务状态/历史资料/结果)× 3 档(直接放进窗口/放文件让 Agent 读/放外部检索);CLAUDE.md 三段式(What/Domain/Validation),重 Validation
- Skill = 过程资产:Skill 是可执行流程不是最佳实践文档;6+ 段式(触发场景/先读资料/步骤/命令/失败模式/输出证据/gotchas);任何重复超过两次的事情都值得变成 Skill
- Subagents = 隔离原则:能独立探索、独立验证、只返回高密度结果的任务才拆;需要频繁协商/共享状态/强耦合的任务留在主线;多 Agent 麻烦在”结果怎么合并、证据怎么保留、失败怎么回到流程里”
- 团队3层权限渐进:只读 → 半自动 → 受控写入;接入真实系统前先写 5 行威胁模型(能读什么 / 能否发出去 / prompt injection / 误操作可撤回 / 审计可追人)
- PR 模板 = 验证证据前置:代码生成几乎免费后 review 才是瓶颈;Agent 会静默失败(错误输出”看起来很合理”);PR 必带 7 项(目标/范围/取舍/命令/结果/风险/人工多看一眼的位置)
关联图谱
上游(基于 / 来自)
- 原始素材:Matt Van Horn(个人 YOLO 派)/ John Kim(克制工程派)/ Kaxil Naik(4 个月不写代码派)/ Simon Willison(context engineering 命名者)/ Addy Osmani(Agent Skills 综述)
- [[every-agentic-engineering-hack-2026-06]]:本篇的”个人版母本”——Matt Van Horn 的 22 Hacks
- [[claude-code-dynamic-workflows]]:本篇 plan.md 思路与 Dynamic Workflows 是同一精神(plan 是动态可执行的)
- [[从Prompt-Context到Harness-工程的三次进化与终局之战]]:本篇”上下文不是越多越好”是 Harness 思想的具体化
- [[买了一样的AI为什么别家的比你的强]]:本篇”Skill = 过程资产”与 Hiten Shah “Skill 战略”是同一信号的组织内落地版
下游(应用于 / 验证于)
- [[Notion-spec-driven-AI-workflow]]:spec-driven 是 plan.md 的一种更严格形式(spec 进仓库 + verification)
- [[AI-Coding的顿悟时刻]]:”Spec→LDD 流水线 + 未来瓶颈=需求定义+架构设计”——本篇 5 层工作台是同主线的”工程化版本”
- [[AI原生研发落地实践-Spec-Kit和BMAD跑了一遍SDD]]:本篇 plan.md 8 段结构可与 Spec-Kit 的 spec.md 对照
- [[多Agent使用边界与并行判定]]:本篇”可控并行 5 问 + 任务卡”是更具体的可执行版
- [[任务类型到验证模板]]:本篇”PR 模板 + 验证证据前置”是该主线在 Agent 时代的延续
- [[Claude-Code团队5条工作原则-Fiona-Fung分享]]:本篇”团队权限渐进”与 Fiona “Trust but verify + 团队级 harness”是同主线
同级(横向 / 并列 / 镜像)
- [[Claude-Code负责人谈AI原生工程组织]]:组织层视角
- [[YC如何进行AI-Native组织改造-Agent能力要向所有人开放]]:组织层视角
- [[54万行代码的顿悟-Markdown才是新编程方式]]:个人层视角(Markdown 是新编程方式)
- [[Anthropic万字长文三个判断和一个阳谋]]:”验收能力”主线,本篇是工程化落地版
正文要点(8 条)
一、AI 工作台 5 层结构(核心范式)
Agent 面前摆着一张工作台:左边是计划,右边是上下文,后面接着测试、日志、权限和回滚。靠一句神奇提示词不够,它需要在一个被人整理过的现场里工作。
| 层 |
最小交付物 |
用来解决什么 |
| 计划 |
plan.md、验收勾选项 |
防止任务跑偏、提前收工 |
| 上下文 |
CLAUDE.md、任务资料包 |
防止靠聊天记忆硬撑 |
| 执行 |
worktree、Skills、Subagents |
防止并行互相污染 |
| 验证 |
测试、日志、截图、trace、PR 说明 |
防止”看起来做完了” |
| 治理 |
allowlist、hooks、权限表、回滚点 |
防止把个人 YOLO 带进团队 |
工作台搭得越清楚,Agent 干活越有边界。
二、多开 Agent 之前,先把”可控并行”说清楚
团队里多 Agent 三个常见翻车:
- 多个 Agent 改同一个工作目录,文件互相覆盖
- 多个任务共用一段上下文,旧错误和新目标混在一起
- 产出变多了,但 review、测试、合并和回滚跟不上
必须先回答 5 问:
- 任务怎么拆(哪些能独立执行,哪些需要留在主线里)
- 工作区怎么隔离(worktree / 临时分支 / 只读探索)
- 结果怎么验(每个子任务交什么证据)
- 冲突怎么收(谁合并、谁 review、谁决定丢弃)
- 错了怎么退(能不能回滚到任务开始前)
每开一个 Agent,先写一张”任务卡”:
1
2
3
4
5
6
| 任务:修复订单导出超时
工作区:worktree/order-export-timeout
边界:只改导出链路,不动权限模型
输入:issue 链接、报错日志、最近一次慢查询
交付:diff、测试命令、关键日志、剩余风险
合并:主会话 review 后再合入
|
worktree 解决的是物理隔离,验收、评审和合并,还得另外设计。 并行和协作不是一回事。
三、plan.md 8 段核心 + 2 段进阶
Matt 的工作流里最靠前的动作是先生成 plan.md。/ce-plan 不是写通用计划,而是先读代码库找已有模式/约定/历史经验,再写出带验收标准的 plan.md。
8 段核心:
- 目标 —— 这次要解决什么问题
- 不做什么 —— 明确排除哪些范围
- 背景和输入 —— issue / 截图 / 报错 / 用户反馈 / 链接
- 可能涉及的文件 —— 先列线索
- 实施步骤 —— 按可验证的小步拆
- 验收标准 —— 什么结果算完成
- 验证命令 —— 测试 / 构建 / lint / 截图 / 日志检查
- 当前状态 —— 已做、未做、阻塞、下一步
2 段进阶:
- 证据要求:哪些命令要跑 / 要截图还是日志 / 哪些失败可接受、哪些需要停下
- 合并条件:谁 review / PR 带哪些说明 / 哪些风险需人工确认
Agent 做长任务时一个常见问题是提前收工。它修了几个明显问题,跑了一个看起来还行的检查,然后自然进入总结状态。它不一定是在偷懒。很多时候,是我们没有把”完成条件”写清楚。
四、5 层上下文 × 3 档载入
| 层级 |
放什么 |
典型载体 |
| 当前窗口 |
当前目标、约束、最近观察、下一步决策 |
对话上下文 |
| 项目规则 |
架构边界、编码约定、禁止事项、验证方式 |
CLAUDE.md、rules |
| 任务状态 |
计划、已做事项、阻塞、证据 |
plan.md、todo、issue |
| 历史资料 |
会议、旧方案、事故、决策记录 |
Obsidian、Bear、Docs、搜索工具 |
| 结果 |
测试、日志、截图、trace、线上状态 |
CLI、MCP、hooks |
3 档载入:
| 档位 |
怎么给 |
适合什么 |
| 直接放进窗口 |
当前目标、约束、最近错误、关键 diff |
这一轮马上要推理 |
| 放文件让 Agent 读 |
plan.md、CLAUDE.md、运行说明、设计记录 |
任务过程中多次用到 |
| 放外部检索 |
会议全文、历史事故、社区讨论、旧 PR |
只在需要时查 |
CLAUDE.md 三段式(重 Validation):
- What —— 项目做什么、技术栈、关键运行方式
- Domain —— 最容易误解的业务概念、数据边界、目录职责
- Validation —— 改完以后怎么证明(测试命令 / 构建命令 / 截图方式 / 日志位置 / 回归样例)
Agent 往往不缺生成能力,缺的是知道在你们系统里,什么才算真的做完。
五、Skill = 过程资产(不是高级 prompt)
Skill 不是”最佳实践文档”,是可执行流程:
- 文档说”注意测试质量”(读完就忘)
- 流程说”先写失败用例 → 跑一次确认失败 → 写最小实现 → 跑测试 → 输出证据”(推到下一步)
可用 Skill 至少 6+ 段:
- 什么场景触发
- 先读哪些资料
- 按什么步骤做
- 用哪些命令或脚本
- 常见失败模式是什么
- 最后交什么证据
- 失败以后怎么记录 gotchas
hooks 是另一层——“做到某一步时系统自动插手一下”:
- 危险动作前拦(删除/迁移/发布/改生产配置/敏感目录)
- 工具执行后补信号(测试失败时整理关键日志、任务结束前要求输出验证证据)
分工矩阵:
| 机制 |
更适合做什么 |
不适合做什么 |
| Skill |
描述流程、检查清单、输出证据 |
强制阻断危险动作 |
| hook |
拦截命令、补日志、提醒验证 |
承载复杂推理 |
| Subagent |
隔离搜索、审计、评审 |
上下文处理 |
| plugin |
打包团队能力 |
代替权限治理 |
第一版 hooks 可以很小——能拦住一类危险命令,能把一类失败变成 Agent 看得懂的上下文,就已经能减少不少返工。
六、Subagents 的核心是”隔离”,不是”多几个角色”
适合拆出去的(独立可验型):
- 批量检索
- 独立 review
- 安全审计
- 大仓库扫点
- 只读资料整理
- 权限边界更窄的任务
不适合拆(强耦合型):
主会话从 subagent 拿回高密度结果:结论 / 证据 / 风险 / 建议下一步。多 Agent 麻烦的地方,通常不在”谁扮演什么专家”,更多在结果怎么合并、证据怎么保留、失败怎么回到流程里。
七、团队 3 层权限渐进(个人 YOLO vs 团队分层)
Agent 正在从”代码助手”变成”执行层”——读邮件、查日历、搜 Slack、操作网页、拉会议记录、跑内部工具。
| 阶段 |
能力边界 |
备注 |
| 只读 |
读 issue/日志/文档/监控/测试结果/会议记录 |
先不写生产系统,不发消息,不改配置 |
| 半自动 |
生成草稿/命令/PR/变更单/回复建议 |
由人点击确认 |
| 受控写入 |
创建临时分支、更新草稿文档、本地脚本 |
低风险、可回滚、有审计 |
权限表:
| 能力 |
默认策略 |
说明 |
| 读代码、读文档 |
允许 |
注意私有仓库和敏感目录 |
| 跑测试、跑构建 |
允许 |
加上超时和资源限制 |
| 写本地文件 |
条件允许 |
尽量在分支或 worktree 里 |
| 发 PR |
人工确认 |
PR 描述要带验证证据 |
| 访问 Slack / 邮箱 |
先只读 |
防止误发、泄露、prompt injection |
| 改生产配置 |
默认禁止 |
走审批和审计 |
| 使用登录态操作网页 |
高风险 |
只在隔离账号和明确 allowlist 下试 |
接入真实系统前先写 5 行威胁模型:
- 这条链路能读到什么敏感信息
- Agent 能不能把信息发出去
- 是否存在 prompt injection
- 误操作能不能撤回
- 日志和审计能不能追到人和会话
这部分看起来不如”多开 Agent”酷,但团队后面能不能用起来,很多时候就卡在这里。
八、PR 模板 = 验证证据前置
Kaxil Naik:Agent 让他几个月没有手写代码,但工作并没变轻松。少了敲代码,多了方向、判断、review 和调试 Agent 失败。
两个现实问题:
- 代码生成几乎免费以后,review 变成瓶颈。 AI 生成的 PR 越来越多,但每一行 review 成本没消失。
- Agent 会静默失败。 错误输出经常看起来很合理——改错方向、没测到关键逻辑、生成读 diff 之前看不出问题的修复。
PR 模板(必带 7 项):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| ## 目标
这次 PR 解决什么问题。
## 改动范围
改了哪些模块,哪些明确没动。
## 验证证据
- 命令:
- 结果:
- 截图 / 日志:
## 风险
- 未覆盖:
- 需要人工确认:
|
没有这份证据,PR 很容易只是把工作从”写代码”转移到了”猜它有没有做对”。
7 天小试点(可借鉴实验)
| 天 |
动作 |
| 1 |
选任务(中等复杂度 + 风险低 + 复现路径明确) |
| 2 |
写最小 plan.md(目标/不做什么/涉及文件/验收标准/验证命令) |
| 3 |
只补一小段 CLAUDE.md(当前任务用得上的 Domain + Validation) |
| 4 |
Agent 在隔离环境实现(独立分支/worktree + 每步留证据) |
| 5 |
认真做一次人工 review(看 diff / 看测试 / 标静默失败) |
| 6 |
把失败写回 gotchas(能变命令的先变命令,能变 hook 的接 hook) |
| 7 |
看 4 问(重复劳动 / 验证 / review 成本 / 复用)+ 5 指标 |
5 个朴素指标:返工次数 / 验证遗漏 / 上下文污染 / 合并耗时 / 经验沉淀
5 个最小行动(行动笔记)
- 计划文件:复杂任务留一个文件出口,不只停在聊天里
CLAUDE.md:项目是什么、领域边界是什么、怎么证明做完
- 验证 Skill:把团队最容易漏掉的验证流程写成 Skill
- hooks:第一版能挡一类危险命令 + 整理一类失败日志
- Subagents:能独立探索 / 独立验证 / 只返回高密度结果的任务才拆
关键术语索引
- AI 工作台五层:计划 / 上下文 / 执行 / 验证 / 治理(本文核心范式)
- plan.md /
/ce-plan:Matt 工作流中的计划入口
- CLAUDE.md 三段式:What / Domain / Validation
- Skill vs hooks vs Subagent vs plugin:分工矩阵(见 §五)
- 可控并行:多开 Agent 之前的 5 问 + 任务卡
- 团队 3 层权限:只读 / 半自动 / 受控写入
- 威胁模型 5 行:能读什么 / 能否发出去 / prompt injection / 误操作可撤回 / 审计可追人
- Matt Van Horn:本篇核心信源之一,主张个人 YOLO 工作台
- John Kim:Meta Staff Engineer,主张克制工程派
- Kaxil Naik:4 个月不写代码,主张 review 是新瓶颈
- Addy Osmani:Agent Skills 综述作者,主张 Skill = 过程资产
- Simon Willison:context engineering 命名者
- 若飞(架构师 JiaGouX):本文作者,公众号”架构师”主理人
写作引用建议
- 引用本篇时优先用:工作台搭得越清楚,Agent 干活越有边界 / Agent 正在从代码助手变成执行层 / 代码生成几乎免费以后,review 变成瓶颈 / Agent 会静默失败 / 计划留得下来,上下文找得到,验证跑得起来,权限边界说得清,失败经验下次还能用
- 强关联引用:[[every-agentic-engineering-hack-2026-06]](个人版母本)/ [[AI-Coding的顿悟时刻]](”Spec→LDD + 工程师向两端收缩”)/ [[Notion-spec-driven-AI-workflow]](plan.md 的一种更严格形式)/ [[Claude-Code团队5条工作原则-Fiona-Fung分享]](Trust but verify + 团队级 harness)