Files
his/AGENTS.md
zhaoyun d3ebbf9a3c refactor(AGENTS.md): restructure under Harness Engineering framework
- Integrate 24-article methodology into top-level framework
- Add four core components (constraints/feedback/control/durable)
- Add standard workflow (Plan-Generate-Validate-Review)
- Add quality gates L1-L4
- Add layered trust model
- Keep all project-specific content (build, style, config)
- Reduce lines from 853 to 400 with better structure
2026-05-28 14:58:22 +08:00

401 lines
14 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 — Harness Engineering 开发指南
> **模型决定上限Harness 决定底线。**
> 本文件是 OpenHIS 项目的 Harness Engineering 落地。基于 24 篇系列文章方法论,为 AI Agent 提供完整的工作环境和约束规则。
---
## 📋 项目信息
OpenHIS 是一个医院管理系统Java 17 + Spring Boot 后端 + Vue 3 + Vite 前端 + PostgreSQL。
### 构建和运行
```bash
# 后端构建
cd /root/.openclaw/workspace/his-repo/openhis-server-new
mvn compile -pl openhis-application -am # 快速编译
mvn clean package -DskipTests # 完整打包
mvn spring-boot:run # 运行(开发模式)
# 前端
cd /root/.openclaw/workspace/his-repo/openhis-ui-vue3
npm install && npm run dev # 启动开发服务器
npm run build:prod # 生产构建
# 语法检查
python3 -c "import py_compile; py_compile.compile('strategy.py', doraise=True)"
```
### 关键路径
```
后端代码: openhis-server-new/openhis-application/src/main/java/com/
后端配置: openhis-server-new/openhis-application/src/main/resources/
Mapper XML: .../mapper/ (regdoctorstation/, doctorstation/, ...)
前端代码: openhis-ui-vue3/src/
日志: user_data/logs/freqtrade.log
```
---
## 🔧 四大核心组件
> 源自系列文章十九控制论、十七持久执行、十八AI-Native CI/CD
### 1. 约束系统Constraints
定义 Agent 行为边界和输出质量。四层金字塔:
| 层级 | 内容 | 本项目实现 | 验证方式 |
|---|---|---|---|
| **L1 架构约束** | 接口合约、包结构、命名规范 | MyBatis Mapper 接口、Service 分层 | 编译检查 |
| **L2 代码质量** | 圈复杂度、类型提示、文档 | Java 17 类型系统、Lombok | 编译 + 人工 |
| **L3 安全约束** | 敏感信息、权限、SQL 注入 | PostgreSQL 参数化查询 | 全链路验证 |
| **L4 业务规则** | 数据一致性、事务边界 | 医嘱数据流完整性 | 人工审查 |
**铁律:**
- 约束越底层越自动(编译检查),越上层越需要人工裁决
- 冲突时优先级:**安全 > 架构 > 质量 > 性能**
- 约束随信任度动态调整
### 2. 反馈系统Feedback Loop
测试 → 失败 → Agent 修复 → 重测。分三层:
| 层级 | 速度 | 覆盖 | 失败处理 |
|---|---|---|---|
| **L1 编译检查** | <30 | 语法类型签名 | `mvn compile` 阻断Agent 自行修复 |
| **L2 数据流验证** | <5 分钟 | 全链路字段Mapper XMLDTO | Agent 修复必要时上报 |
| **L3 人工审查** | 10-30 分钟 | 架构设计业务正确性 | 驳回 / 指导 / 批准 |
**反馈设计铁律:**
- 反馈必须可行动文件:行号:错误类型:修复方向
- 反馈越及时越好
- 失败后先回滚到最近检查点再重试
### 3. 控制平面Control Plane
```
┌──────────────────────────────────────────────┐
│ 战略层(你 — 人类主导) │
│ ├── 设定任务目标、审批关键决策 │
│ └── 异常升级处理 │
├──────────────────────────────────────────────┤
│ 战术层Control Plane 主导) │
│ ├── update_plan + checklist_write 分解步骤 │
│ ├── 依赖协调 + 并行探索 │
│ └── 检查点管理 │
├──────────────────────────────────────────────┤
│ 执行层Agent 自主) │
│ ├── apply_patch / exec_command 修改文件 │
│ ├── mvn compile 验证 │
│ └── 错误恢复git restore → 重试) │
└──────────────────────────────────────────────┘
```
### 4. 持久执行Durable Execution
每个关键步骤保存检查点失败后恢复
```yaml
checkpoint_triggers:
time: "每个关键步骤完成"
event: "编译通过/失败后"
change: "每次 git diff 产生"
recovery:
- "失败检测"
- "定位最新检查点update_plan"
- "分析失败原因"
- "git restore 撤销修改"
- "从失败点继续"
```
幂等性保证
| 模式 | 说明 | 本项目应用 |
|---|---|---|
| **唯一标识** | 已执行则跳过 | 同一 Bug 不重复生成文件 |
| **状态检查** | 目标已达成则跳过 | 编译成功模块不重复编译 |
| **补偿操作** | 失败时回滚 | 编译失败 git restore |
---
## 📋 标准工作流
> 源自系列文章:二十三(实战指南)
### Plan → Generate → Validate → Review
```
你提交任务
├→ 1. Plan
│ ├── checklist_write + update_plan 分解步骤
│ ├── 评估复杂度/风险
│ └── 设定检查点
├→ 2. Generate
│ ├── 加载 AGENTS.md + 相关技能
│ ├── 并行探索spawn_agent × N
│ ├── 全链路检查清单核对
│ └── 增量修改,只动必要文件
├→ 3. Validate
│ ├── L1: mvn compile 编译检查
│ ├── L2: 全链路数据流验证
│ │ ├── 录入 → 保存 → 查询 → 修改 → 删除
│ │ └── 关联模块同步更新
│ └── 生成变更摘要
└→ 4. Review你审查
├── 浏览 diff 确认范围和正确性
├── 检查架构一致性
├── 批准 → git add + commit + push
└── 驳回 → 反馈具体问题 → Agent 修复
```
### 异常流程
```
编译失败 → 分析错误 → git restore → 从检查点重试
持续失败3次 → 上报你,等待指导
```
---
## 🚪 质量门禁Quality Gates
> 源自系列文章十八AI-Native CI/CD、二十三实战指南
| 门禁 | 触发 | 通过条件 | 失败动作 |
|---|---|---|---|
| **L1 编译** | 每次修改 | `mvn compile` 通过 | 立即修复 |
| **L2 全链路** | 提交前 | 数据流完整6 环检查 | Agent 修复 |
| **L3 审查** | 提交 PR | 你批准 | 驳回/指导 |
| **L4 回归** | 合并后 | 无回归 | 紧急修复 |
---
## 🔐 分层信任模型
> 源自系列文章:二十一(边界)
| 等级 | 特征 | 自动化度 | 审查策略 | 本项目 |
|---|---|---|---|---|
| **L1 怀疑** | Agent 错误率高 | <20% | 逐行审查 | |
| **L2 试探** | 稳定但需监督 | 40-60% | 抽样 30% | **当前** |
| **L3 信任** | 可靠性已验证 | 70-85% | 抽样 10% | 🔄 目标 |
| **L4 委托** | 编程伙伴 | 90%+ | 仅异常 | |
---
## 🔗 全链路修复原则
> 修 Bug / 做需求时,不得"就事论事",必须走通完整的数据流全链路。
### 六环检查清单
```
1. 录入 → 前端有无输入入口?(弹窗、行编辑、表单...
2. 保存 → 前端 → API → Controller → Service → Entity → DB
每个保存入口都传了该字段吗?(注意多个 Service 实现类)
3. 查询 → DB → Mapper XMLUNION ALL 子查询统一加)→ DTO → 前端展示
4. 修改 → 编辑回显 → 修改保存 → 正确更新?
5. 删除 → 状态变更会丢失该字段吗?
6. 关联 → 上下游(护士站、计费、打印、报表)需要同步改吗?
```
### 常见陷阱
| 陷阱 | 表现 | 解决 |
|---|---|---|
| 只修主入口 | 批量保存/签发保存漏了 | 检查所有 Service 实现类 |
| 前端加了后端没传 | 不同模块走不同 Service | 逐个入口确认 |
| UNION ALL 只改一半 | 子查询列数不匹配 | 所有子查询统一加 |
| DTO 继承链没检查 | 父类/子类字段不一致 | 检查继承关系 |
| 只测新增没测编辑 | 编辑回显丢失 | 新增和编辑都要测 |
---
## 📐 代码风格规范
### Java 后端
| 项目 | 规范 |
|---|---|
| Java 版本 | 17 |
| 框架 | Spring Boot 2.5.15 |
| ORM | MyBatis Plus 3.5.5 |
| 数据库 | PostgreSQL |
| 包结构 | `com.openhis`业务)、`com.core`核心框架 |
| 命名 | PascalCase方法 camelCase常量 SCREAMING_SNAKE_CASE |
| 注解 | `@Slf4j``@Data``@Service/@Controller/@Repository` |
| 异常 | 统一异常处理业务异常继承 `RuntimeException` |
| 缩进 | 4 空格 120 字符左大括号不换行 |
### Vue 前端
| 项目 | 规范 |
|---|---|
| 框架 | Vue 3 + Composition API |
| UI | Element Plus |
| 状态管理 | Pinia路由 Vue Router 4 |
| 构建 | Vite 5 |
| 命名 | 组件 PascalCase文件 kebab-case变量 camelCase |
| 事件 | `handle` 前缀数据 `get`/`load` 前缀提交 `submit` 前缀 |
| 缩进 | 2 空格单引号 100 字符 |
### 导入顺序
**Java** `java.*` `javax.*` 第三方 `com.core.*` `com.openhis.*`
**Vue** `vue` 相关 第三方 `@/` 别名 相对路径
---
## 🏗️ 开发约定
### API 设计
- RESTful统一响应格式Swagger 文档错误码统一管理
### 数据库
- 表名/字段名 snake_case主键 `id`软删除 `valid_flag`
### 前端组件
- 单一职责Props camelCaseEvents kebab-caseComposition APIJSDoc
### 安全
- 所有 API 需权限验证敏感信息用环境变量SQL 注入/XSS 防护
### 性能
- 后端 Druid 连接池前端路由懒加载WebP 图片虚拟滚动
---
## ⚙️ 关键配置
| 项目 | 路径/ |
|---|---|
| 后端主配置 | `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` |
| 后端端口 | 18080 |
| 前端端口 | 81 |
| API 前缀 | `/openhis` |
| Swagger | `/openhis/swagger-ui/index.html` |
| Druid 监控 | `/openhis/druid/login.html` |
### 常用工具类
- 后端`com.core.common.utils.*`
- 前端`@/utils/*`
---
## 📊 人机协作边界
> 源自系列文章:二十一(边界)
| 场景 | 复杂度 | 风险 | 建议 |
|---|---|---|---|
| 单字段修复/编译错误 | | | Agent 自主你审查 diff |
| 跨模块数据流/新增字段 | | | Agent 主导你审查设计 |
| 架构调整/系统设计 | | | 你主导方案Agent 执行 |
| 安全/权限变更 | | | 你决策Agent 辅助 |
| Mapper XML 修改 | | | Agent 你验证数据流 |
### 本项目的分层支持
| 层级 | 对应任务 | 自动化 | 人工介入 |
|---|---|---|---|
| **简单** | 单字段编译错误 | 95% | 审查 diff 后合并 |
| **中等** | 跨模块数据流 | 80% | 审查设计 + 关键代码 |
| **复杂** | 架构调整 | 50% + 建议 | 你主导方案 |
---
## 📈 成熟度追踪
> 源自系列文章:十六(企业落地)、二十二(全景展望)
| 等级 | 名称 | 特征 | 本项目 |
|---|---|---|---|
| **L1 初始** | 个别尝试无规范 | | 已超越 |
| **L2 管理** | 基础约束 + 反馈 + 控制 | AGENTS.md 定义完整流程 | **当前** |
| **L3 定义** | 标准化可复用 | 规则沉淀 + 模板化 | 🔄 推进中 |
| **L4 量化** | 数据驱动优化 | 需要更多任务数据 | |
| **L5 优化** | AI 自主优化 Harness | Meta-Harness | |
### 落地路径
```
第 1 阶段:基线恢复(已完成)
→ 代码回滚到安全基线,消除 AI 破坏
→ 建立底线约束
第 2 阶段Harness 建设(当前)
→ AGENTS.md 从 0 → 800+ 行
→ 全链路修复 + 四大组件 + 三级门禁
→ 每次失败沉淀规则
第 3 阶段:稳定产出(目标)
→ 你提任务 → Harness 执行 → 编译通过 → 你审查确认
→ 80%+ 任务一次通过编译
→ 人工介入聚焦架构和设计决策
```
---
## 💡 度量体系
| 维度 | 指标 | 目标 |
|---|---|---|
| **效率** | 编译通过率 | >80% 一次通过 |
| **质量** | 缺陷逃逸率 | <5% |
| **可靠性** | Agent 任务成功率 | >80% |
| **满意度** | 你的满意度 | >4/5 |
---
## ⚠️ 常见陷阱
| 陷阱 | 表现 | 解决 |
|---|---|---|
| **过度工程** | Harness 比任务还复杂 | 从最简单开始,按需递增 |
| **约束不足** | Agent 生成低质量代码 | 增加明确约束和检查点 |
| **反馈延迟** | 测试失败后才发现问题 | 尽早验证,快速失败 |
| **跳过验证** | 不编译就直接提交 | L1 门禁强制阻断 |
| **全链路只改一半** | Mapper 子查询漏了 | 六环清单逐个确认 |
---
## 📚 技能索引Codex 内置)
| 技能 | 用途 |
|---|---|
| `$harness-engineering` | 主方法论 — 约束 + 反馈 + 控制 + 持久 |
| `$durable-execution` | 检查点、幂等性、事件溯源 |
| `$closed-loop-testing` | 质量门禁、测试策略、反馈循环 |
| `$constraint-design` | DSL 设计、策略模式、约束编排 |
| `$review-audit` | 审查工作流、审计追踪、合规检查 |
| `$full-chain-fix` | 全链路数据流修复 |
| `$karpathy-guidelines` | 减少 LLM 编码常见错误 |
---
## 🔄 持续优化
```
每次失败 → 分析根因 → 更新 AGENTS.md/规则 → 防止重犯
```
**当前 AGENTS.md 行数:** 853 行(持续增长中)
---
> **总纲:** 你负责"做什么"和"为什么"Agent 负责"怎么做"和"做多好"
> **最后更新:** 基于 Harness Engineering 系列文章(共 24 篇),全面整合方法论