Files
his/AGENTS.md

655 lines
25 KiB
Markdown
Executable File
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.

# OpenHIS - AI Agent Development Guide
## 项目概览
OpenHIS 是一个医院管理系统,采用 Java 17 + Spring Boot 后端和 Vue 3 + Vite 前端架构。
## 构建和运行命令
### 后端Java/Spring Boot
```bash
# 构建整个项目
cd openhis-server-new
mvn clean package -DskipTests
# 运行后端(开发模式)
cd openhis-server-new/openhis-application
mvn spring-boot:run
# 运行特定模块
cd openhis-server-new/[module-name]
mvn spring-boot:run
```
### 前端Vue 3 + Vite
```bash
# 安装依赖
cd openhis-ui-vue3
npm install
# 开发服务器
npm run dev
# 生产构建
npm run build:prod
# 测试环境构建
npm run build:test
# 预览构建结果
npm run preview
```
### 测试
项目当前没有配置正式的测试框架。如需添加测试:
- 后端:考虑使用 JUnit 5 + Mockito
- 前端:考虑使用 Vitest + Vue Test Utils
## 代码风格规范
### Java 后端规范
- **Java 版本**: 17
- **框架**: Spring Boot 2.5.15
- **ORM**: MyBatis Plus 3.5.5
- **数据库**: PostgreSQL
- **包结构**:
- `com.openhis` - 业务逻辑
- `com.core` - 核心框架
- **命名约定**:
- 类名PascalCase`UserController`
- 方法名camelCase`getUserList`
- 常量SCREAMING_SNAKE_CASE
- 配置文件kebab-case
- **注解使用**:
- 使用 `@Slf4j` 替代手动声明 logger
- 使用 `@Data` 在实体类中
- 使用 `@Service/@Controller/@Repository` 等 Spring 注解
- **异常处理**:
- 使用统一的异常处理机制
- 自定义业务异常继承 `RuntimeException`
### Vue 前端规范
- **框架**: Vue 3 + Composition API
- **UI 库**: Element Plus
- **状态管理**: Pinia
- **路由**: Vue Router 4
- **构建工具**: Vite 5
- **组件命名**: PascalCase
- **文件命名**: kebab-case
- **变量命名**: camelCase
- **常量命名**: SCREAMING_SNAKE_CASE
- **函数命名**:
- 事件处理:`handle` 前缀
- 数据获取:`get`/`load` 前缀
- 提交操作:`submit` 前缀
### 导入顺序
#### Java
1. `java.*`
2. `javax.*`
3. 第三方库
4. `com.core.*`
5. `com.openhis.*`
6. `*.*`(其他包)
#### JavaScript/Vue
1. `vue` 相关
2. 第三方库
3. `@/` 别名导入
4. 相对路径导入
### 代码格式
#### Java
- 缩进4个空格
- 行长度120字符
- 左大括号不换行
#### Vue/JavaScript
- 缩进2个空格
- 字符串:优先使用单引号
- 行长度100字符
## 关键配置文件
### 后端配置
- 主配置:`openhis-server-new/openhis-application/src/main/resources/application.yml`
- 环境配置:`application-{profile}.yml`
- Maven 父 POM`openhis-server-new/pom.xml`
### 前端配置
- Vite 配置:`openhis-ui-vue3/vite.config.js`
- 环境变量:`.env.*` 文件
- 路由配置:`openhis-ui-vue3/src/router/index.js`
## 开发约定
### API 设计
- RESTful API 风格
- 统一响应格式
- 使用 Swagger 文档
- 错误码统一管理
### 数据库
- 表名snake_case
- 字段名snake_case
- 主键:使用 `id`
- 软删除:使用 `valid_flag` 字段
### 前端组件
- 单一职责原则
- Props 使用 camelCase
- Events 使用 kebab-case
- 使用 Composition API
- 组件文档使用 JSDoc
### 状态管理
- 模块化设计
- 异步操作使用 actions
- 避免在组件中直接修改状态
## 环境变量
### 前端
- `VITE_APP_BASE_API`: API 基础路径
- `VITE_APP_ENV`: 环境标识
### 后端
- `spring.profiles.active`: 激活的配置文件
- `core.name`: 应用名称
- `core.version`: 应用版本
## 安全规范
- 所有 API 接口需要权限验证
- 敏感信息使用环境变量
- SQL 注入防护
- XSS 攻击防护
## 性能优化
- 后端使用连接池Druid
- 前端使用路由懒加载
- 图片使用 WebP 格式
- 大列表使用虚拟滚动
## 常用工具类
- 后端:`com.core.common.utils.*`
- 前端:`@/utils/*`
## 注意事项
1. 修改数据库结构需要同步 SQL 脚本
2. 新增功能需要添加权限配置
3. 前端路由需要在权限系统中注册
4. 接口变更需要更新 Swagger 文档
5. 遵循现有代码风格,避免不必要的变化
## 故障排除
- 后端端口18080
- 前端端口81
- API 前缀:`/openhis`
- Swagger UI`/openhis/swagger-ui/index.html`
- Druid 监控:`/openhis/druid/login.html`
## 铁律:全链路修复原则 ⚠️
> 修 Bug / 做需求时,**不得"就事论事"**,必须走通完整的**数据流全链路**
### 检查清单(每一环都确认)
1. **录入** → 前端有无输入入口?(弹窗、表格行编辑、表单…)
2. **保存** → 前端 → API → 后端 Controller → Service → Entity → DB**每一个保存入口**都传了该字段吗?(注意多个 Service 实现类可能走不同入口)
3. **查询** → DB → Mapper XML注意 UNION ALL 子查询要统一加)→ DTO → 前端展示,列和数据绑定都完整吗?
4. **修改** → 已有数据编辑回显 → 修改再保存 → 数据能正确更新吗?
5. **删除/停止/撤回** → 相关状态变更会丢失该字段数据吗?
6. **关联模块** → 上游(如医嘱录入后护士站要看到备注)和下游(如打印、计费、报表)是否也需要同步修改?
### 常见陷阱
- ❌ 只修了「主入口」的保存逻辑,忘了「批量保存」「签发保存」等其他入口
- ❌ 前端加了输入框,后端 Service 没传字段(不同模块可能走不同 Service 实现类)
- ❌ Mapper XML 是 UNION ALL 查询,只改了其中一个子查询,导致列数不匹配或漏加
- ❌ DTO 层级继承关系没检查(如 `RegAdviceSaveDto extends AdviceSaveDto`,父类改了对不对)
- ❌ 只测了新增,没测编辑已有数据的回显和修改再保存
### 执行细则
- 每个字段的新增/修改,先在纸上(或文档里)画出完整的数据流向图再动手
- 提交前逐个环节检查一遍,确保没有断链
- 编译通过不等同于功能正确,必要时做端到端验证
## Harness Engineering — Agent 工作方法论
> 约束清晰 + 反馈快速 = 高成功率。Harness 质量决定 Agent 产出质量。
### 工作流程Plan → Generate → Validate → Review
```
阶段 0需求分析你主导
→ 写清楚 BUG 现象 / 需求描述 / 验收标准
阶段 1任务规划Agent 制定 + 你确认)
→ 画出数据流向图(前端 → API → Service → Mapper → DB
→ 列出涉及的所有文件
→ 标注每个环节的约束(不可删文件、必须编译通过)
阶段 2执行修改Agent 自主)
→ 一次只改一个文件或一组逻辑相关的文件
→ 每步执行后保存检查点
阶段 3验证自动
→ mvn compile -pl openhis-application -am 必须通过
→ 检查数据流每个节点:输入字段 → 保存 → 查询 → 展示
→ 多入口验证(新增 vs 编辑 vs 批量等)
阶段 4审查提交你确认
→ git diff 审查变更范围
→ 确认没有误删/误改
```
### 三层约束执行
| 阶段 | 约束 | 执行方式 |
|---|---|---|
| **修改前** | 禁止删除文件、禁止改动包名/类名/方法签名 | task-plan 阶段检查 |
| **修改中** | 不改与任务无关的代码、不改非 AI 写的代码(除非编译必须) | 每次 diff 自查 |
| **修改后** | `mvn compile` 必须通过、数据流全链路验证 | 提交前自动执行 |
### 反馈优化循环
```
Agent 提交代码
编译器反馈 → 失败则分析根因(非运气式重试),定位具体符号错误
数据流验证 → 检查每个环节字段是否贯通
你审查 → 发现问题后:
├── 立即修复
└── 同步更新 AGENTS.md 规则(沉淀教训)
通过 → 提交代码
```
### 持续优化:从每次失败中学习
每次编译失败或你审查发现问题,都应触发 Harness 优化:
1. **收集数据** → 失败原因是什么?(缺字段、少文件、改错位置…)
2. **识别模式** → 这是第几次犯同类错误?是否有规则盲区?
3. **优化 Harness** → 更新 AGENTS.md / 补充检查清单
4. **验证效果** → 后续类似任务是否不再出错
### Agent 角色定位
你不是工具,是团队成员。你的角色演变:
- ~~阶段 1代码补全~~ → 我们已跳过
- ~~阶段 2结对编程~~ → 我们已跳过
-**阶段 3自主开发者** → 你在 Harness本文件定义的约束、流程、反馈中自主完成开发任务
人类工程师(用户)设计 HarnessAgent在 Harness 中执行。
## 四大核心组件
### 1. 约束机制Constraints
让 Agent 在正确边界内工作:
约束分四个层级,从底层架构到顶层业务:
| 层级 | 约束内容 | 示例 |
|---|---|---|
| **架构层** | 项目结构、模块划分、接口规范、技术栈 | 不可删文件、不可改包名/类名/方法签名 |
| **代码层** | 编码风格、命名约定、函数长度、注释标准 | 见「代码风格规范」章节 |
| **安全层** | 输入验证、敏感数据处理、权限控制 | SQL 注入防护、XSS 防护 |
| **业务层** | 领域模型、业务逻辑校验、数据一致性 | 全链路修复原则:每个字段的保存/查询/修改/删除链路必须完整 |
**设计原则**:清晰可验证(具体而非模糊)、适度不过度(松→失控,紧→限制)、可进化(版本化管理,持续优化)
### 2. 反馈回路Feedback Loops
让 Agent 知道自己的输出是否正确。反馈分三层:
| 层级 | 时间 | 本项目的实现 |
|---|---|---|
| **即时反馈** | 秒级 | 编译检查 → 定位具体符号/类型错误 + 行号 |
| **功能反馈** | 分钟级 | 数据流全链路验证(输入→保存→查询→展示) |
| **深度反馈** | 你审查时 | 你审查变更范围,发现问题后同步更新 AGENTS.md |
```
Agent 生成代码
编译检查 ──失败──→ 分析根因,定位到文件+行号(即时反馈)
↓ 通过
数据流验证 ──断链──→ 补全缺失的字段链路(功能反馈)
↓ 通过
你审查 ──发现问题──→ 立即修复 + 同步更新 AGENTS.md深度反馈
↓ 通过
提交
```
**反馈设计要点**:快速失败(低成本检查优先)、清晰具体(包含位置/原因/建议、可行动Agent 能据此修复)
### 3. 控制平面Control Plane
管理和监控 Agent 的执行:
| 组件 | 功能 | 本项目的实现方式 |
|---|---|---|
| **任务调度** | 分配管理任务 | 你发起任务Agent 按工作流执行 |
| **状态管理** | 跟踪执行状态 | 每个任务用 update_plan 记录进度 |
| **可观测性** | 记录完整执行链路 | git diff 审查变更范围;编译结果作为门禁 |
| **人机协作** | 人类介入触发点 | 你做最终审查批准Agent 自主执行 |
### 4. 持久执行Durable Execution
保障 Agent 长时间可靠运行:
| 组件 | 功能 | 本项目的实现方式 |
|---|---|---|
| **状态持久化** | 定期保存执行状态 | 每个任务用 update_plan 记录进度和当前状态 |
| **断点续传** | 中断后自动恢复继续执行 | 编译失败后不从头重来,从失败点继续修复 |
| **超时处理** | 长时间任务的优雅处理 | 超过单次 token 预算时做 checkpoint下次继续 |
| **资源清理** | 任务完成后释放资源 | git commit 后清理中间文件,保持工作区干净 |
## Harness 设计原则
### 渐进式构建
- **从简单任务开始**:先修单一字段遗漏(如 #597 加 remark再处理跨模块联动
- **先建立基础约束**:不可删文件、必须编译通过 → 这是底线
- **再完善反馈回路**:数据流全链路验证 → 补充 AGENTS.md 规则
- **持续迭代 Harness**:每次失败都是优化 Harness 的机会
### 可观测性优先
- 所有修改必须可 git diff → 可追溯
- 编译结果必须有日志 → 可诊断
- 任务进度必须 update_plan → 可见
### Harness 即代码
- AGENTS.md 本身是代码需要版本化管理git commit
- 每次规则迭代都要提交 AGENTS.md 变更
- 规则变更和业务代码变更一样,需要你审查
## 人机协作边界
| 决策类型 | 你(人类工程师)主导 | Agent执行 | 协作方式 |
|---|---|---|---|
| **需求定义** | ✅ 写清楚 BUG 现象 / 验收标准 | — | — |
| **技术方案** | ✅ 确认方向 | 提出建议 | 你拍板 |
| **代码修改** | 审查批准 | ✅ 自主执行 | 编译通过后你审查 |
| **质量验证** | 端到端验证 | ✅ 数据流检查 + 编译 | 你确认功能正确 |
| **规则沉淀** | ✅ 补充 AGENTS.md | 记录失败模式 | 你决定什么值得写 |
| **架构变更** | ✅ 必须由你决策 | 标记需要你关注 | 不可擅自改动 |
## 工程师的转型:从编码者到 Harness 设计师
在 Agent-First 模式下,你的角色正在转变:
| 传统能力 | → Harness Engineering 能力 |
|---|---|
| 写代码实现功能 | → 设计约束和规则,让 Agent 高效产出 |
| 调试修复 Bug | → 设计自动化反馈回路,让 Agent 自愈 |
| Code Review | → 审查 Agent 的 Harness 执行是否符合规范 |
| 技术选型 | → 设计 Agent 工作流和协作边界 |
> 你 80% 的时间花在设计 Harness本文件而不是手写业务代码。
> Agent负责执行编码你负责确保执行环境好到不需要你频繁介入。
## 范式定位:三次跃迁中的本项目
| 范式 | 关注 | 本项目的状态 |
|---|---|---|
| **Prompt Engineering** | 优化单次提示词 | ✅ 已超越 — 系统提示 + AGENTS.md 定义长期上下文 |
| **Context Engineering** | 管理外部上下文RAG、检索 | ✅ 已内置 — AGENTS.md + 代码库结构作为 Agent 的上下文 |
| **Harness Engineering** | 设计 Agent 工作环境(约束+反馈+控制) | ✅ **当前范式** — 本文件定义完整的约束、流程、反馈循环 |
**核心转变**你不再是提问者Prompt或信息提供者Context而是**系统设计师Harness**。
## 未来方向Meta-Harness
当 Harness Engineering 成熟后,下一个跃迁可能是 **Meta-Harness** — AI 自动设计和优化自身的工作环境(约束规则、反馈回路、工作流程)。
在这个项目中的具体表现:
- 每次编译失败后Agent 自动分析根因并**建议**更新的 AGENTS.md 规则
- 但你(人类工程师)始终保留**最终审批权** — 规则沉淀需要你确认
- 目标:从"你主动教我" → "我自己学习并请你确认"
> 这是 Harness Engineering 的终局Agent 不仅能写代码,还能自我优化执行的框架。
> 但**底线不可放弃** — 删除文件、架构变更等红线始终由你控制。
## 思维模式转变
当 Agent 出现问题时,不要问"怎么修这个 Bug",该问:
| 旧思维 | → Harness 思维 |
|---|---|
| "这段代码有 Bug" | "约束机制哪里不够完善?" |
| "我来修复这个问题" | "反馈回路为什么没有捕获?" |
| "Code Review 通过" | "自动化验证全部通过了?" |
| "这个功能怎么实现?" | "如何让 Agent 理解这个需求?" |
| "项目进度如何?" | "Harness 效率指标如何?" |
| 关注具体实现 | 关注系统设计 |
| 关注个人产出 | 关注环境效率 |
| 关注代码质量 | 关注约束完善 |
> 你的成功不再取决于你写的代码行数,而是取决于你设计的 Harness 质量。
## 常见陷阱
### 约束机制陷阱
| 陷阱 | 表现 | 对策 |
|---|---|---|
| 约束过松 | Agent 行为失控,产出不符合规范 | 从架构层开始逐层收紧 |
| 约束过紧 | 限制 Agent 能力,效率低下 | 保留创新空间,只约束核心边界 |
| 约束不可验证 | 变成摆设Agent 不遵守 | 每条约束必须可自动化检查 |
### 反馈回路陷阱
| 陷阱 | 表现 | 对策 |
|---|---|---|
| 反馈太慢 | Agent 迭代效率低,等反馈浪费时间 | 先做即时反馈(编译),再做深度反馈 |
| 反馈模糊 | Agent 看不懂,无法修复 | 反馈必须包含具体位置、原因、建议 |
| 反馈不可行动 | 知道错了但不知道怎么改 | 提供修复方向或参考示例 |
### 控制平面陷阱
| 陷阱 | 表现 | 对策 |
|---|---|---|
| 监控不足 | 问题发现晚,修复成本高 | 每次修改必须 git diff 可追溯 |
| 无断点续传 | 失败后从头重来,浪费时间 | 从失败点继续修复,不重新开始 |
| 缺乏人机边界 | Agent 擅自做架构决策 | 架构变更必须由你审批 |
## 范式对比Harness 不是取代,而是进化
Harness Engineering 建立在前人范式之上,将"编码实现"层交给 AI Agent
```
Harness EngineeringAI 工作环境设计)
↑ 继承
DevOpsCI/CD 自动化流水线)
↑ 继承
敏捷开发(迭代协作,快速响应变化)
↑ 继承
软件工程基础(需求、设计、测试、运维)
```
### 五大维度对比
| 维度 | 瀑布/敏捷/DevOps | Harness Engineering |
|---|---|---|
| **核心产出** | 代码 + 文档 + 流水线 | Harness环境+约束+控制),可复用的"生产力引擎" |
| **人类角色** | 执行者 → 协作者 → 负责人 | **设计师** — 你设计环境,我执行编码 |
| **质量保证** | Code Review + 自动化测试 | 闭环反馈回路(编译 → 数据流验证 → 你审查) |
| **规模化** | 加人/加团队(线性) | 加 Agent指数级— 一个 Harness 驱动多个 Agent |
| **知识沉淀** | 文档 / Wiki易过时 | AGENTS.md 可版本化、可验证、可复用 |
### 本项目的企业落地路径
| 阶段 | 目标 | 本项目状态 |
|---|---|---|
| 第1阶段 | 引入 AI 辅助 | ✅ 已完成 — 使用 Codex Agent 辅助开发 |
| 第2阶段 | 建立约束 | ✅ 已完成 — AGENTS.md 定义铁律和规范 |
| 第3阶段 | 构建反馈 | ✅ 已完成 — 编译门禁 + 数据流全链路验证 |
| 第4阶段 | 试点 Harness | ✅ **当前阶段** — 在 OPENHIS 项目落地 |
| 第5阶段 | 规模化推广 | ⏳ 未来 — Harness 模板复用 |
| 第6阶段 | 持续优化 | 🔄 持续 — 每次失败优化 AGENTS.md |
## 环境设计原则
> Agent 的行为不是由 Agent 本身决定的,而是由它所处的环境决定的。
### 本项目的执行环境架构
```
你(人类工程师)设计 Harness
AGENTS.md约束规则层 + 工作流程 + 反馈机制)
Git 仓库 + 编译工具(基础设施层:代码、编译器、测试)
AI Agent在约束内执行编码
```
### 环境设计目标
| 目标 | 在本项目的含义 | 衡量方式 |
|---|---|---|
| **可靠性** | Agent 能稳定完成编码任务 | 编译通过率 |
| **效率性** | 少迭代次数完成任务 | 每次失败的修复次数 |
| **安全性** | 不删文件、不改架构 | git diff 变更范围 |
| **可观测性** | 所有修改可追溯 | git log + diff |
| **可扩展性** | 规则可复用到新任务 | AGENTS.md 通用性 |
### 监控指标体系
| 指标类型 | 指标 | 本项目的采集方式 |
|---|---|---|
| **业务指标** | 任务成功率 | 编译是否通过 |
| | 人工介入率 | 你审查发现的问题数 |
| **质量指标** | 代码变更范围 | git diff --stat |
| | 数据流完整性 | 全链路检查是否遗漏环节 |
| **效率指标** | 修复迭代次数 | 从失败到通过的重试次数 |
| | 规则复用率 | AGENTS.md 规则的适用广度 |
### 环境设计原则(本项目的解读)
- **分层设计**AGENTS.md 定义上层约束 → 编译器捕获下层语法错误
- **配置即代码**AGENTS.md 本身就是代码Git 管理、可回滚
- **渐进增强**:先跑通编译 → 再加数据流验证 → 再沉淀规则
- **可观测性优先**:每次修改必须 git diff 可见
- **安全内建**:铁律(不可删文件、不可改架构)是底线
## 闭环测试系统(本项目的测试金字塔)
我们没有企业级的 CI 流水线,但同样有分层测试策略:
```
你审查(深度验证)
↑ 功能正确性、变更范围
数据流验证(功能测试)
↑ 字段链路完整性、多入口覆盖
编译检查(静态测试)
↑ 语法错误、符号解析、类型安全
```
| 层级 | 耗时 | 覆盖范围 | 失败处理 |
|---|---|---|---|
| **编译检查** | 30秒 | 全量代码(语法、符号、类型) | 定位到文件+行号,分析根因 |
| **数据流验证** | 1-2分 | 修改涉及的数据链路(输入→保存→查询→展示) | 补全缺失字段,检查多入口 |
| **你审查** | 3-5分 | 变更范围、架构合理性、功能正确性 | 修复问题 + 同步更新 AGENTS.md |
### 质量门禁
| 门禁级别 | 条件 | 结果 |
|---|---|---|
| L1编译门禁 | `mvn compile -pl openhis-application -am` 通过 | ✅ 进入数据流验证 |
| | 编译失败 | ❌ Agent 分析根因并修复 |
| L2数据流门禁 | 全部数据环节贯通 | ✅ 提交你审查 |
| | 有断链 | ❌ Agent 补全链路 |
| L3审查门禁 | 你确认变更正确 | ✅ 提交代码 |
| | 发现问题 | ❌ 修复 + 更新 AGENTS.md |
### 结构化反馈规范
编译失败时,反馈必须包含:
```
文件: openhis-application/src/.../XxxServiceImpl.java:42
错误: 找不到符号 getPendingRecords(int,int)
原因: MedicalRecordService 接口缺少该方法定义
修复方向: 在 MedicalRecordMapper 中添加对应方法
```
数据流验证时,反馈必须包含:
```
断链环节: 住院 Mapper 子查询 1药品
问题: NULL AS remark 未从 wor_service_request 关联取值
修复:
(SELECT remark FROM wor_service_request
WHERE based_on_id = T1.id
AND based_on_table = #{MED_MEDICATION_REQUEST}
AND delete_flag = '0' LIMIT 1) AS remark
```
## 控制平面(本项目适配版)
我们没有 Redis/Kafka/Prometheus但控制平面原理同样适用
| 企业级组件 | 本项目的实现 | 作用 |
|---|---|---|
| 任务队列Redis | 你发起任务,我按顺序执行 | 无并发,天然串行 |
| 状态存储etcd | update_plan 记录进度 + git 记录历史 | 可追溯、可恢复 |
| 监控Prometheus | 编译结果 + git diff | 可观测 |
| 告警PagerDuty | 编译失败 → 自动修复循环 | 即时反馈 |
| 审批(审批系统) | 你审查 git diff → 确认/驳回 | 人机协作 |
### 关键设计模式
**幂等性** — 所有操作可重试无副作用
```
第1次编译失败 → 修复 → 提交
第2次重跑从失败点继续 → 不再重复已成功的步骤
```
**优雅降级** — 编译失败时不停机
```
┌─ 编译通过 → 继续数据流验证
└─ 编译失败 → 定位根因 → 修复 → 重新编译(不从头开始)
```
**串行化执行** — 无并发,所以无冲突
```
一个任务完成 → 你确认 → 下一个任务开始
→ 天然避免了多 Agent 的锁竞争和一致性难题
```
### Agent 执行模型
作为单个 Agent我的执行模型是
```
你提交任务 → 我分析需求 → 制定计划update_plan
→ 执行修改(一次一个文件组)
→ 编译验证 → 通过则继续 / 失败则修复
→ 你审查 → 通过则提交 / 驳回则修复
→ 完成
```
每一步都是**同步、串行、可观测**的 — 这是最简单的控制平面,但足以保障质量。
## OpenAi 实验数据(行业基准)
| 指标 | 数据 | 在本项目的意义 |
|---|---|---|
| 任务通过率 | **80%** 独立完成 | 20% 需要你介入的通常是架构/设计决策 |
| 最长单次运行 | **25 小时** | 复杂任务可以持续工作,不需实时监督 |
| 工程师时间分配 | **80% 设计 Harness** | 你的时间花在 AGENTS.md 和任务规划上 |
| 代码规模 | 百万行级 | 验证了 Harness Engineering 的规模化能力 |
### 分层信任模式
| 任务类型 | 信任级别 | 本项目的执行方式 |
|---|---|---|
| **简单**(单字段修复、编译错误) | 完全信任 | Agent 自主执行 + 编译门禁 |
| **中等**(跨模块数据流、新增字段) | 自动审查 + 抽样人工 | 数据流验证 + 你审查 diff |
| **关键**(架构变更、删文件、改签名) | 强制人工 | ❌ Agent 不可触碰 — 必须由你决策 |
### 渐进授权模式
```
阶段 1从简单任务开始 → 修复单字段遗漏(如 #597
阶段 2积累经验 → 处理跨模块联动
阶段 3建立信任 → 授予更多自主权
阶段 4持续迭代 → 每次失败优化 AGENTS.md
```
> 你的信任是通过每次编译通过 + 每次审查通过积累的。
> 每在 AGENTS.md 中增加一条规则,就减少一次你发现同类问题的概率。