@hunter-harness/workflow-harness 0.2.50 → 0.2.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. package/harness/bundles/general/claude-code/.harness-build.json +1 -1
  2. package/harness/bundles/general/claude-code/README.md +4 -4
  3. package/harness/bundles/general/claude-code/harness-archive/SKILL.md +6 -6
  4. package/harness/bundles/general/claude-code/harness-codebase-map/SKILL.md +1 -1
  5. package/harness/bundles/general/claude-code/harness-knowledge-ingest/SKILL.md +42 -258
  6. package/harness/bundles/general/claude-code/harness-knowledge-query/SKILL.md +38 -120
  7. package/harness/bundles/general/claude-code/harness-plan/SKILL.md +4 -4
  8. package/harness/bundles/general/claude-code/harness-plan/checklist.md +2 -2
  9. package/harness/bundles/general/claude-code/harness-review/SKILL.md +2 -2
  10. package/harness/bundles/general/claude-code/harness-run/SKILL.md +2 -2
  11. package/harness/bundles/general/claude-code/harness-submit/SKILL.md +2 -2
  12. package/harness/bundles/general/claude-code/harness-sync/SKILL.md +7 -7
  13. package/harness/bundles/general/claude-code/harness-sync/reference.md +18 -11
  14. package/harness/bundles/general/claude-code/harness-test/SKILL.md +2 -2
  15. package/harness/bundles/general/claude-code/protocols/archive-report-protocol.md +5 -7
  16. package/harness/bundles/general/claude-code/protocols/state-layout-protocol.md +17 -11
  17. package/harness/bundles/general/claude-code/scripts/harness_archive.py +748 -200
  18. package/harness/bundles/general/claude-code/scripts/harness_profile.py +0 -1
  19. package/harness/bundles/general/claude-code/scripts/harness_state.py +3 -5
  20. package/harness/bundles/general/codebuddy/.harness-build.json +1 -1
  21. package/harness/bundles/general/codebuddy/README.md +4 -4
  22. package/harness/bundles/general/codebuddy/harness-archive/SKILL.md +6 -6
  23. package/harness/bundles/general/codebuddy/harness-codebase-map/SKILL.md +1 -1
  24. package/harness/bundles/general/codebuddy/harness-knowledge-ingest/SKILL.md +39 -244
  25. package/harness/bundles/general/codebuddy/harness-knowledge-query/SKILL.md +35 -106
  26. package/harness/bundles/general/codebuddy/harness-plan/SKILL.md +4 -4
  27. package/harness/bundles/general/codebuddy/harness-plan/checklist.md +2 -2
  28. package/harness/bundles/general/codebuddy/harness-review/SKILL.md +2 -2
  29. package/harness/bundles/general/codebuddy/harness-run/SKILL.md +2 -2
  30. package/harness/bundles/general/codebuddy/harness-submit/SKILL.md +2 -2
  31. package/harness/bundles/general/codebuddy/harness-sync/SKILL.md +8 -8
  32. package/harness/bundles/general/codebuddy/harness-sync/reference.md +18 -11
  33. package/harness/bundles/general/codebuddy/harness-test/SKILL.md +2 -2
  34. package/harness/bundles/general/codebuddy/protocols/archive-report-protocol.md +5 -7
  35. package/harness/bundles/general/codebuddy/protocols/state-layout-protocol.md +17 -11
  36. package/harness/bundles/general/codebuddy/scripts/harness_archive.py +748 -200
  37. package/harness/bundles/general/codebuddy/scripts/harness_profile.py +0 -1
  38. package/harness/bundles/general/codebuddy/scripts/harness_state.py +3 -5
  39. package/harness/bundles/general/codex/.harness-build.json +1 -1
  40. package/harness/bundles/general/codex/README.md +4 -4
  41. package/harness/bundles/general/codex/harness-archive/SKILL.md +6 -6
  42. package/harness/bundles/general/codex/harness-codebase-map/SKILL.md +1 -1
  43. package/harness/bundles/general/codex/harness-knowledge-ingest/SKILL.md +39 -244
  44. package/harness/bundles/general/codex/harness-knowledge-query/SKILL.md +35 -106
  45. package/harness/bundles/general/codex/harness-plan/SKILL.md +4 -4
  46. package/harness/bundles/general/codex/harness-plan/checklist.md +2 -2
  47. package/harness/bundles/general/codex/harness-review/SKILL.md +2 -2
  48. package/harness/bundles/general/codex/harness-run/SKILL.md +2 -2
  49. package/harness/bundles/general/codex/harness-submit/SKILL.md +2 -2
  50. package/harness/bundles/general/codex/harness-sync/SKILL.md +8 -8
  51. package/harness/bundles/general/codex/harness-sync/reference.md +18 -11
  52. package/harness/bundles/general/codex/harness-test/SKILL.md +2 -2
  53. package/harness/bundles/general/codex/protocols/archive-report-protocol.md +5 -7
  54. package/harness/bundles/general/codex/protocols/state-layout-protocol.md +17 -11
  55. package/harness/bundles/general/codex/scripts/harness_archive.py +748 -200
  56. package/harness/bundles/general/codex/scripts/harness_profile.py +0 -1
  57. package/harness/bundles/general/codex/scripts/harness_state.py +3 -5
  58. package/harness/bundles/general/cursor/.harness-build.json +1 -1
  59. package/harness/bundles/general/cursor/README.md +4 -4
  60. package/harness/bundles/general/cursor/harness-archive/SKILL.md +6 -6
  61. package/harness/bundles/general/cursor/harness-codebase-map/SKILL.md +1 -1
  62. package/harness/bundles/general/cursor/harness-knowledge-ingest/SKILL.md +39 -244
  63. package/harness/bundles/general/cursor/harness-knowledge-query/SKILL.md +35 -106
  64. package/harness/bundles/general/cursor/harness-plan/SKILL.md +4 -4
  65. package/harness/bundles/general/cursor/harness-plan/checklist.md +2 -2
  66. package/harness/bundles/general/cursor/harness-review/SKILL.md +2 -2
  67. package/harness/bundles/general/cursor/harness-run/SKILL.md +2 -2
  68. package/harness/bundles/general/cursor/harness-submit/SKILL.md +2 -2
  69. package/harness/bundles/general/cursor/harness-sync/SKILL.md +8 -8
  70. package/harness/bundles/general/cursor/harness-sync/reference.md +18 -11
  71. package/harness/bundles/general/cursor/harness-test/SKILL.md +2 -2
  72. package/harness/bundles/general/cursor/protocols/archive-report-protocol.md +5 -7
  73. package/harness/bundles/general/cursor/protocols/state-layout-protocol.md +17 -11
  74. package/harness/bundles/general/cursor/scripts/harness_archive.py +748 -200
  75. package/harness/bundles/general/cursor/scripts/harness_profile.py +0 -1
  76. package/harness/bundles/general/cursor/scripts/harness_state.py +3 -5
  77. package/harness/bundles/java/claude-code/.harness-build.json +1 -1
  78. package/harness/bundles/java/claude-code/README.md +4 -4
  79. package/harness/bundles/java/claude-code/harness-apidoc/SKILL.md +2 -2
  80. package/harness/bundles/java/claude-code/harness-archive/SKILL.md +6 -6
  81. package/harness/bundles/java/claude-code/harness-codebase-map/SKILL.md +1 -1
  82. package/harness/bundles/java/claude-code/harness-knowledge-ingest/SKILL.md +42 -258
  83. package/harness/bundles/java/claude-code/harness-knowledge-query/SKILL.md +38 -120
  84. package/harness/bundles/java/claude-code/harness-package/SKILL.md +2 -2
  85. package/harness/bundles/java/claude-code/harness-plan/SKILL.md +4 -4
  86. package/harness/bundles/java/claude-code/harness-plan/checklist.md +2 -2
  87. package/harness/bundles/java/claude-code/harness-review/SKILL.md +2 -2
  88. package/harness/bundles/java/claude-code/harness-run/SKILL.md +2 -2
  89. package/harness/bundles/java/claude-code/harness-submit/SKILL.md +2 -2
  90. package/harness/bundles/java/claude-code/harness-sync/SKILL.md +7 -7
  91. package/harness/bundles/java/claude-code/harness-sync/reference.md +18 -11
  92. package/harness/bundles/java/claude-code/harness-test/SKILL.md +2 -2
  93. package/harness/bundles/java/claude-code/protocols/archive-report-protocol.md +5 -7
  94. package/harness/bundles/java/claude-code/protocols/state-layout-protocol.md +17 -11
  95. package/harness/bundles/java/claude-code/scripts/harness_archive.py +748 -200
  96. package/harness/bundles/java/claude-code/scripts/harness_profile.py +0 -1
  97. package/harness/bundles/java/claude-code/scripts/harness_state.py +3 -5
  98. package/harness/bundles/java/codebuddy/.harness-build.json +1 -1
  99. package/harness/bundles/java/codebuddy/README.md +4 -4
  100. package/harness/bundles/java/codebuddy/harness-apidoc/SKILL.md +2 -2
  101. package/harness/bundles/java/codebuddy/harness-archive/SKILL.md +6 -6
  102. package/harness/bundles/java/codebuddy/harness-codebase-map/SKILL.md +1 -1
  103. package/harness/bundles/java/codebuddy/harness-knowledge-ingest/SKILL.md +39 -244
  104. package/harness/bundles/java/codebuddy/harness-knowledge-query/SKILL.md +35 -106
  105. package/harness/bundles/java/codebuddy/harness-package/SKILL.md +2 -2
  106. package/harness/bundles/java/codebuddy/harness-plan/SKILL.md +4 -4
  107. package/harness/bundles/java/codebuddy/harness-plan/checklist.md +2 -2
  108. package/harness/bundles/java/codebuddy/harness-review/SKILL.md +2 -2
  109. package/harness/bundles/java/codebuddy/harness-run/SKILL.md +2 -2
  110. package/harness/bundles/java/codebuddy/harness-submit/SKILL.md +2 -2
  111. package/harness/bundles/java/codebuddy/harness-sync/SKILL.md +8 -8
  112. package/harness/bundles/java/codebuddy/harness-sync/reference.md +18 -11
  113. package/harness/bundles/java/codebuddy/harness-test/SKILL.md +2 -2
  114. package/harness/bundles/java/codebuddy/protocols/archive-report-protocol.md +5 -7
  115. package/harness/bundles/java/codebuddy/protocols/state-layout-protocol.md +17 -11
  116. package/harness/bundles/java/codebuddy/scripts/harness_archive.py +748 -200
  117. package/harness/bundles/java/codebuddy/scripts/harness_profile.py +0 -1
  118. package/harness/bundles/java/codebuddy/scripts/harness_state.py +3 -5
  119. package/harness/bundles/java/codex/.harness-build.json +1 -1
  120. package/harness/bundles/java/codex/README.md +4 -4
  121. package/harness/bundles/java/codex/harness-apidoc/SKILL.md +2 -2
  122. package/harness/bundles/java/codex/harness-archive/SKILL.md +6 -6
  123. package/harness/bundles/java/codex/harness-codebase-map/SKILL.md +1 -1
  124. package/harness/bundles/java/codex/harness-knowledge-ingest/SKILL.md +39 -244
  125. package/harness/bundles/java/codex/harness-knowledge-query/SKILL.md +35 -106
  126. package/harness/bundles/java/codex/harness-package/SKILL.md +2 -2
  127. package/harness/bundles/java/codex/harness-plan/SKILL.md +4 -4
  128. package/harness/bundles/java/codex/harness-plan/checklist.md +2 -2
  129. package/harness/bundles/java/codex/harness-review/SKILL.md +2 -2
  130. package/harness/bundles/java/codex/harness-run/SKILL.md +2 -2
  131. package/harness/bundles/java/codex/harness-submit/SKILL.md +2 -2
  132. package/harness/bundles/java/codex/harness-sync/SKILL.md +8 -8
  133. package/harness/bundles/java/codex/harness-sync/reference.md +18 -11
  134. package/harness/bundles/java/codex/harness-test/SKILL.md +2 -2
  135. package/harness/bundles/java/codex/protocols/archive-report-protocol.md +5 -7
  136. package/harness/bundles/java/codex/protocols/state-layout-protocol.md +17 -11
  137. package/harness/bundles/java/codex/scripts/harness_archive.py +748 -200
  138. package/harness/bundles/java/codex/scripts/harness_profile.py +0 -1
  139. package/harness/bundles/java/codex/scripts/harness_state.py +3 -5
  140. package/harness/bundles/java/cursor/.harness-build.json +1 -1
  141. package/harness/bundles/java/cursor/README.md +4 -4
  142. package/harness/bundles/java/cursor/harness-apidoc/SKILL.md +2 -2
  143. package/harness/bundles/java/cursor/harness-archive/SKILL.md +6 -6
  144. package/harness/bundles/java/cursor/harness-codebase-map/SKILL.md +1 -1
  145. package/harness/bundles/java/cursor/harness-knowledge-ingest/SKILL.md +39 -244
  146. package/harness/bundles/java/cursor/harness-knowledge-query/SKILL.md +35 -106
  147. package/harness/bundles/java/cursor/harness-package/SKILL.md +2 -2
  148. package/harness/bundles/java/cursor/harness-plan/SKILL.md +4 -4
  149. package/harness/bundles/java/cursor/harness-plan/checklist.md +2 -2
  150. package/harness/bundles/java/cursor/harness-review/SKILL.md +2 -2
  151. package/harness/bundles/java/cursor/harness-run/SKILL.md +2 -2
  152. package/harness/bundles/java/cursor/harness-submit/SKILL.md +2 -2
  153. package/harness/bundles/java/cursor/harness-sync/SKILL.md +8 -8
  154. package/harness/bundles/java/cursor/harness-sync/reference.md +18 -11
  155. package/harness/bundles/java/cursor/harness-test/SKILL.md +2 -2
  156. package/harness/bundles/java/cursor/protocols/archive-report-protocol.md +5 -7
  157. package/harness/bundles/java/cursor/protocols/state-layout-protocol.md +17 -11
  158. package/harness/bundles/java/cursor/scripts/harness_archive.py +748 -200
  159. package/harness/bundles/java/cursor/scripts/harness_profile.py +0 -1
  160. package/harness/bundles/java/cursor/scripts/harness_state.py +3 -5
  161. package/harness/manifests/general/claude-code.json +21 -45
  162. package/harness/manifests/general/codebuddy.json +21 -45
  163. package/harness/manifests/general/codex.json +21 -45
  164. package/harness/manifests/general/cursor.json +21 -45
  165. package/harness/manifests/java/claude-code.json +23 -47
  166. package/harness/manifests/java/codebuddy.json +23 -47
  167. package/harness/manifests/java/codex.json +23 -47
  168. package/harness/manifests/java/cursor.json +23 -47
  169. package/hunter-workflow-family.json +4 -4
  170. package/package.json +1 -1
  171. package/harness/bundles/general/claude-code/harness-knowledge-ingest/design.md +0 -842
  172. package/harness/bundles/general/claude-code/harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml +0 -42
  173. package/harness/bundles/general/claude-code/harness-knowledge-ingest/mcp-config.example.json +0 -10
  174. package/harness/bundles/general/claude-code/harness-knowledge-ingest/reference.md +0 -413
  175. package/harness/bundles/general/claude-code/harness-knowledge-ingest/scripts/harness_knowledge.py +0 -7263
  176. package/harness/bundles/general/claude-code/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +0 -275
  177. package/harness/bundles/general/codebuddy/harness-knowledge-ingest/design.md +0 -842
  178. package/harness/bundles/general/codebuddy/harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml +0 -42
  179. package/harness/bundles/general/codebuddy/harness-knowledge-ingest/mcp-config.example.json +0 -10
  180. package/harness/bundles/general/codebuddy/harness-knowledge-ingest/reference.md +0 -413
  181. package/harness/bundles/general/codebuddy/harness-knowledge-ingest/scripts/harness_knowledge.py +0 -7263
  182. package/harness/bundles/general/codebuddy/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +0 -275
  183. package/harness/bundles/general/codex/harness-knowledge-ingest/design.md +0 -842
  184. package/harness/bundles/general/codex/harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml +0 -42
  185. package/harness/bundles/general/codex/harness-knowledge-ingest/mcp-config.example.json +0 -10
  186. package/harness/bundles/general/codex/harness-knowledge-ingest/reference.md +0 -413
  187. package/harness/bundles/general/codex/harness-knowledge-ingest/scripts/harness_knowledge.py +0 -7263
  188. package/harness/bundles/general/codex/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +0 -275
  189. package/harness/bundles/general/cursor/harness-knowledge-ingest/design.md +0 -842
  190. package/harness/bundles/general/cursor/harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml +0 -42
  191. package/harness/bundles/general/cursor/harness-knowledge-ingest/mcp-config.example.json +0 -10
  192. package/harness/bundles/general/cursor/harness-knowledge-ingest/reference.md +0 -413
  193. package/harness/bundles/general/cursor/harness-knowledge-ingest/scripts/harness_knowledge.py +0 -7263
  194. package/harness/bundles/general/cursor/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +0 -275
  195. package/harness/bundles/java/claude-code/harness-knowledge-ingest/design.md +0 -842
  196. package/harness/bundles/java/claude-code/harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml +0 -42
  197. package/harness/bundles/java/claude-code/harness-knowledge-ingest/mcp-config.example.json +0 -10
  198. package/harness/bundles/java/claude-code/harness-knowledge-ingest/reference.md +0 -413
  199. package/harness/bundles/java/claude-code/harness-knowledge-ingest/scripts/harness_knowledge.py +0 -7263
  200. package/harness/bundles/java/claude-code/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +0 -275
  201. package/harness/bundles/java/codebuddy/harness-knowledge-ingest/design.md +0 -842
  202. package/harness/bundles/java/codebuddy/harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml +0 -42
  203. package/harness/bundles/java/codebuddy/harness-knowledge-ingest/mcp-config.example.json +0 -10
  204. package/harness/bundles/java/codebuddy/harness-knowledge-ingest/reference.md +0 -413
  205. package/harness/bundles/java/codebuddy/harness-knowledge-ingest/scripts/harness_knowledge.py +0 -7263
  206. package/harness/bundles/java/codebuddy/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +0 -275
  207. package/harness/bundles/java/codex/harness-knowledge-ingest/design.md +0 -842
  208. package/harness/bundles/java/codex/harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml +0 -42
  209. package/harness/bundles/java/codex/harness-knowledge-ingest/mcp-config.example.json +0 -10
  210. package/harness/bundles/java/codex/harness-knowledge-ingest/reference.md +0 -413
  211. package/harness/bundles/java/codex/harness-knowledge-ingest/scripts/harness_knowledge.py +0 -7263
  212. package/harness/bundles/java/codex/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +0 -275
  213. package/harness/bundles/java/cursor/harness-knowledge-ingest/design.md +0 -842
  214. package/harness/bundles/java/cursor/harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml +0 -42
  215. package/harness/bundles/java/cursor/harness-knowledge-ingest/mcp-config.example.json +0 -10
  216. package/harness/bundles/java/cursor/harness-knowledge-ingest/reference.md +0 -413
  217. package/harness/bundles/java/cursor/harness-knowledge-ingest/scripts/harness_knowledge.py +0 -7263
  218. package/harness/bundles/java/cursor/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +0 -275
