Files
his/MD/specs/HARNESS_ENGINEERING.md
华佗 f3880eb8df feat: 全面整合agentforge-rs + .codex/harness方法论到AI开发规范
RULES.md 420→460行,新增整合内容:
- Karpathy编码准则(先想再写/简洁优先/精准修改/目标驱动)
- 验证后才宣称完成铁律(Verification Before Completion)
- 系统化调试四阶段(Systematic Debugging)
- 约束设计原则(可验证/无歧义/优先级/渐进增强)
- 持久执行三层状态管理(系统层/执行层/业务层)
- 审查与审计三层体系(自审/配对审查/合规审查)
- BDT方法论(Bug Driven Testing + Playwright 7种检查模式)
- L4/L5分析与AI自主优化机制
- 标准工作循环(Init→Select→Implement→Verify→Cleanup)
- Clean State Checklist(会话结束检查)
- 新增10条过往教训(含上下文焦虑/过早宣告胜利等)

新增 MD/specs/HARNESS_ENGINEERING.md (305行) — 完整方法论参考:
- WalkingLabs 5子系统模型
- 约束/反馈/控制平面/持久执行详解
- Agent协作管线/路由/去重/禅道操作
- BDT测试用例设计/质量标准
- L4量化分析 + L5 AI自优化

7个AI工具配置文件同步更新(470行内嵌)
2026-06-06 10:01:41 +08:00

