我单人 ship 了一个 100 城、四语言的旅行应用 —— 1000usdinchina.com。杠杆不是「AI 帮我写了代码」,而是把一个 AI coding agent(Claude Code)当成一个要在四种纪律上工程化的系统:prompt、context、 harness、loop engineering。这是系列的旗舰篇,也是 如果你用 coding agent 开发、最值得读的一篇。

目录
- 四种纪律
- 1. Prompt engineering:说 what,不说 how
- 2. Context engineering:agent 的工作记忆
- 3. Harness engineering:工具、权限、子代理
- 4. Loop engineering:迭代到绿
- Superpowers skills:可复用的专长
- 常见问题
四种纪律
coding agent 不是你向它要片段的聊天机器人。它是一个会读、改、跑、验的自治系统。可靠性来自把 四层工程化:
flowchart TB
P[Prompt engineering
做什么] --> C[Context engineering
agent 知道什么]
C --> H[Harness engineering
agent 能做什么]
H --> L[Loop engineering
如何迭代到完成]
L -->|反馈| C少任何一层,agent 都会不可靠:prompt 含糊就乱走,context 缺失就幻觉,harness 弱就没法验, 没有 loop 就不收敛。
1. Prompt engineering:说 what,不说 how
第一课:指令说 WHAT,不说 HOW。「加一条家庭费用规则」是目标,不是步骤。步骤归 agent。 过度指定 how 会跟 agent 的规划打架;指定不足 what 又让它漂。好 prompt 钉住意图和验收标准, 把实现留给 agent —— 然后验证结果。
一个用代价换来的推论:「好,做 X」不是开始敲代码的许可。对任何非平凡的事,agent 应先规划、 把计划写下来,只在明确的实现动词上才动手。Prompt engineering 既是指令,也是克制。
2. Context engineering:agent 的工作记忆
大部分杠杆在这里。agent 的好坏取决于它 context window 里有什么。四个机制让 context 保持高信噪比:
项目宪法(
CLAUDE.md)。 硬约束放在一个永远加载的文件里:「TypeScript strict,禁any」、 「边缘运行时 —— 禁 Node API」、「未明示不 commit」、「内部文档中文,UI + 代码英文」。这些每一轮 都覆盖默认行为。## 硬约束(违反即 bug) 1. TypeScript strict + 禁 `any` 2. 边缘运行时 —— 禁 fs/path/child_process 3. i18n 货币强耦合(en→USD, ja→JPY...) 4. 未明示绝不 commit持久记忆。 该跨会话存活的事实(决策、坑、半成品任务的状态)写进持久记忆文件,而不是每次重推。
刻意早压。 context 不会在有用阈值自动压,所以我在干净断点(约 60% 满)手动压,保证摘要质量高, 赶在 harness 被迫晚压之前。
子代理隔离。 吵闹的操作 —— 全量测试、几百条静态路由的构建 —— 交给子代理在它自己的 context 里读完整输出,只回
{ok, errors:[...]}。主 context 永远看不到那 268 条路由的构建日志。
flowchart LR
M[主 agent context
高信噪] -->|委派吵闹任务| S[子代理 context]
S -->|读完整输出| Logs[(构建/测试洪流)]
S -->|只回摘要| MContext engineering 决定了 agent 在长会话里是保持锐利,还是淹死在自己的工具输出里。
3. Harness engineering:工具、权限、子代理
harness 是 agent 能做的一切:工具、权限边界、hooks,以及它驱动的部署链路。工程化得好意味着:
- 一条 agent 操作的分段链路。 本地 → dev worker → prod,绿了才进下一段。agent 跑每一段; 卡口(测试、Lighthouse CI)决定晋级。(完整细节见 第 7 篇测试与 DevOps。)
- 权限感知的动作。 有些动作不可逆或对外(commit、push、deploy)。harness 要求明确授权 —— agent 永不自作主张 commit 或上线。
- 子代理当工人。 除了隔离 context,子代理还并行独立工作、后台跑长任务,回报结构化结果。
心智模型:你设计 harness,agent 在其中操作。 好的 harness 让安全的路成为最省事的路。
4. Loop engineering:迭代到完成
agent 在循环里最闪光:做 → 观察 → 纠正 → 重复,直到某条件成立。艺术在于定义退出条件,并让每次 迭代便宜。
这个项目的具体例子是四语言 i18n 翻译循环。把一个不断长大的应用翻成四种语言,不是一发 prompt 的事 —— 它是个循环:
flowchart TD
A[扫描 UI 中未翻译字符串] --> B{找到了吗?}
B -->|有| C[翻进 4 个 locale,货币感知]
C --> D[跑 i18n smoke + lint]
D --> E{绿了?}
E -->|否| C
E -->|是| A
B -->|无| F[完成:所有 locale 同步]每一遍找出未翻字符串、填满四个 locale(尊重货币耦合)、跑 i18n smoke 测试,直到一次扫描返回空。 一个自定步进的 agent 循环,把「翻译整个应用」—— 一个没有单条 prompt 能完成的任务 —— 变成一个 收敛过程。这就是 loop engineering:不是一个大请求,而是一个便宜的步骤 + 一个清晰的退出条件,跑到完成。
Superpowers skills:可复用的专长
贯穿四种纪律的黏合剂是 skills —— 打包、可复用、agent 按需加载的流程。不必每次会话重讲「我们 怎么做 TDD」或「怎么验 ETL」,那份专长住在一个 agent 调用的 skill 里:
- 通用流程 skill:brainstorming(任何功能前)、test-driven-development、 systematic-debugging、subagent-driven-development。
- 项目专属 skill:验 ETL 产物、加新城、加新语种(把货币 + 0-decimal 检查内置)、部署流程。
skill 是 coding agent 积累制度知识的方式。新会话开局就已经懂项目的纪律 —— 因为它们是被编码的, 不是被记住的。
要点
- 把 coding agent 当成在四层上工程化的系统:prompt、context、harness、loop。
- prompt 说 what 和验收标准;how 归 agent。克制很重要。
- context 是真正的杠杆:项目宪法、持久记忆、刻意早压、子代理隔离,让它保持高信噪。
- harness 定义什么安全、什么省事;agent 在其中操作,永不越权上线。
- loop engineering 把无界任务(如翻成四语)变成有清晰退出条件的收敛过程。
- skill 编码可复用专长,让每次会话一开局就聪明。
常见问题
AI coding agent 的 context engineering 是什么? 通过项目宪法、持久记忆、刻意早压、把吵闹输出卸给子代理,来策展 agent context window 里的内容, 让 agent 在长会话里保持准确。
harness engineering 是什么? 设计 agent 在其中操作的工具、权限、hooks 和链路,让安全的路(测过、设卡、授权的部署)同时是省事的路。
loop engineering 是什么? 把工作组织成一个便宜的重复步骤 + 一个清晰退出条件 —— 例如「找到并翻译未翻字符串,直到扫描返回空」 —— 让 agent 收敛到完成。
一个人能用 Claude Code ship 一个真应用吗? 能。这个 100 城、四语言的应用是单人做的,靠的是把 agent 在这四种纪律上工程化,而不是向它要零散片段。