@@ -2,5 +2,5 @@
2
2
  "schemaVersion": 1,
3
3
  "overlay": "none",
4
4
  "agent": "claude-code",
5
- "coreHash": "6b900d319d6b6d77"
5
+ "coreHash": "bde20b36d56b03f4"
6
6
  }
@@ -56,8 +56,8 @@
56
56
  | harness-review | `[Read, Write, Edit, Glob, Grep, Agent, Bash(powershell.exe:*)]` | 同上 |
57
57
  | harness-sync | `[Read, Glob, Grep, Edit, Write, Bash(powershell.exe:*)]` | 同上 |
58
58
  | harness-codebase-map | `[Read, Glob, Grep, Write, Edit, Agent, Bash(powershell.exe:*)]` | 同上 |
59
- | harness-knowledge-query | `[Bash(powershell.exe:*), Read, Write, Edit, Glob, Grep]` | 同上 |
60
- | harness-knowledge-ingest | `[Bash(powershell.exe:*), Read, Write, Edit, Glob, Grep]` | 同上 |
59
+ | harness-knowledge-query | `[Bash(powershell.exe:*), Read, Glob, Grep]` | 同上 |
60
+ | harness-knowledge-ingest | `[Bash(powershell.exe:*), Read, Glob, Grep]` | 同上 |
61
61
 