306 lines
8.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Harness Engineering 完整方法论
> **文档类型**: 技术规范
> **适用范围**: AI Agent 协作开发
> **版本**: v1.0
> **编制日期**: 2026-06-06
> **最后更新**: 2026-06-06
---
## 一、WalkingLabs 5 子系统模型
```
┌─────────────────────────────────────────────┐
│ 指令Instruction— RULES.md / AGENTS.md │
│ 工具Tools— shell / 文件 / 测试 │
│ 环境Environment— 依赖 / 服务 / 版本 │
│ 状态State— PROGRESS.md / 功能清单 │
│ 反馈Feedback— test / lint / build │
└─────────────────────────────────────────────┘
```
### 1.1 指令子系统
| 文件 | 用途 |
|------|------|
| `RULES.md` | 项目铁律、约束、标准工作流 |
| `AGENTS.md` | 子目录铁律引用 |
| `.harness/PROGRESS.md` | 会话进度 + 已验证状态 |
| `.harness/feature_list.json` | 功能状态唯一事实来源 |
| `.harness/init.sh` | 统一启动入口 |
| `.harness/clean-state-checklist.md` | 结束时的清洁检查 |
### 1.2 工具子系统
| 层级 | 工具 | 用途 |
|------|------|------|
| L0 开发 | `mvn compile/test` / `npm run build` | 编译、测试 |
| L1 Agent | `agentforge executor --agent <name>` | Agent 主循环 |
| L2 Pipeline | `agentforge pipeline` | 流水线批量修 Bug |
| L3 集成 | Zentao REST API | 禅道操作 |
| L4 辅助 | `rg` / `git blame` | 代码搜索、历史追溯 |
### 1.3 环境子系统
| 组件 | 配置 |
|------|------|
| Redis | `redis://127.0.0.1:16379` |
| PostgreSQL | `192.168.110.252:15432` |
| Git | `http://192.168.110.253:3000/wangyizhe/his.git` |
### 1.4 状态子系统
| 机制 | 用途 | 持久化 |
|------|------|--------|
| `TraceStore` (SQLite) | Agent 活动追踪 | `/var/lib/agentforge/traces.db` |
| `fix_trajectory` | 修复轨迹 | Redis Hash |
| `dead_letter` | 失败任务持久化 | Redis List |
### 1.5 反馈子系统
| 层级 | 速度 | 命令 | 失败处理 |
|------|------|------|---------|
| L1 编译检查 | <10秒 | `mvn compile` | 立即阻断 |
| L1 单元测试 | <5分钟 | `mvn test` | 失败回退重试 |
| L2 代码质量 | <2分钟 | ESLint / 编译警告 | 警告可忽略错误阻断 |
| L3 质量门禁 | <30秒 | `run_quality_gates()` | 编译验证通过才提交 |
| L4 人工审查 | 5-10分钟 | diff review | 驳回/指导/批准 |
---
## 二、约束系统
### 2.1 四类约束
| 类型 | 内容 | 示例 |
|------|------|------|
| 架构约束 | 接口合约包结构命名规范 | 包结构 `com.healthlink.his.web.{module}` |
| 代码质量 | 圈复杂度风格类型提示 | 每函数50行 |
| 安全约束 | 敏感信息权限输入验证 | 患者信息脱敏 |
| 业务规则 | 领域逻辑数据一致性 | 全链路6环验证 |
### 2.2 约束 DSL
```yaml
constraint:
type: "must" | "must_not" | "should" | "may"
scope: "file" | "class" | "method" | "project"
rule: "具体规则"
verification: "如何验证"
```
### 2.3 约束优先级
```
安全(1) > 架构(2) > 业务(3) > 质量(4) > 性能(5)
```
---
## 三、反馈系统
### 3.1 闭环测试
```
测试失败
→ 分析失败原因(编译/逻辑/边界/依赖)
→ 提取可行动反馈(文件:行号:错误类型:修复方向)
→ Agent 修复
→ 重测
→ 持续失败3次 → 上报人类
```
### 3.2 反馈格式
```
文件路径:行号 错误类型 错误描述 | 修复建议
示例:
src/main/java/com/.../PatientService.java:42 NullPointerException patient name | 添加空值检查
```
### 3.3 失败原因分析
| 类型 | 占比 | 捕获门禁 |
|------|------|---------|
| 架构错误 | 35% | L1 编译 |
| 业务逻辑 | 25% | L3 单元测试 |
| 创造性偏差 | 20% | L3 + L5 |
| Debug残留 | 15% | L2 静态分析 |
| 其他 | 5% | L5 |
### 3.4 测试覆盖率目标
```yaml
unit_test_coverage: 90% # 行覆盖率
mutation_score: 80% # 变异测试通过率
branch_coverage: 85% # 分支覆盖率
```
---
## 四、持久执行
### 4.1 检查点策略
**触发时机**
- 每完成1个关键步骤
- 编译通过/失败后
- 每次代码修改后
**检查点内容**
```yaml
checkpoint:
step_id: "string"
status: "pending | in_progress | completed | failed"
inputs: {}
outputs: {}
error_message: ""
timestamp: "ISO8601"
```
### 4.2 恢复流程
```
失败 → 定位最新检查点 → 分析失败原因 → git restore → 从失败点修复 → 继续执行
```
### 4.3 幂等性模式
| 模式 | 实现 |
|------|------|
| 唯一标识 | 每个操作生成唯一ID已执行则跳过 |
| 状态检查 | 执行前检查目标是否已达成 |
| 补偿操作 | 不可逆操作提供 `git restore` 回滚 |
---
## 五、Agent 协作详解
### 5.1 管线路由
```
fix_done (关羽/赵云)
诸葛亮 (分析路由)
│── 无DB变更 ──→ 张飞 (Playwright测试)
│── 有DB变更 ─→ 荀彧 (DB审查) → 张飞 (测试)
└── 失败 → 回退给修复者重修最多10次
张飞(测试) → 华佗(验收) → 陈琳(归档)
```
### 5.2 去重机制
| 机制 | TTL | 用途 |
|------|-----|------|
| `pipeline_sent:{bug_id}` | 24h | 防重复触发管线 |
| `pipeline_retry:{bug_id}` | | 重试计数器 |
| `codex_lock:{agent}` | 1h | Agent 互斥锁 |
| `fix_active:{agent}:{bug_id}` | 30min | 防重复 fix_start |
### 5.3 禅道操作规则
| 阶段 | 智能体 | 禅道操作 |
|------|--------|---------|
| 分析路由 | 诸葛亮 | 添加备注分析结果 |
| DB审查 | 荀彧 | 添加备注审查结果 |
| 测试 | 张飞 | 添加测试报告 + resolve |
| 验收 | 华佗 | 添加备注 + resolve + assign |
| 归档 | 陈琳 | 添加备注全流程记录 |
---
## 六、审查与审计
### 6.1 三层审查
| 层级 | 内容 | 信任度 |
|------|------|--------|
| L1 自审 | Agent 对照约束逐条检查 | 强制 |
| L2 配对审查 | Agent 变更摘要 + 人类终审 | 按信任度比例 |
| L3 合规审查 | 审计追踪记录所有AI操作 | 强制 |
### 6.2 信任度比例
| 信任等级 | 自审 | 配对审查 | 合规审查 |
|---------|------|---------|---------|
| L1 怀疑 | 强制 | 逐行 | 强制 |
| L2 试探 | 强制 | 抽样30% | 强制 |
| L3 信任 | 强制 | 抽样10% | 按需 |
### 6.3 审计记录格式
```yaml
audit_record:
agent_id: "codex-v4"
task_id: "bug-597"
timestamp: "2026-05-28T14:30:00Z"
actions:
- type: "file_modify"
path: "AdviceManageAppMapper.xml"
diff: "+7 lines, -2 lines"
approvals:
- reviewer: "human"
decision: "approved"
```
---
## 七、BDT 方法论Bug Driven Testing
### 7.1 流程
```
获取Bug → 设计用例 → 基线测试(应失败) → 修复 → 回归测试(应通过) → 扩展测试 → 提交
```
### 7.2 测试用例7种检查模式
| # | 模式 | 适用场景 | Playwright写法 |
|---|------|---------|---------------|
| 1 | 页面加载 | 所有Bug | `expect(page).not.toHaveURL(/.*login.*/)` |
| 2 | 元素可见 | 显示/缺失类 | `expect(locator).toBeVisible()` |
| 3 | 元素可交互 | 按钮/弹窗类 | `await locator.click()` |
| 4 | 数据正确 | 列表/回显类 | `expect(locator).toHaveText()` |
| 5 | 无报错 | 所有Bug | `page.on('pageerror')` |
| 6 | 流程完整 | 交互流程类 | 多步骤操作链 |
| 7 | 状态变更 | 退回/审核类 | 操作前vs操作后状态对比 |
### 7.3 测试用例质量标准
- `@bug{N}` 标签可单独运行
- `@regression` 标签回归套件
- 操作路径来自禅道复现步骤
- 断言覆盖期望结果
- 检查无JS错误
- 有截图记录
- 独立运行不依赖其他测试
---
## 八、L4/L5 分析与优化
### 8.1 L4 量化分析
- TraceStore (SQLite): `/var/lib/agentforge/traces.db`
- 指标Agent成功率平均修复耗时失败模式分布Pipeline吞吐量
### 8.2 L5 AI 自主优化
| 机制 | 触发条件 | 动作 |
|------|---------|------|
| 约束增强 | 成功率<50%(≥3次 | 自动补充专项约束 |
| 智能路由 | 按bug类型匹配历史最优Agent | `best_agent_for(bug_type)` |
| 重试策略 | 失败后换提示词/换Agent | 最多10次 |
| 路由调整 | 某Agent成功率最低 | 减少分配 |
- 评分成功率(60%) + 速度(20%) + 类型匹配(20%)
---
> **文档版本**: v1.0
> **最后更新**: 2026-06-06