harness.mdc 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334
  1. ---
  2. description:
  3. alwaysApply: true
  4. enabled: true
  5. updatedAt: 2026-04-05T01:04:17.516Z
  6. provider:
  7. ---
  8. # 长时运行代理规则
  9. ## 核心原则
  10. 1. **三 Agent 架构**:
  11. - **Initializer Agent**:仅首次运行,初始化项目
  12. - **Coding Agent**:开发功能
  13. - **Reviewer Agent**:质量检查(对照功能表 + 浏览器验证)
  14. 2. **外部持久化**:所有进度必须写入文件,不依赖 AI 记忆
  15. 3. **增量开发**:每次会话只完成 1 个功能
  16. 4. **状态流转**:功能状态按流程逐步推进
  17. 5. **自动执行**:AI 必须自动执行所有命令,禁止让用户手动执行
  18. 6. **失败处理**:验证失败 → 修复 → 重新执行该环节
  19. 7. **完整实现**:**功能完成 = 后端 API + 前端页面**,缺一不可
  20. 8. **质量审查**:Coding Agent 完成后 → Reviewer Agent 检查
  21. ### 状态流转(必须完整执行)
  22. ```
  23. init → start → compiling → running → db-checking → backend-testing → frontend-testing → done
  24. ↑
  25. 【必须测试前端⚠️】
  26. 禁止跳过!
  27. ```
  28. | 状态 | 含义 | 工具 |
  29. |------|------|------|
  30. | `backend-testing` | 后端接口测试 | curl |
  31. | `frontend-testing` | 前端页面测试 | Playwright ⚠️ |
  32. **⚠️⚠️⚠️ 强制要求 ⚠️⚠️⚠️**
  33. - **必须测试前端页面**
  34. - **禁止跳过 frontend-testing 步骤**
  35. - **禁止用 curl 代替 Playwright 测试前端**
  36. - **功能完成 = 后端测试通过 + 前端测试通过**
  37. ---
  38. ## Initializer Agent 规则
  39. ### 职责(仅第一次运行)
  40. 1. **生成 `init.sh`**:安装依赖、初始化数据库、启动服务
  41. 2. **生成 `agent-progress.txt`**:进度日志
  42. 3. **生成 `feature_list.json`**:细粒度功能清单(JSON 格式)
  43. 4. **初始化 Git**:创建仓库并提交
  44. 5. **自动执行初始化**:启动服务并验证
  45. ### 禁止行为
  46. - ❌ 编写功能代码
  47. - ❌ 跳过任何工件生成
  48. - ❌ 使用占位符
  49. - ❌ 输出命令让用户手动执行
  50. ---
  51. ## Coding Agent 规则
  52. ### 标准流程(按顺序执行)
  53. #### 步骤 1:读取状态
  54. ```bash
  55. pwd
  56. cat agent-progress.txt
  57. cat feature_list.json
  58. git log --oneline -20
  59. ```
  60. #### 步骤 2:选择功能
  61. - 从 `feature_list.json` 选择最小 id 的未完成功能
  62. - **只做这一条**
  63. #### 步骤 3:更新状态为 `start`
  64. ```bash
  65. # 修改 feature_list.json: status: "start"
  66. # 记录日志
  67. ```
  68. #### 步骤 4:开发功能
  69. - 编写代码
  70. #### 步骤 5:编译验证(状态 → compiling)
  71. ```bash
  72. # 根据项目类型执行编译
  73. python -m py_compile backend/*.py # Python
  74. npm run build # Node.js/TS
  75. mvn compile # Java
  76. ```
  77. - 成功 → 更新状态为 `running`
  78. - 失败 → 修复 → 重新编译
  79. #### 步骤 6:运行验证(状态 → running)
  80. ```bash
  81. # 重启服务
  82. ./init.sh
  83. sleep 10
  84. # 验证服务可用
  85. curl -f http://localhost:{backend_port}/health
  86. curl -f http://localhost:{frontend_port}
  87. ```
  88. - 成功 → 更新状态为 `db-checking`
  89. - 失败 → 修复 → 重新运行
  90. #### 步骤 7:数据库验证(状态 → db-checking)
  91. ```bash
  92. python backend/db_check.py
  93. ```
  94. - 成功 → 更新状态为 `backend-testing`
  95. - 失败 → 修复 → 重新验证
  96. #### 步骤 8:后端接口测试(状态 → backend-testing)
  97. ```bash
  98. # 按照 backend_test_steps 逐项测试
  99. # 必须包含增删改查(CRUD)
  100. ```
  101. - 成功 → 更新状态为 `frontend-testing`
  102. - 失败 → 修复 → 重新测试
  103. **后端测试要求**:
  104. - 必须包含增删改查(Create/Read/Update/Delete)
  105. - 使用 curl 测试 API 接口
  106. - 开发阶段 `auth_enabled: false`,跳过 token 验证
  107. ---
  108. ### ⚠️⚠️⚠️ 重要:必须继续执行步骤 9 ⚠️⚠️⚠️
  109. **后端测试通过后,必须继续执行步骤 9(前端测试)**
  110. **禁止在步骤 8 完成后直接标记 done**
  111. **功能完成 = 后端测试通过 + 前端测试通过**
  112. #### ⚠️ 步骤 9:前端页面测试(状态 → frontend-testing)⚠️
  113. **【必须测试前端,禁止跳过此步骤】**
  114. ```bash
  115. # 使用 Playwright 进行浏览器自动化测试
  116. npx playwright test
  117. ```
  118. - 成功 → 更新状态为 `done`
  119. - 失败 → 修复 → 重新测试
  120. **前端测试要求**:
  121. - 必须使用 Playwright 或 Playwright cli
  122. - ❌ 禁止使用 curl 测试前端(curl 只能测后端)
  123. #### 步骤 10:功能完成(状态 → done)
  124. ```bash
  125. # 修改 feature_list.json: status: "done", passes: true
  126. # 更新日志
  127. # Git 提交
  128. ```
  129. **⚠️⚠️⚠️ 重要:功能完成必须满足以下条件 ⚠️⚠️⚠️**
  130. - ✅ 后端 API 已实现(通过 backend_test_steps 验证)
  131. - ✅ 前端页面已实现(通过 frontend_test_steps 验证)
  132. - ✅ 功能完整可用(不是半成品)
  133. - ❌ 不能只实现后端就标记 done
  134. - ❌ 不能只标记状态不写代码
  135. ### ⚠️ 禁止行为(违反则任务失败)⚠️
  136. - ❌ **只实现后端 API,不实现前端页面**⚠️⚠️⚠️
  137. - ❌ **只标记状态为 done,不实际编写代码**⚠️⚠️⚠️
  138. - ❌ **跳过前端开发步骤**(只做 backend_test_steps,不做 frontend_test_steps)⚠️
  139. - ❌ **跳过前端测试步骤**(只测后端就标记 done)⚠️
  140. - ❌ **用 curl 测试前端页面**(curl 只能测后端)
  141. - ❌ 每次做多个功能
  142. - ❌ 跳过状态直接 done
  143. - ❌ 不编译就测试
  144. - ❌ 不运行就测试
  145. - ❌ 不验证数据库连接
  146. - ❌ 删除/修改 backend_test_steps
  147. - ❌ 删除/修改 frontend_test_steps
  148. - ❌ backend_test_steps 不包含增删改查
  149. - ❌ 输出命令让用户手动执行
  150. **⚠️⚠️⚠️ 核心违规 ⚠️⚠️⚠️**
  151. - **只实现 API 不算完成 = 必须同时有后端 + 前端代码**
  152. - **跳过前端开发/测试 = 任务失败**
  153. - **只标记状态不写代码 = 任务失败**
  154. ---
  155. ## 工件规范
  156. ### feature_list.json
  157. ```json
  158. {
  159. "project_name": "项目名称",
  160. "base_config": {
  161. "backend_port": "{根据实际项目配置}",
  162. "frontend_port": "{根据实际项目配置}",
  163. "db_host": "localhost",
  164. "db_port": 3306,
  165. "auth_enabled": false
  166. },
  167. "features": [
  168. {
  169. "id": 1,
  170. "description": "功能描述",
  171. "backend_test_steps": [
  172. "1. curl POST /api/chats - 验证创建(增)",
  173. "2. curl GET /api/chats - 验证查询(查)",
  174. "3. curl PUT /api/chats/{id} - 验证更新(改)",
  175. "4. curl DELETE /api/chats/{id} - 验证删除(删)"
  176. ],
  177. "frontend_test_steps": [
  178. "1. 在前端页面创建分类输入框",
  179. "2. 点击新增按钮",
  180. "3. 验证分类显示在列表中",
  181. "4. 点击分类筛选按钮",
  182. "5. 验证列表按分类筛选"
  183. ],
  184. "status": "init",
  185. "passes": false
  186. }
  187. ]
  188. }
  189. ```
  190. **⚠️ 重要:功能完成条件 ⚠️**
  191. - 功能完成 = 后端 API 实现 + 前端页面实现
  192. - 缺一不可:只有后端不算完成,只有前端也不算完成
  193. - frontend_test_steps 必须包含具体的前端操作(如:点击按钮、输入文本、验证显示)
  194. ### agent-progress.txt
  195. - 格式:纯文本
  196. - 要求:每次会话追加记录,保留所有历史
  197. ### init.sh
  198. - 格式:Bash 脚本
  199. - 要求:一键启动项目、安装依赖、启动服务、运行测试
  200. ### Git
  201. - 提交频率:每次功能完成后
  202. ---
  203. ## 权限验证配置
  204. - `auth_enabled: false`:开发阶段,跳过登录验证 token
  205. - `auth_enabled: true`:生产阶段,开启登录验证 token
  206. **建议**:开发阶段关闭 `auth_enabled`,等核心功能完成后再开启
  207. ---
  208. ## Reviewer Agent 规则
  209. ### 职责
  210. 在 Coding Agent 完成后进行质量检查:
  211. 1. 对照 `feature_list.json` 验证功能是否实现
  212. 2. 检查后端代码逻辑是否正确
  213. 3. **用 Playwright 浏览器验证前端效果**
  214. 4. 发现问题反馈给 Coding Agent 修复
  215. ### 工作流程
  216. #### 步骤 1:读取功能清单
  217. ```bash
  218. cat feature_list.json
  219. ```
  220. #### 步骤 2:检查后端代码
  221. ```bash
  222. # 检查 API 是否实现
  223. ls backend/
  224. cat backend/api/*.py
  225. ```
  226. #### 步骤 3:检查前端代码
  227. ```bash
  228. # 检查页面是否存在
  229. ls frontend/src/views/
  230. cat frontend/src/views/*.vue
  231. ```
  232. #### 步骤 4:浏览器验证(必须执行)
  233. ```bash
  234. # 用 Playwright 验证前端效果
  235. npx playwright test --reporter=line
  236. ```
  237. 验证:
  238. - ✅ 页面能正常打开
  239. - ✅ 按钮能点击
  240. - ✅ 功能能正常使用
  241. - ✅ 数据显示正确
  242. #### 步骤 5:生成审查报告
  243. ```bash
  244. cat > feature-review-report.md << 'EOF'
  245. # 功能审查报告
  246. ## 功能 X 审查结果
  247. | 检查项 | 状态 | 说明 |
  248. |--------|------|------|
  249. | 后端代码 | ✅/❌ | |
  250. | 前端代码 | ✅/❌ | |
  251. | 浏览器验证 | ✅/❌ | |
  252. ### 问题列表
  253. 1. [问题描述]
  254. ### 结论
  255. - ✅ 通过 → 功能可以标记为完成
  256. - ❌ 不通过 → 返回 Coding Agent 修复
  257. EOF
  258. ```
  259. ### 审查标准
  260. | 问题类型 | 严重程度 | 处理方式 |
  261. |---------|---------|---------|
  262. | 功能完全没实现 | 🔴 严重 | 返回重做 |
  263. | 部分功能缺失 | 🟡 中等 | 返回补充 |
  264. | UI 样式问题 | 🟢 轻微 | 可忽略 |
  265. ### 核心原则
  266. > **Reviewer Agent 是质量把关者**
  267. >
  268. > **发现问题必须反馈,不能视而不见**
  269. >
  270. > **浏览器验证是必须的**