62
62
  > **blocking user confirmation 不预批准**:各 skill 需要向用户确认时通过普通权限提示调用 `blocking user confirmation`(adapter 映射到 `AskUserQuestion`/`request_user_input`/普通对话),不在 `allowed-tools` 中预批准(遵循 skill-optimizer 规则)。`harness-codebase-map` 额外预批准 `Agent` 用于派发并行 mapper。
63
63
 
@@ -227,8 +227,8 @@ harness-skills/
227
227
  | harness-review | `/harness-review` | 6维度参考性审查(不阻塞后续流程) | `test` | 手动 | `.harness/changes/<cn>/reports/review/` |
228
228
  | harness-submit | `/harness-submit` 或 `/harness-merge`(别名) | commit+push(主目录)/ worktree:本地 commit→--no-ff 合并→push 主分支 | `review` | 手动 | ledger `mergeFinalHash` + 控制台报告 |
229
229
  | harness-archive | `/harness-archive` | 归档产出到 archive/YYYY-MM-DD-<cn>,释放工作区 | `submit` | 手动 | `.harness/archive/YYYY-MM-DD-<cn>/` |
230
- | harness-knowledge-query | `/harness-knowledge-query` | 查询 .harness/knowledge 历史上下文,生成需求 context pack | `sync`/独立 | ✅ | `.harness/knowledge/context-packs/` |
231
- | harness-knowledge-ingest | `/harness-knowledge-ingest` | archive 整理/同步/维护知识索引(promote/demote/audit) | `archive` | ✅ | `.harness/knowledge/index.json` |
230
+ | harness-knowledge-query | `/harness-knowledge-query` | 只查询平台语义知识;无本地索引或离线回退 | 独立 | ✅ | CLI JSON(不落本地知识文件) |
231
+ | harness-knowledge-ingest | `/harness-knowledge-ingest` | 确认归档 ZIP 已由平台保存、解包并 ingest | `archive` | ✅ | 服务端 package/knowledge 收据 |
232
232
 
233
233
  > 生命周期 skill(plan → run → test → review → submit → archive)为**手动触发**:单阶段结束后停止,不自动接续下一阶段(已设 `disable-model-invocation`)。sync / codebase-map / knowledge 等辅助 skill 仍可按需被调用。`harness-run`、`harness-submit`、`harness-archive` 涉及 git 写操作、文件移动或归档,调用前必须确保前置条件已满足。
234
234
  > `<cn>` = change-name,由 harness-plan 阶段7确定。其他 skill 自动扫描未归档变更定位。
@@ -21,7 +21,7 @@ disallowed-tools:
21
21
  - Bash(awk *)
22
22
  - Bash(curl *)
23
23
  ---
24
- <!-- generated by harness_deploy.py; core=6b900d319d6b6d77; overlay=none; agent=claude-code; do not edit -->
24
+ <!-- generated by harness_deploy.py; core=bde20b36d56b03f4; overlay=none; agent=claude-code; do not edit -->
25
25
  # harness-archive — 变更归档
26
26
 
27
27
  ## Purpose
@@ -76,7 +76,7 @@ disallowed-tools:
76
76
  6. **implementation-detail** — 自适应执行参考;legacy 缺失 🟡WARN,不阻断
77
77
  7. **test-scenarios** — 测试真相源:`plans/<change>-test-scenarios.md`
78
78
  8. **禁止读取 `docs/superpowers/` 作为正式输入** — 旧草稿仅人工线索
79
- 9. **每个 skill 边界只刷新一次状态快照** — 先运行 `python <skills-root>/scripts/harness_state.py capture --project . --change-dir ".harness/changes/<change-name>" --base <baseCommit> --json`;`changedSegments=[]` 时复用已有 profile/rules/map/knowledge/change/code 指纹,不再重复跑全量 `harness-sync`、知识重建或代码库扫描。只有对应 segment 变化或缺失时才定向刷新;快照不能替代源码读取和验证门禁。
79
+ 9. **每个 skill 边界只刷新一次状态快照** — 先运行 `python <skills-root>/scripts/harness_state.py capture --project . --change-dir ".harness/changes/<change-name>" --base <baseCommit> --json`;`changedSegments=[]` 时复用已有 profile/rules/map/change/code 指纹,不再重复跑全量 `harness-sync` 或代码库扫描。`knowledge` 段仅为兼容空段,知识始终按需远端查询;快照不能替代源码读取和验证门禁。
80
80
 
