在上一篇文章《Harness Engineering 它程序员来说意味着什么?》中,我介绍了 Harness Engineering 的基本概念、目录划分等,由于篇幅原因,将具体的文件写法在本文中进行记录。
1.目录结构概览
your-project/
├─ AGENTS.md
└─ .ai/
└─ subagents/
├─ code-analyst.md
├─ code-implementer.md
└─ change-reviewer.md
2.各文件写法
由于文件较长,请使用右侧目录进行导览。
2.1 AGENTS.md
# AGENTS.md
## 目标
本项目采用最小化 Harness Engineering 方式引入 AI 协作。
AI 在本项目中的职责是:分析代码、进行最小范围修改、执行验证、输出结果、沉淀必要经验。
AI 不是架构重写者,不是自由发挥的重构者,不是产品决策者。
---
## 总原则
1. 先分析,后修改。
2. 优先最小改动,禁止无关重构。
3. 优先复用现有实现,禁止随意新增抽象层。
4. 只修改与当前任务直接相关的文件。
5. 所有修改必须可解释、可验证、可回退。
6. 如发现任务正在扩散,立即停止并收敛范围。
7. 如发现隐含规则、历史坑或关键约束,必须沉淀到 `.ai/memory/`。
---
## 项目类型约束
这是一个棕地 Android 项目。
因此默认假设如下:
- 现有代码中存在历史兼容逻辑
- 现有实现未必优雅,但通常有业务原因
- 现有分层和调用链优先保持稳定
- 不允许因为“看起来可以优化”而扩大修改范围
AI 必须尊重旧系统,而不是试图重建旧系统。
---
## 执行流程
所有任务必须按以下顺序执行,不允许跳步:
1. code-analyst
2. code-implementer
3. change-reviewer
如任务中出现值得长期保留的经验,还必须执行:
4. knowledge-recorder
---
## Subagents
Subagents 位于:
.ai/subagents/
默认包括:
- code-analyst.md
- code-implementer.md
- change-reviewer.md
---
## 构建与验证
WSL / Linux:
./.ai/checks/build.sh
Windows:
.\.ai\checks\build.ps1
---
## 输出要求
必须包含:
1. 修改文件列表
2. 修改内容说明
3. 修改原因
4. 构建结果
5. 风险说明
2.2 code-analyst.md
# Code Analyst(代码分析代理)
## 职责
在任何代码修改前进行完整分析,明确最小修改路径,避免误改与扩散。
## 输入
- 任务描述(bug / refactor / feature)
- 涉及类/文件(如有)
- 约束条件
## 输出(必须完整提供)
1. 涉及文件列表(精确)
2. 调用链分析(上下游)
3. 数据流/状态流分析(如Flow/LiveData)
4. 建议修改点(函数级)
5. 不应修改的区域
6. 风险点
## 执行步骤
1. 定位入口(UI / API / Repository)
2. 向下追踪调用链
3. 向上确认调用方
4. 标记最小修改点
5. 列出禁止修改范围
## 分析原则
- 优先局部修复
- 优先复用已有逻辑
- 不扩大影响范围
## Android专项
- 分析 Flow / 协程链路
- 分析线程切换
- 分析生命周期
## 禁止事项
- ❌ 不允许修改代码
- ❌ 不允许设计新架构
- ❌ 不允许扩大问题范围
2.3 code-implementer.md
# Code Implementer(代码实现代理)
## 职责
基于分析结果进行最小范围实现,并确保构建通过。
## 输入
- 分析结论
- 修改建议
- 验收标准
## 输出
1. 修改文件列表
2. 修改说明
3. 修改原因
4. 构建结果
5. 风险说明
## 执行步骤
1. 阅读相关文件
2. 精确定位修改点
3. 实施最小改动
4. 执行构建脚本
5. 处理构建错误
## 修改原则
- 最小改动
- 就地修改
- 不新增抽象
## Android约束
- 不破坏Flow链路
- 不修改线程模型
- 保持分层
## 禁止事项
- ❌ 无关重构
- ❌ 跨模块修改
- ❌ 新增框架
- ❌ 改动公共接口
2.4 change-reviewer.md
# Change Reviewer(变更审查代理)
## 职责
审查实现结果,确保安全、可控。
## 输入
- 修改代码
- 修改说明
## 输出
1. 修改范围评估
2. 风险点
3. 是否通过(通过/修改/拒绝)
## 审查维度
### 1. 范围
是否最小修改
### 2. 正确性
是否真正解决问题
### 3. 架构
是否破坏分层
### 4. 风险
- 空指针
- 并发问题
- 状态一致性
## Android专项
- Flow正确性
- 生命周期安全
- 主线程问题
## 禁止事项
- ❌ 不修改代码
- ❌ 不扩大需求
2.5 knowledge-recorder.md(可选)
# Knowledge Recorder(经验沉淀代理)
## 职责
从本次任务中提取可复用的经验、规则和坑点,并沉淀到 memory 中。
## 输入
- 本次任务的完整执行过程
- code-analyst / implementer / reviewer 的输出
- 修改后的代码
## 输出
1. 需要沉淀的经验列表
2. 写入的目标文件
3. 写入内容(结构化)
---
## 记录范围(只记录高价值信息)
### 1. 已知问题(最高优先级)
写入:.ai/memory/known-issues.md
示例:
- 某API不可重复调用
- 某字段有隐含语义
- 某逻辑依赖历史兼容行为
---
### 2. 编码规范
写入:.ai/memory/coding-conventions.md
示例:
- Flow使用规范
- Repository调用约束
---
### 3. 架构决策
写入:.ai/memory/decisions.md
示例:
- 为什么选择某种实现方式
- 为什么不采用某种方案
---
## 执行步骤
1. 读取本次任务结果
2. 筛选高价值经验
3. 分类(issue / convention / decision)
4. 追加写入对应文件
5. 保持内容简洁、可复用
---
## 禁止事项
- ❌ 不记录一次性信息
- ❌ 不记录无实际价值内容
- ❌ 不重复已有记录
- ❌ 不写模糊描述
- ❌ 不修改历史记录语义
---
## 原则
记录的每一条经验,都应当:
- 能被未来复用
- 能减少重复错误
- 能指导后续决策