上一篇文章讨论了为什么 Agent 协作会越来越累:Spec 膨胀、决策爆炸、监督循环、审核疲劳,都会让个人开发者从“写代码的人”变成“审核 Agent 的项目经理”。
这一篇只解决一个问题:如果我是个人开发者,日常写 UE 引擎功能、Python 插件、工具脚本,应该如何落地一套可靠但不沉重的 Agent 工作流?
我的结论是:
个人开发者不需要完整复制团队级流程,只需要一套“轻量、可延期、可验证”的协作机制。
它的目标不是让 Agent 一次性设计完整系统,而是让 Agent 每次只推进一个可信的小目标。

核心原则
这套流程有五个原则。
1. 最小可行目标
每次只定义一个能独立完成、独立验证的小目标。
不要写:
设计一个完整的通信协议。
改成:
设计一个能支持当前插件和编辑器通信的最小协议,先覆盖请求、响应、错误和心跳。
目标越小,Agent 越不容易发散,人类也越容易判断结果是否可接受。
2. 延迟决策
不是所有问题都要现在决定。
把决策分成三层:
- 核心决策:现在必须定,错了会推倒重来。
- 重要决策:现在给默认值,未来可以替换。
- 延后决策:记录下来,不阻塞当前任务。
延迟决策不是逃避,而是降低当前认知负担。只要延后的问题不会破坏接口兼容性、安全性、数据一致性和可测试性,就可以推迟。
3. 可验证优先
Agent 写的内容必须能被本地命令验证。
例如:
pnpm buildpytestmypyruff- Unreal Build Tool
- UE Automation Spec
- 最小 smoke test
不要把“看起来合理”当作完成。Agent 的总结只能作为说明,不能替代验证。
4. 结构化输出
Agent 的输出应该便于人类快速审核,而不是一大段思考日志。
推荐固定输出:
{
"goal": "",
"non_goals": [],
"core_decisions": [],
"deferred_decisions": [],
"files_to_touch": [],
"acceptance_gates": [],
"smoke_tests": [],
"risks": [],
"human_review_required": []
}
人类重点只看三块:
core_decisionsacceptance_gateshuman_review_required
其他部分交给 Agent 和自动化验证。
5. 迭代与回顾
每次任务结束,只沉淀三件事:
- 做成了什么。
- 哪些决策被确认。
- 哪些决策被延期。
不要把完整聊天记录塞回 spec。聊天记录是过程,决策记录才是资产。
日常开发流程
我建议个人开发者按 5 步走。
1. 定义目标
先写一句话:今天的最小目标是什么?
例如:
为 UE 插件增加一个最小可用的材质扫描命令,能遍历选中资产并输出材质参数列表。
或者:
为 Python 插件增加一个 CLI 子命令,能读取配置文件并打印当前项目摘要。
这句话的价值很高。它是防止 Agent 发散的锚点。
2. 规划接口
让 Agent 先规划,不要直接写代码。
要求它输出:
- 输入是什么。
- 输出是什么。
- 预计修改哪些文件。
- 必须现在决定的问题。
- 可以延期的问题。
- 不做什么。
这一步只审核方向,不审核代码。
3. 让 Agent 实现
确认方向后,再让 Codex 或 Claude Code 实现。
关键约束:
- 只改指定范围内的文件。
- 不做无关重构。
- 不扩大目标。
- 如果发现新的核心决策,停止并报告。
- 实现后必须给出验证命令和结果。
这能避免 Agent 一边写代码一边继续扩展设计。
4. 本地验证
机器负责跑:
- build
- lint
- type check
- smoke test
人类只看:
- 哪些命令通过了。
- 哪些命令没跑,为什么。
- 哪些风险需要我判断。
- 最核心路径是否符合预期。
5. 复盘与沉淀
完成后更新:
spec/decisions.md
notes/YYYY-MM-DD.md
只记录稳定结论,不记录全部对话。
Smoke Test 应该怎么控制范围?
Smoke test 要写,但不能把 smoke test 变成新工程。
Smoke test 的目标不是证明系统完全正确,而是证明最核心路径没有坏。
UE 引擎功能开发
对于 UE 引擎功能,smoke test 可以很轻:
- 编译:Unreal Build Tool 通过。
- 运行:PIE / Standalone 能启动。
- 自动化测试:一个最小 Automation Spec 覆盖核心逻辑。
- 性能观察:必要时用
Stat或 Unreal Insights 看明显回退。
典型任务拆解:
- 创建模块或插件骨架。
- 定义插件类与属性。
- 实现运行时或编辑器逻辑。
- 生成基础面板或命令入口。
- 写一个最小 Automation Spec。
- 本地编译和启动验证。
不要一开始就要求 Agent 设计完整测试矩阵。先覆盖一条核心路径。
Python 插件开发
对于 Python 插件,smoke test 可以是:
python -m your_plugin --help能运行。pytest通过核心单测。mypy或ruff通过关键目录。pip install -e .或 build 成功。
典型任务拆解:
- 定义插件结构与入口。
- 实现核心函数。
- 增加 CLI 或 UI。
- 加配置与日志。
- 写核心单测。
- 更新文档与示例。
重点是:smoke test 只覆盖冒烟路径,不要试图替代完整测试体系。
在 Codex 中如何落地?
可以三种方式组合使用。
方式一:固定输出格式的 Agent
适合一次性任务或临时实验。
直接要求 Codex 输出:
{
"goal": "",
"non_goals": [],
"core_decisions": [],
"deferred_decisions": [],
"files_to_touch": [],
"acceptance_gates": [],
"smoke_tests": [],
"risks": [],
"human_review_required": []
}
优点是轻量,缺点是容易随任务漂移。
方式二:Skill / Custom Tool
适合反复做的任务,例如:
- 生成 UE 模块骨架。
- 生成
.uplugin/Build.cs。 - 生成属性面板 Details 代码。
- 生成 Python 插件模板。
- 生成
pyproject.toml。 - 生成 pytest smoke test。
- 生成 CLI / Typer / Click 代码。
把稳定流程做成 skill,可以减少每次重复解释。
方式三:固定文档结构
适合长期项目。
推荐结构:
my_project/
spec/
overview.md
api.md
decisions.md
src/
tests/
docs/
notes/
文件职责:
spec/overview.md:目标与范围。spec/api.md:接口定义。spec/decisions.md:核心决策、延后决策、替代方案对比。docs/:使用说明与设计细节。notes/:快速记录,定期整理。
这三个方式不是互斥的。个人项目里最推荐:
- 小任务:固定输出格式。
- 重复任务:skill。
- 长期项目:固定文档结构。
一个适合 Codex 的提示词模板
规划阶段:
你是一个谨慎的高级工程师。现在不要写代码,先做任务收敛。
任务:
[描述任务]
请输出固定结构:
1. Goal:一句话目标
2. Non-goals:明确不做什么
3. Core decisions:必须现在决定的事项,最多 3 个
4. Deferred decisions:可以延期的事项
5. Files likely touched:预计修改文件
6. Acceptance gates:验收门禁
7. Smoke tests:最小冒烟验证
8. Human review required:需要我确认的问题,最多 3 个
规则:
- 不要展开所有可能性。
- 不要一次性设计未来完整系统。
- 如果有不确定项,优先给默认方案,并说明为何可替换。
- 核心决策没有确认前,不要写代码。
实现阶段:
按照已确认的 Goal / Core decisions / Acceptance gates 实现。
要求:
- 只改 Files likely touched 中相关文件。
- 不做 Non-goals。
- 如果发现新的核心决策,停止并报告。
- 实现后运行 Smoke tests。
- 输出修改文件、验证结果、剩余风险。
Review 阶段:
你是独立 reviewer,不是实现者。不要改代码。
请审查当前 diff 是否满足以下验收标准:
[粘贴 acceptance gates]
输出:
- Verdict: PASS / FAIL
- Missing requirements
- Scope creep
- Evidence
- Required fixes
只根据 spec 判断,不评价代码美丑。
工程质量审查:
你是高级工程师 reviewer。不要改代码。
请审查当前 diff 的工程质量:
- 是否符合项目架构
- 是否最小变更
- 是否有过度抽象
- 是否有隐藏边界 case
- 是否测试有效
- 是否影响性能 / 构建 / 维护性
输出:
- Critical issues
- Important issues
- Minor issues
- Verdict: APPROVED / REQUEST_CHANGES
快速清单
开始前问自己:
- 今天的最小目标是什么?
- 哪些决策必须现在确定?
- 哪些可以延期?
- Agent 能不能用本地命令验证结果?
- 我只需要审核哪 1 到 3 个关键点?
结束后检查:
- 目标完成了吗?
- 验证跑过了吗?
- 哪些决策被确认?
- 哪些决策被延期?
- 下一步最小目标是什么?
最后:不要追求一次性正确
个人开发者使用 Agent,最容易犯的错误是:希望一次 prompt 产出完整设计、完整实现、完整测试和完整 review。
这会让任务变重,也会让人更不信任 Agent。
更实际的策略是:
- 让 Agent 先收敛问题,而不是展开问题。
- 让决策分层,而不是所有问题都现在决定。
- 让测试覆盖核心路径,而不是为每个分叉都建体系。
- 让 review 输出风险等级,而不是追求完美结论。
- 让文档记录已确认决策,而不是保存全部聊天过程。
你不需要一次做出所有正确决策。你只需要保证:
- 正在做的是下一步正确的小目标。
- 关键决策没有被糊弄过去。
- 延后决策被记录,并且不会破坏当前接口。
- 产出能被本地验证。
这才是个人开发者使用 Agent 的核心力量。
参考资料
- OpenAI Developers: Best practices – Codex
- Anthropic: Building Effective AI Agents
- Anthropic Engineering: Writing effective tools for AI agents
- Claude Blog: Introduction to agentic coding