81
81
  状态目录分层:新路径优先,旧路径兼容 → [[../protocols/state-layout-protocol.md|state-layout-protocol]]
82
82
  > 片段:read-protocol
@@ -118,10 +118,10 @@ disallowed-tools:
118
118
 
119
119
  1. 运行 `python <skills-root>/scripts/harness_archive.py status --change-dir ".harness/changes/<change-name>" --intent release-candidate --json` 前置检查。无 CI 项目若已有完整全量 ledger,先运行 `certify-local`;若用户明确只封存事实,则 status/finalize 均使用 `--intent record-only`。
120
120
  2. `meta/archive-meta.md` **由 `harness_archive.py finalize` 自动生成**(与 summary-data `finalStatus` 同源);**禁止 agent 手写**该文件,手写视为数据丢失。维护者结论写入 events(decision/issue)即可,finalize 会汇总到 summary / archive-meta。
121
- 3. 运行 `python <skills-root>/scripts/harness_archive.py finalize --change-dir ".harness/changes/<change-name>" --archive-root ".harness/archive" --intent <release-candidate|record-only> --json`;读 JSON(cleanup、事件、移动、collect、render、validate、manifest 比对、archive-meta)。finalize 内部负责且仅负责一次 `phase.start` / `phase.end`,调用者不得重复追加。**finalize 不再同步执行知识维护**(§8.2):它写一个 `pending` maintenance-outbox 项即返回,`knowledgeMaintenance=QUEUED`;写 outbox 失败时 `NOT_QUEUED`(warning,不回滚 archive,总状态 CONDITIONAL)。后续由 `harness-sync` / `harness_knowledge.py maintain` 异步推进 outbox。**finalize 失败或 validate 报错时不删除原目录**。
122
- - **平台钩子(best-effort,不阻断归档)**:
123
- 1. **归档推送(C1)**:有远程凭据时自动 `hunter-harness push` 上传核心+可选辅助档(spec/plans/summary-data/knowledge + `reports/review/*`、`reports/test/*`、`meta/archive-meta.md`、`meta/change-context.json`)。
124
- 2. **监控终态(C3)**:auto-push 之后自动 `events-sync`,用归档前 change 路径派生的 `run_id` + 原 `change_key` 上报;平台依据 `phase.end`/`archive` 将 run 置为 succeeded/failed(含 `ended_at`)。失败只记 warning。
121
+ 3. 运行 `python <skills-root>/scripts/harness_archive.py finalize --change-dir ".harness/changes/<change-name>" --archive-root ".harness/archive" --intent <release-candidate|record-only> --json`;读 JSON(cleanup、事件、移动、collect、render、validate、manifest 比对、archive-meta、ZIP package、上传与服务端 knowledge status)。finalize 内部负责且仅负责一次 `phase.start` / `phase.end`,调用者不得重复追加。**本地不再执行知识维护,也不写 maintenance-outbox**;服务端在归档 ZIP 持久保存并解包后 ingest。**finalize 失败或 validate 报错时不删除原目录**。
122
+ - **归档包上传**:始终先生成一个确定性 ZIP;有远程凭据时再调用 `npx hunter-harness archive upload`。ZIP 仅包含 `summary-data.json`、`spec/**/*.md`、`plans/**/*.md`、`archive-meta.md`、`change-context.json` 和稳定 manifest;明确排除 logs、review/test 报告、HTML、缓存、备份、凭据和临时文件。
123
+ - **失败可恢复**:无论远端凭据是否齐全,都先生成 ZIP `<change-key>.upload.json`;上传或服务端 ingest 失败不破坏本地归档。待上传 ZIP 与逐 change 回执保留在 `.harness/state/local/archive-packages/`,可枚举独立重试。只有 CLI 核验 package hash 且服务端同时返回 `archive_status=durable`、`knowledge_status=ready` 后,才清理对应 ZIP 与回执;`indexing` 记为 pending,不记为失败。
124
+ - **监控终态(C3)**:auto-upload 之后自动 `events-sync`,用归档前 change 路径派生的 `run_id` + 原 `change_key` 上报;失败只记 warning。
125
125
 
126
126
  - **Read `reference.md`** — finalize 输出字段、archive-meta 格式、CONDITIONAL_OK 规则
127
127
  - **Read `templates/summary-data-template.json`** — summary-data 数据结构
@@ -20,7 +20,7 @@ disallowed-tools:
20
20
  - Bash(awk *)
21
21
  - Bash(curl *)
22
22
  ---
23
- <!-- generated by harness_deploy.py; core=6b900d319d6b6d77; overlay=none; agent=claude-code; do not edit -->
23
+ <!-- generated by harness_deploy.py; core=bde20b36d56b03f4; overlay=none; agent=claude-code; do not edit -->
24
24
  # harness-codebase-map — 代码库地图
25
25
 
26
26
  ## Purpose
@@ -1,262 +1,69 @@
1
1
  ---
2
2
  name: harness-knowledge-ingest
3
- description: " .harness/archive 归档整理、同步和维护项目知识索引。适用场景:ingest knowledge、sync knowledge、rebuild knowledge index、promote knowledge、确认知识条目、检查知识库是否过期。"
4
- argument-hint: "auto(默认) | status | repair | ingest | audit | promote <entry-id> | demote <entry-id> | mcp"
5
- effort: medium
6
- allowed-tools: [Bash(powershell.exe:*), Read, Write, Edit, Glob, Grep]
3
+ description: "确认归档 ZIP 已上传并由 Hunter Platform 在服务端解包、校验和入库。客户端不再构建或维护本地知识索引。"
4
+ argument-hint: "status | retry-upload <archive.zip>"
5
+ effort: low
6
+ allowed-tools: [Bash(powershell.exe:*), Read, Glob, Grep]
7
7
  disallowed-tools:
8
8
  - Bash(git *)
9
- - Bash(mvn *)
10
- - Bash(ls *)
11
- - Bash(find *)
12
- - Bash(grep *)
13
- - Bash(cat *)
14
- - Bash(cp *)
15
- - Bash(mv *)
16
- - Bash(rm *)
17
- - Bash(mkdir *)
18
- - Bash(touch *)
19
- - Bash(sed *)
20
- - Bash(awk *)
21
9
  - Bash(curl *)
22
10
  ---
23
- <!-- generated by harness_deploy.py; core=6b900d319d6b6d77; overlay=none; agent=claude-code; do not edit -->
11
+ <!-- generated by harness_deploy.py; core=bde20b36d56b03f4; overlay=none; agent=claude-code; do not edit -->
24
12
  # harness-knowledge-ingest
25
13
 
26
- `.harness/archive/**/reports/final/summary-data.json` **本地抽取**知识条目,产物随归档 push 上传;**裁决与投影以平台为准**(远程优先)。本地 SQLite / Agent judge 仅作离线或未连接平台时的回退。
14
+ 知识 ingest 完全由 Hunter Platform 负责。归档完成时,客户端生成一个确定性 ZIP;
15
+ 服务端收到后保存原包、安全解包、发布核心文件,并根据其中的 Markdown 与摘要重建
16
+ 项目语义索引。
27
17
 
28
- > 语言约定:知识条目的 title / summary / body 及一切生成文档优先使用中文(标识符与字段名保持原文)。详见 [[../shared/p0-trust.md|p0-trust]] 的"生成内容语言约定"。
18
+ 客户端不得生成 `.harness/knowledge`、SQLite 索引、候选条目、视图、报告或本地裁决。
19
+ 本地知识处理脚本已从分发包移除;历史版本数据只由升级兼容逻辑识别,不再执行。
29
20
 
30
- ## 远程优先模式(平台连接后)
21
+ ## 归档包边界
31
22
 
32
- 1. **本地职责**:抽取 candidate 条目 JSON,写入 `.harness/knowledge/entries/**`(及可选本地 index)。
33
- 2. **上传**:条目随 `hunter-harness push` / 归档 finalize 的 auto-push 上传(见归档分级清单:核心含 `knowledge/entries/active|candidate`)。
34
- 3. **平台职责**:服务端 ingest 后自动裁决 status(promote→active 等启发式),并投影到语义知识库;`deprecate` 粘性不被后续 push 覆盖。
35
- 4. **本地 judge / SQLite**:无平台凭据或离线时仍可用;已连接平台时**不要**把本地裁决当作多人共享真源。
23
+ 允许上传的核心内容只有:
36
24
 
37
- 未连接平台时,行为退回本地离线 MVP:`candidate` / `stale` / `active` / `superseded` / `conflicted` + SQLite FTS。按新需求查询历史由独立的 `harness-knowledge-query` 负责(默认远程语义搜索,本地索引离线回退)。
25
+ - `reports/final/summary-data.json`
26
+ - `spec/**/*.md`
27
+ - `plans/**/*.md`
28
+ - `archive-meta.md`
29
+ - `change-context.json`
30
+ - 包内 `archive-manifest.json`(由 CLI 生成)
38
31
 
39
- ## Triggers
32
+ 日志、测试报告、审查报告、HTML、缓存、备份、凭据和临时文件不得进入归档包。
40
33
 
41
- - ingest knowledge
42
- - sync knowledge
43
- - rebuild knowledge index
44
- - promote knowledge
45
- - 确认知识条目
46
- - 从归档生成知识索引
47
- - 刷新项目知识库
48
- - 检查知识库是否过期
34
+ ## Normal Workflow
49
35
 
50
- ## Required context
51
-
52
- - AGENTS.md / CLAUDE.md
53
- - `.harness/archive/**/reports/final/summary-data.json`
54
- - `.harness/knowledge/index.json`
55
- - `.harness/codebase/map-summary.md`(如存在)
56
- - design.md
57
- - (可选)`.harness/credentials.local.yaml` — 已连接平台时走远程裁决
58
-
59
- ## Purpose
60
-
61
- 解决两个问题:
62
-
63
- 1. **整理知识库内容**:把归档里的 `businessGoal`、`changedFiles`、`maintenanceNotes`、`knownRisks`、`manualActions`、`verification`、`reviewSummary` 抽成知识条目。
64
- 2. **维护知识生命周期**:
65
- - **远程优先**:平台 ingest 后裁决并投影;本地只需保证条目 JSON 可上传。
66
- - **离线回退**:检查索引是否过期,保留 active;高置信 candidate 由 `autoPromote` 自动提升;其余由 **Agent judge** 闭环裁决。
67
-
68
- ## Outputs
69
-
70
- ```text
71
- .harness/knowledge/index.json
72
- .harness/knowledge/index.sqlite
73
- .harness/knowledge/entries/candidate/*.json
74
- .harness/knowledge/entries/active/*.json
75
- .harness/knowledge/entries/stale/*.json
76
- .harness/knowledge/entries/superseded/*.json
77
- .harness/knowledge/entries/conflicted/*.json
78
- .harness/knowledge/cache/archive-entries/*.json
79
- .harness/knowledge/reports/ingest-report-*.md
80
- .harness/knowledge/reports/verification-report-*.md
81
- .harness/knowledge/reports/audit-report-*.md
82
- .harness/knowledge/reports/judge-export-<content-sha256>.json
83
- .harness/knowledge/reports/judgements-<content-sha256>.json
84
- .harness/knowledge/reports/latest.json
85
- .harness/knowledge/views/knowledge-dashboard.md
86
- .harness/knowledge/views/by-file.md
87
- .harness/knowledge/views/stale-items.md
88
- .harness/knowledge/views/superseded-items.md
89
- .harness/knowledge/views/conflicted-items.md
90
- .harness/knowledge/views/active-review.md
91
- .harness/knowledge/views/knowledge.base
92
- .harness/knowledge/context-packs/*.md
93
- ```
94
-
95
- ## Commands
96
-
97
- `<skill-dir>` 指本 skill 目录。所有 python 脚本命令通过 `powershell.exe -Command "..."` 执行。完整命令示例与 config.json 配置见 `reference.md`「Commands 详细」。
98
-
99
- | 命令 | 用途 |
100
- |---|---|
101
- | 无参数 / `auto` | 一键防腐:首建 config、sync --update、**默认**写回 validator 建议、verify、audit;随后由 **Agent** 执行 judge 闭环 |
102
- | `status` | 严格只读地返回 freshness 与 health |
103
- | `repair all` | 修复可证明的 legacy gate、归一化重复、冲突与报告保留;不确定项返回 `needsConfirmation` |
104
- | `ingest` | 重建/刷新知识索引,抽取 candidate;`--no-incremental` 强制全量重抽取 |
105
- | `sync --check` | 只读检查 index 与 archive/HEAD 一致性;`--update` 自动刷新 |
106
- | `promote` | candidate→active(显式 promote 或 autoPromote / judge 触发) |
107
- | `demote` | active→stale/candidate(显式 demote 或自动降级策略触发) |
108
- | `audit` | 生成 Candidate/Stale/Superseded/Conflict/Active Review 报告 |
109
- | `verify` | 执行 entry validators,刷新 lifecycle.validation,生成 verification-report |
110
- | `suggest-validators` | 生成 file_exists/file_contains validator 建议;`--apply` 写回 entry |
111
- | `admin <旧命令>` | 旧管理命令兼容入口 |
112
- | `mcp` | FastMCP stdio 入口,暴露 9 个工具(见 reference.md) |
113
-
114
- config.json 配置项(autoPromote / confidence / activeLifecycle / knowledgeValidation)详见 `reference.md`「Commands 详细」。
115
-
116
- ## Workflow
117
-
118
- ### Phase 0:确认项目根目录
119
-
120
- 项目根目录必须包含 `.harness/`。如果 `.harness/archive/` 不存在或没有 `summary-data.json`,报告当前项目暂无可索引归档,不要伪造知识。
121
-
122
- ### Phase 1:重建本地知识索引
123
-
124
- 运行:
125
-
126
- ```powershell
127
- powershell.exe -Command "python '<skill-dir>\scripts\harness_knowledge.py' ingest --project '<project-root>'"
128
- ```
129
-
130
- 生成:
131
-
132
- - `index.json`:人类可读 manifest。
133
- - `index.sqlite`:SQLite FTS5 检索索引。
134
- - `entries/candidate/`:自动抽取、待确认知识。
135
- - `entries/stale/`:来源 commit 缺失、无法比较,或来源 commit 后相关文件变化的知识。
136
- - `entries/active/`:人工确认后可长期引用的知识。
137
- - `views/`:Obsidian 友好的浏览视图。
138
- - `reports/`:本次 ingest 报告。
139
-
140
- ### Phase 2:一键 auto(推荐入口)
36
+ 1. `harness-archive` 的 finalize 生成确定性 ZIP,并调用:
141
37
 
142
38
  ```powershell
143
- powershell.exe -Command "python '<skill-dir>\scripts\harness_knowledge.py' auto --project '<project-root>'"
39
+ powershell.exe -Command "npx hunter-harness archive upload --file '<archive.zip>' --change-key '<change-key>' --yes --non-interactive --json"
144
40
  ```
145
41
 
146
- 不传子命令时等价于 `auto`。`auto` 输出必须分别报告:
147
-
148
- - `freshness`:archive、HEAD、manifest、entry、SQLite 是否一致。
149
- - `health`:各 lifecycle、publication、validation 与待裁决工作量。
42
+ 2. 检查响应中的包哈希、服务端保存状态和 `knowledge_status`。
43
+ 3. 只有服务端确认原 ZIP 已持久保存且知识状态为 ready,才删除本地待上传 ZIP。
44
+ 4. 上传或 ingest 失败时保留 ZIP 与失败收据;修复连接后重试同一个 ZIP,不重新拼散文件。
150
45
 
151
- `auto` 默认会写回确定性 validator 建议(`--no-apply-suggestions` 可关闭)。JSON 返回含 `lifecycle` 摘要(validatorsApplied、autoPromote、pendingAgentJudge 等)。
46
+ ## Ownership Rules
152
47
 
153
- ### Phase 3:Agent judge 闭环(auto 之后必须执行)
48
+ - 客户端:选择核心文件、生成稳定 manifest/ZIP、校验包哈希、上传与保留失败重试材料。
49
+ - 服务端:敏感信息扫描、ZIP 安全校验、原包持久化、解包、制品发布、知识 ingest、状态查询和下载恢复。
50
+ - 远端不可用:知识不可用;不得启动本地替代索引。
51
+ - 面向人的知识、提案、规则和说明默认使用中文。
154
52
 
155
- `lifecycle.pendingAgentJudge > 0`、存在 `pending-judge` outbox,或 `judge export` 的
156
- `counts.requiredDecisionCount > 0` 时:
157
-
158
- 1. `judge export`(或读 maintain 产出的 pending judgements)
159
- 2. Agent 读取 export JSON,按 `reference.md`「Agent judge 启发式」批量写 `reports/judge-decisions-<ts>.json`
160
- 3. `judge apply --apply <decisions.json>`(`knowledge.manualReview=true` 时需用户显式 `--force`)
161
- 4. 向用户输出 **已处理报告**(promoted/dropped/superseded/kept/skipped 计数 + 报告路径)
162
-
163
- **禁止**默认输出「请人工确认 N 条 candidate」类五步待办清单。拿不准的 candidate 保持 `candidate` 状态留待下轮,记入 `skippedCandidates` 即可。
164
-
165
- `pendingAgentJudge`/`requiredDecisionCount` 是完整待裁决总量;`previewCount` 才受
166
- `config.judge.maxCandidatesPerRun`(默认 100)限制。已被 publication gate 阻断的条目
167
- 只进入 `quarantinedCount`,不得混入 judge export。`defer` 必须保存证据指纹;来源、
168
- validator、冲突关系或 publication 证据变化后即使未到 `reviewAfter` 也重新进入裁决。
169
-
170
- ### Phase 4:同步检查(可选)
171
-
172
- ```powershell
173
- powershell.exe -Command "python '<skill-dir>\scripts\harness_knowledge.py' status --project '<project-root>'"
174
- ```
53
+ ## Forbidden Actions
175
54
 
176
- 当 `upToDate=false` 时,运行 `sync --update` 或重新 `auto`,再交给 `harness-knowledge-query` 查询。
177
-
178
- ### Phase 5:显式 promote/demote(例外路径)
179
-
180
- 仅在用户点名单条、或 `manualReview=true` 需人工确认时使用 `promote` / `demote`。日常归档后不要逐条人工复核。
181
-
182
- **发布门禁**:knowledge publication 与 archive release status 独立。promote / judge apply /
183
- autoPromote 校验 authoritative pointer/hash 与 `reportPipeline.sourceConsistency`;即使归档
184
- 最终状态为 WARN,只要知识来源一致也可发布,但保留 release advisory。旧归档只有在
185
- summary/hash/source commit 可独立证明时才自动生成 attestation;否则保持 quarantined 并
186
- 返回 `needsConfirmation`(详见 `reference.md`「发布门禁」)。
187
-
188
- ### Phase 6:解释同步结果
189
-
190
- 回复用户或交给后续 skill 前,应说明:
191
-
192
- - 索引是否最新。
193
- - 如需刷新,具体原因是 archive 增删、checksum 变化、sqlite 缺失,还是 HEAD 改变。
194
- - 本次是否自动刷新。
195
- - 当前 `active` / `candidate` / `stale` 的数量。
196
- - 分别报告 `freshness` 与 `health`,不要用一个 `status` 覆盖
197
- lifecycle/review/publication/validation 四个正交维度。
198
-
199
- ## Knowledge extraction rules
200
-
201
- - 优先读取归档显式 `knowledgeCandidates[]`;维护流水线、测试计数等
202
- `category=process-observation` 不进入长期知识。
203
- - Duplicate content 使用 Unicode、空白、标点与大小写归一化指纹,并在全量重建时迁移。
204
- - 冲突必须同时有相同实体、共享来源范围和双方证据;仅关键词相反不得判为冲突。
205
- - Keep project-local entries excluded from any global index unless explicitly selected.
206
- - Validate lifecycle relationships.
207
- - Default generated entries are `candidate`; only config-gated `autoPromote` may promote high-confidence long-lived entries to `active`.
208
- - Preserve provenance: every entry must include source archive, summary path, source commit, and source files when available.
209
- - Do not edit `.harness/archive/**` during ingest.
210
- - Do not copy secrets into `.harness/knowledge`.
211
-
212
- ## Lifecycle rules
213
-
214
- - `candidate`:自动抽取;高置信 + 白名单类型可由 autoPromote 提升;其余由 Agent judge 裁决或保持 candidate。
215
- - `active`:autoPromote、judge promote,或显式 promote 后可用。
216
- - `stale`:来源 commit 缺失、来源 commit 后相关文件变化,或当前代码无法证明旧结论仍有效。
217
- - `superseded`:被后续归档/决策取代。
218
- - `conflicted`:与另一条 active/candidate 知识冲突。
219
-
220
- ## Forbidden actions
221
-
222
- - auto_promote_candidate_knowledge_without_config_and_confidence_gate
223
- - erase_conflicts
224
- - include_project_local_by_default
225
- - mutate_archive_evidence
226
- - store_secrets
227
- - treat_stale_knowledge_as_current_fact
228
-
229
- ## Allowed capabilities
230
-
231
- - read
232
- - search
233
- - write_candidate_knowledge
234
- - write_active_knowledge_after_manual_confirmation
235
- - write_confidence_scores
236
- - auto_promote_high_confidence_knowledge_when_configured
237
- - agent_judge_knowledge_lifecycle
238
- - write_knowledge_index
239
- - write_obsidian_views
55
+ - build_or_refresh_local_knowledge
56
+ - write_dot_harness_knowledge
57
+ - upload_logs_reviews_tests_or_temp_files
58
+ - call_legacy_python_ingest
59
+ - treat_upload_acceptance_without_durable_status_as_success
60
+ - delete_pending_zip_after_failed_upload
240
61
 
241
62
  ## Verification
242
63
 
243
- skill 自带最小测试:
244
-
245
- ```powershell
246
- powershell.exe -Command "python 'harness\scripts\harness_test_runner.py' unittest --profile safe --tests-dir '<skill-dir>\tests' --timeout-seconds 300 --verbosity 1"
247
- ```
248
-
249
- 完成脚本修改后必须至少运行该测试。若在真实项目中验证,还应运行:
250
-
251
- ```powershell
252
- powershell.exe -Command "python '<skill-dir>\scripts\harness_knowledge.py' auto --project '<real-project-root>'"
253
- powershell.exe -Command "python '<skill-dir>\scripts\harness_knowledge.py' ingest --project '<real-project-root>'"
254
- powershell.exe -Command "python '<skill-dir>\scripts\harness_knowledge.py' suggest-validators --project '<real-project-root>' --limit 20"
255
- powershell.exe -Command "python '<skill-dir>\scripts\harness_knowledge.py' verify --project '<real-project-root>'"
256
- powershell.exe -Command "python '<skill-dir>\scripts\harness_knowledge.py' sync --project '<real-project-root>'"
257
- ```
258
-
259
- 并确认 `index.json`、`index.sqlite`、`views/knowledge-dashboard.md`、`reports/verification-report-*.md` 存在,且 sync 输出 `upToDate=true`。
64
+ 确认归档命令的 JSON 结果同时包含:服务端 package 哈希、保存状态和知识状态。
65
+ 若失败,确认 `.harness/state/local/archive-packages/` 中仍保留可重试 ZIP;若成功,确认
66
+ ZIP 已按收据策略清理,且平台下载接口可以恢复原包。
260
67
 
261
68
  ## P0 执行可信度规则
262
69
 
@@ -268,30 +75,7 @@ powershell.exe -Command "python '<skill-dir>\scripts\harness_knowledge.py' sync
268
75
 
269
76
  - sync/ingest 等生成的文档、规则、知识条目、架构说明一律**优先使用中文**撰写(标识符、命令、代码、API 字段名保持原文)
270
77
  - 面向平台展示的标题/摘要/正文默认中文;仅当用户明确要求或目标系统强制时才用英文
271
- > 片段:p0-trust · ingest/sync 须绑定 `upToDate`/产物路径证据
272
-
273
- ## Output Format
274
-
275
- 执行完成后展示:
276
-
277
- - 本次命令(ingest/sync/promote)与目标项目根。
278
- - `upToDate` 及 `reasons`(sync)或新增/覆盖条目数(ingest/promote)。
279
- - 当前 `active` / `candidate` / `stale` 数量统计。
280
- - 产物路径(`index.json`、`index.sqlite`、`views/`、`reports/`)。
281
- - `lifecycle` 摘要:`validatorsApplied`、`candidateAutoPromoted`、兼容整数
282
- `pendingAgentJudge`,以及
283
- `pendingAgentJudgeSummary.requiredDecisionCount/previewCount/quarantinedCount` 等。
284
- - validator 摘要:`eligible/selected/applied/remaining/unavailable`,不得只报告本轮抽样数。
285
- - **已处理报告**(auto + judge 后):promoted/dropped/superseded/kept/deferred/skipped 计数与 `reports/judge-decisions-*.json`、`judgements-*.json` 路径;人工判断还会追加到 `judgements/decisions.json`,后续 ingest 不得抹除。`defer` 必须带 `reviewAfter`,到期前不重复进入待判断清单。
286
- - 仅当 `upToDate=false` 时建议 `sync --update`;查询历史 → `/harness-knowledge-query`。**禁止**默认列出「请人工确认 N 条 candidate」待办。
287
-
288
- ## 渐进披露
289
-
290
- - **Read `reference.md`** 仅在执行命令或查阅 config.json 配置时 — 含 Commands 详细示例、config.json 配置与兼容说明。
291
-
292
- ## 交互白名单
293
-
294
- **仅当** `.harness/config/harness.json` 中 `knowledge.manualReview=true` 时,promote/demote 高价值条目需 blocking user confirmation;否则按 skill 默认策略 + `decision` 事件。
78
+ > 片段:p0-trust · 只有服务端持久化与 ingest 收据可证明知识已入库
295
79
 
296
80
  ## 执行日志
297
81
 
@@ -306,4 +90,4 @@ python <skills-root>/scripts/harness_events.py append --change-dir ".harness/cha
306
90
  > **Task 4 §6.1 写入契约**:普通 `append` = 加锁 -> 追加一行 -> fsync -> 解锁,**不 load 历史、不渲染**(O(1),跨进程锁 `events.ndjson.lock`,UUID 用完整 `uuid4().hex` 无需去重扫描)。仅 `--type phase.end` append 在追加成功后渲染一次 `execution-log.md`;显式 `harness_events.py render` 随时从完整 events 重建;`harness_archive.py finalize` 在 collect 前强制 render 一次。高频 command append 期间 log 可能滞后,phase 边界保持最新。
307
91
 
308
92
  每个阶段的 `phase.start` 与对应 `phase.end` 必须复用同一 `--run-id` / `--attempt`;阶段结束必须写 `--status OK|WARN|FAIL|BLOCKED`。重试同一阶段时生成新的 run-id 并增加 `--attempt <n>`,不得覆盖或伪装成一次执行。跨工具继续执行时写 `--executor-tool <codex|claude-code|codebuddy|cursor>`,并在接棒事件写 `--handoff-from-tool` / `--handoff-reason`;也可由 `HUNTER_HARNESS_TOOL/AGENT/MODEL/RUN_ID` 环境变量统一注入。
309
- > 片段:logging · phase=`knowledge-ingest` · 默认控制台报告;变更上下文写 phase/decision/issue/artifact
93
+ > 片段:logging · phase=`knowledge-ingest` · 记录 package hash、服务端状态与失败重试路径
@@ -1,133 +1,69 @@
1
1
  ---
2
2
  name: harness-knowledge-query
3
- description: "根据新需求、设计任务、代码修改请求或问题排查,在规划和编码前查询 .harness/knowledge 历史上下文。适用场景:query knowledge、查找历史需求、根据归档理解需求、继续之前类似开发、生成需求上下文包。"
4
- argument-hint: "<需求文本> [--file <path>] [--status active|candidate|stale]"
5
- effort: medium
6
- allowed-tools: [Bash(powershell.exe:*), Read, Write, Edit, Glob, Grep]
3
+ description: "在规划、实现或排查前,通过 hunter-harness CLI 查询远端项目知识库。远端不可用时直接报告不可用,不建立本地索引或离线回退。"
4
+ argument-hint: "<需求或问题原文> [--limit <n>]"
5
+ effort: low
6
+ allowed-tools: [Bash(powershell.exe:*), Read, Glob, Grep]
7
7
  disallowed-tools:
8
8
  - Bash(git *)
9
- - Bash(mvn *)
10
- - Bash(ls *)
11
- - Bash(find *)
12
- - Bash(grep *)
13
- - Bash(cat *)
14
- - Bash(cp *)
15
- - Bash(mv *)
16
- - Bash(rm *)
17
- - Bash(mkdir *)
18
- - Bash(touch *)
19
- - Bash(sed *)
20
- - Bash(awk *)
21
9
  - Bash(curl *)
22
10
  ---
23
- <!-- generated by harness_deploy.py; core=6b900d319d6b6d77; overlay=none; agent=claude-code; do not edit -->
11
+ <!-- generated by harness_deploy.py; core=bde20b36d56b03f4; overlay=none; agent=claude-code; do not edit -->
24
12
  # harness-knowledge-query
25
13
 
26
- 并行 change 中查询必须传 `--change <change-id>`;成功后以该 change 的 `meta/knowledge-context.json` 为稳定指针。全局 `context-packs/latest.json` 仅向后兼容,不得用于判断多个 active change 的上下文归属。
14
+ 项目知识以 Hunter Platform 的服务端索引为唯一真源。客户端只提交查询并消费结果:
27
15
 
28
- 根据用户的新需求或排查问题检索历史需求、决策、实现、风险和测试证据,并生成 AI 可读的 context pack。
16
+ - 不创建或读取 `.harness/knowledge`;
17
+ - 不运行本地 Python ingest、SQLite、FTS 或 context-pack 脚本;
18
+ - 不在网络或服务不可用时回退到本地归档;
19
+ - 查询失败只记录“本轮无远端知识”,后续工作必须依靠当前代码和用户提供的信息。
29
20
 
30
- ## 远程优先 / 离线回退
31
-
32
- 1. **默认(已 `hunter-harness connect`)**:优先查询平台语义知识库(与 ingest 上传 + 服务端裁决结果一致);多机/多人共享同一裁决结果。
33
- 2. **离线回退**:无凭据、网络失败或平台不可用时,回退到本地 `.harness/knowledge`(SQLite FTS / 条目文件)。
34
- 3. 此 skill 只负责查询和使用知识。整理与上传由 `harness-knowledge-ingest` + push/归档负责;**不要**在已连接平台时把本地 promote 当作共享真源。
21
+ 所有面向人的总结默认使用中文,代码标识符和原始路径保持原样。
35
22
 
36
23
  ## Triggers
37
24
 
38
- - query knowledge
39
- - knowledge query
40
- - 查找相关历史需求
41
- - 根据历史归档理解这个需求
25
+ - query knowledge / knowledge query
26
+ - 查询历史需求、决策或实现经验
42
27
  - 结合之前做过的内容
43
- - 继续之前类似开发
44
- - 生成需求上下文包
45
- - 在规划前查历史
46
-
47
- ## Automatic Use
48
-
49
- 当用户提出新功能、改造、排查、设计方案、继续历史任务,且项目存在平台连接或 `.harness/archive` / `.harness/knowledge` 时,AI 应主动运行本 skill,不需要等用户提醒。
50
-
51
- 不在 query 前单独执行 sync。`query` 命令内部执行一次 ensure-current:建立一次当前快照,索引新鲜时无操作,过期或缺失时只构建一次,然后在同一调用内完成查询(离线路径)。
28
+ - 规划或排查前读取项目知识
52
29
 
53
- ## Commands
30
+ ## Command
54
31
 
55
- `<ingest-skill-dir>` 指同级 `harness-knowledge-ingest/` 目录;查询逻辑复用其脚本。所有 python 脚本命令通过 `powershell.exe -Command "..."` 执行,避开 Bash 在 Windows 中文路径下的编码/参数问题。
56
-
57
- ### Query by requirement
32
+ 在项目根目录执行一次:
58
33
 
59
34
  ```powershell
60
- powershell.exe -Command "python '<ingest-skill-dir>\scripts\harness_knowledge.py' query --project '<project-root>' --query '<用户需求原文>'"
35
+ powershell.exe -Command "npx hunter-harness knowledge query '<用户需求原文>' --limit 10 --json"
61
36
  ```
62
37
 
63
- 已连接平台时,优先使用平台语义搜索(CLI/`hunter-harness` 知识查询路径,若可用);上述本地命令作为离线回退。
64
-
65
- ### Query with metadata filters
66
-
67
- ```powershell
68
- powershell.exe -Command "python '<ingest-skill-dir>\scripts\harness_knowledge.py' query --project '<project-root>' --query '<需求或关键词>' --file '<source-file>' --status active"
69
- ```
70
-
71
- 可重复使用:
72
-
73
- - `--file <path>`:只返回关联到指定文件的知识。
74
- - `--status active|candidate|stale|superseded|conflicted`:按生命周期过滤(远程路径通常已排除 deprecated)。
75
- - `--type requirement|decision|implementation|risk|test-evidence|pitfall|api-contract`:按知识类型过滤。
76
- - `--limit <n>`:限制返回数量。
38
+ 只允许通过 CLI 访问平台,不得直接拼接 HTTP 请求,也不得调用旧的
39
+ 本地知识查询脚本(该脚本已从当前分发包移除)。
77
40
 
78
41
  ## Workflow
79
42
 
80
- 1. 确认项目根目录。
81
- 2. 用用户原始需求执行一次 `query`;query 命令内部执行一次 ensure-current。
82
- 3. 如已知道相关文件,在同一次查询中追加 `--file` 过滤。
83
- 4. 读取 JSON 输出中的 `contextPack`。
84
- 5. `harness-plan`、设计、代码探索或实现前,把 context pack 当作必读输入。
43
+ 1. 原样保留用户的需求或问题作为查询文本;已知范围较大时可将关键模块名一并放入文本。
44
+ 2. 执行一次远端查询,不在查询前重建或同步知识。
45
+ 3. 读取 JSON 中的命中项、来源路径、变更键和相关度。
46
+ 4. 把命中内容作为历史线索;涉及当前行为时仍以当前代码和验证结果为准。
47
+ 5. 若命令返回远端不可达、未绑定或未认证,记录明确 issue 后继续,不重试本地方案。
85
48
 
86
49
  ## Output Contract
87
50
 
88
- 查询输出 JSON 包含:
89
-
90
- - `matchCount`
91
- - `contextPack`
92
- - `filters`
93
- - `planInput`
94
- - `matches`
95
-
96
- `planInput.kind` 必须为 `harness-knowledge-context-pack`。后续 `harness-plan` 应读取 `planInput.path`。
97
-
98
- 每次查询还会更新稳定指针:
99
-
100
- ```text
101
- .harness/knowledge/context-packs/latest.json
102
- ```
103
-
104
- 该文件包含最新 query、context pack 路径和 `matchIds`,供后续流程快速读取最近一次知识上下文。
51
+ 必须说明:
105
52
 
106
- ## Interpretation Rules
107
-
108
- - `active`:可优先采用,但仍要结合当前代码验证。
109
- - `candidate`:有参考价值,不是当前事实。
110
- - `stale`:只能作为历史线索,必须重新检查代码和归档。
111
- - `superseded` / `conflicted`:必须显式提示风险,不得静默采用。
53
+ - 查询文本与 limit;
54
+ - 是否成功访问远端;
55
+ - 命中数量及最相关来源;
56
+ - 远端不可用时,明确写“未使用本地回退”;
57
+ - 下一步是进入规划/实现,还是先核对当前代码。
112
58
 
113
59
  ## Forbidden Actions
114
60
 
115
- - rebuild_index_without_need
116
- - pre_sync_before_query
117
- - query_then_sync_then_query_again
118
- - treat_candidate_as_current_fact
119
- - treat_stale_as_current_fact
120
- - skip_context_pack_before_planning
121
- - copy_large_archive_content_into_prompt
122
-
123
- ## Verification
124
-
125
- ```powershell
126
- powershell.exe -Command "python -m unittest '<ingest-skill-dir>\tests\test_harness_knowledge.py'"
127
- powershell.exe -Command "python '<ingest-skill-dir>\scripts\harness_knowledge.py' query --project '<real-project-root>' --query '<真实需求>'"
128
- ```
129
-
130
- 确认输出中存在 `contextPack`、`planInput.kind=harness-knowledge-context-pack`,且 context pack 文件包含 `Before planning`。
61
+ - create_local_knowledge_index
62
+ - query_local_sqlite_or_archive_as_fallback
63
+ - generate_local_context_pack
64
+ - retry_with_legacy_python_knowledge_script
65
+ - treat_remote_history_as_current_code_fact
66
+ - copy_secrets_into_query
131
67
 
132
68
  ## P0 执行可信度规则
133
69
 
@@ -139,25 +75,7 @@ powershell.exe -Command "python '<ingest-skill-dir>\scripts\harness_knowledge.py
139
75
 
140
76
  - sync/ingest 等生成的文档、规则、知识条目、架构说明一律**优先使用中文**撰写(标识符、命令、代码、API 字段名保持原文)
141
77
  - 面向平台展示的标题/摘要/正文默认中文;仅当用户明确要求或目标系统强制时才用英文
142
- > 片段:p0-trust · query 成功须含 `contextPack`/`planInput.kind` 与 `latest.json` 写入
143
-
144
- ## Output Format
145
-
146
- 执行完成后展示:
147
-
148
- - 用户需求原文与生效的过滤条件(`--file`/`--status`/`--type`/`--limit`)。
149
- - `matchCount` 与按状态分组的命中数(active/candidate/stale/superseded/conflicted)。
150
- - `contextPack` 路径与 `latest.json` 指针。
151
- - 命中 stale/superseded/conflicted 时显式提示风险。
152
- - 下一步建议(context pack 已就绪 → 进入 `/harness-plan`;ensure-current 失败 → 报告具体 issue,不重复同步或查询)。
153
-
154
- ## 渐进披露
155
-
156
- - 本 skill 暂无 `checklist.md` / `reference.md` 支持文件,规则全部在 SKILL.md。若 Output Contract / Interpretation Rules 后续扩展变重,应拆到 `reference.md`。
157
-
158
- ## 交互白名单
159
-
160
- **无** blocking user confirmation;`stale`/`conflicted` 命中记 `issue`,不阻断 query。
78
+ > 片段:p0-trust · 远端查询成功必须有 CLI JSON 证据;失败不得伪装为已读取历史
161
79
 
162
80
  ## 执行日志
163
81
 
@@ -172,4 +90,4 @@ python <skills-root>/scripts/harness_events.py append --change-dir ".harness/cha
172
90
  > **Task 4 §6.1 写入契约**:普通 `append` = 加锁 -> 追加一行 -> fsync -> 解锁,**不 load 历史、不渲染**(O(1),跨进程锁 `events.ndjson.lock`,UUID 用完整 `uuid4().hex` 无需去重扫描)。仅 `--type phase.end` append 在追加成功后渲染一次 `execution-log.md`;显式 `harness_events.py render` 随时从完整 events 重建;`harness_archive.py finalize` 在 collect 前强制 render 一次。高频 command append 期间 log 可能滞后,phase 边界保持最新。
173
91
 
174
92
  每个阶段的 `phase.start` 与对应 `phase.end` 必须复用同一 `--run-id` / `--attempt`;阶段结束必须写 `--status OK|WARN|FAIL|BLOCKED`。重试同一阶段时生成新的 run-id 并增加 `--attempt <n>`,不得覆盖或伪装成一次执行。跨工具继续执行时写 `--executor-tool <codex|claude-code|codebuddy|cursor>`,并在接棒事件写 `--handoff-from-tool` / `--handoff-reason`;也可由 `HUNTER_HARNESS_TOOL/AGENT/MODEL/RUN_ID` 环境变量统一注入。
175
- > 片段:logging · phase=`knowledge-query` · 独立运行时控制台报告;变更上下文写 decision/issue/artifact
93
+ > 片段:logging · phase=`knowledge-query` · 成功记录命中摘要,失败记录远端错误码且不做本地回退