@hunter-harness/workflow-harness 0.2.50 → 0.2.51
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.
- package/harness/bundles/general/claude-code/.harness-build.json +1 -1
- package/harness/bundles/general/claude-code/README.md +4 -4
- package/harness/bundles/general/claude-code/harness-archive/SKILL.md +6 -6
- package/harness/bundles/general/claude-code/harness-codebase-map/SKILL.md +1 -1
- package/harness/bundles/general/claude-code/harness-knowledge-ingest/SKILL.md +42 -258
- package/harness/bundles/general/claude-code/harness-knowledge-query/SKILL.md +38 -120
- package/harness/bundles/general/claude-code/harness-plan/SKILL.md +4 -4
- package/harness/bundles/general/claude-code/harness-plan/checklist.md +2 -2
- package/harness/bundles/general/claude-code/harness-review/SKILL.md +2 -2
- package/harness/bundles/general/claude-code/harness-run/SKILL.md +2 -2
- package/harness/bundles/general/claude-code/harness-submit/SKILL.md +2 -2
- package/harness/bundles/general/claude-code/harness-sync/SKILL.md +7 -7
- package/harness/bundles/general/claude-code/harness-sync/reference.md +18 -11
- package/harness/bundles/general/claude-code/harness-test/SKILL.md +2 -2
- package/harness/bundles/general/claude-code/protocols/archive-report-protocol.md +5 -7
- package/harness/bundles/general/claude-code/protocols/state-layout-protocol.md +17 -11
- package/harness/bundles/general/claude-code/scripts/harness_archive.py +748 -200
- package/harness/bundles/general/claude-code/scripts/harness_profile.py +0 -1
- package/harness/bundles/general/claude-code/scripts/harness_state.py +3 -5
- package/harness/bundles/general/codebuddy/.harness-build.json +1 -1
- package/harness/bundles/general/codebuddy/README.md +4 -4
- package/harness/bundles/general/codebuddy/harness-archive/SKILL.md +6 -6
- package/harness/bundles/general/codebuddy/harness-codebase-map/SKILL.md +1 -1
- package/harness/bundles/general/codebuddy/harness-knowledge-ingest/SKILL.md +39 -244
- package/harness/bundles/general/codebuddy/harness-knowledge-query/SKILL.md +35 -106
- package/harness/bundles/general/codebuddy/harness-plan/SKILL.md +4 -4
- package/harness/bundles/general/codebuddy/harness-plan/checklist.md +2 -2
- package/harness/bundles/general/codebuddy/harness-review/SKILL.md +2 -2
- package/harness/bundles/general/codebuddy/harness-run/SKILL.md +2 -2
- package/harness/bundles/general/codebuddy/harness-submit/SKILL.md +2 -2
- package/harness/bundles/general/codebuddy/harness-sync/SKILL.md +8 -8
- package/harness/bundles/general/codebuddy/harness-sync/reference.md +18 -11
- package/harness/bundles/general/codebuddy/harness-test/SKILL.md +2 -2
- package/harness/bundles/general/codebuddy/protocols/archive-report-protocol.md +5 -7
- package/harness/bundles/general/codebuddy/protocols/state-layout-protocol.md +17 -11
- package/harness/bundles/general/codebuddy/scripts/harness_archive.py +748 -200
- package/harness/bundles/general/codebuddy/scripts/harness_profile.py +0 -1
- package/harness/bundles/general/codebuddy/scripts/harness_state.py +3 -5
- package/harness/bundles/general/codex/.harness-build.json +1 -1
- package/harness/bundles/general/codex/README.md +4 -4
- package/harness/bundles/general/codex/harness-archive/SKILL.md +6 -6
- package/harness/bundles/general/codex/harness-codebase-map/SKILL.md +1 -1
- package/harness/bundles/general/codex/harness-knowledge-ingest/SKILL.md +39 -244
- package/harness/bundles/general/codex/harness-knowledge-query/SKILL.md +35 -106
- package/harness/bundles/general/codex/harness-plan/SKILL.md +4 -4
- package/harness/bundles/general/codex/harness-plan/checklist.md +2 -2
- package/harness/bundles/general/codex/harness-review/SKILL.md +2 -2
- package/harness/bundles/general/codex/harness-run/SKILL.md +2 -2
- package/harness/bundles/general/codex/harness-submit/SKILL.md +2 -2
- package/harness/bundles/general/codex/harness-sync/SKILL.md +8 -8
- package/harness/bundles/general/codex/harness-sync/reference.md +18 -11
- package/harness/bundles/general/codex/harness-test/SKILL.md +2 -2
- package/harness/bundles/general/codex/protocols/archive-report-protocol.md +5 -7
- package/harness/bundles/general/codex/protocols/state-layout-protocol.md +17 -11
- package/harness/bundles/general/codex/scripts/harness_archive.py +748 -200
- package/harness/bundles/general/codex/scripts/harness_profile.py +0 -1
- package/harness/bundles/general/codex/scripts/harness_state.py +3 -5
- package/harness/bundles/general/cursor/.harness-build.json +1 -1
- package/harness/bundles/general/cursor/README.md +4 -4
- package/harness/bundles/general/cursor/harness-archive/SKILL.md +6 -6
- package/harness/bundles/general/cursor/harness-codebase-map/SKILL.md +1 -1
- package/harness/bundles/general/cursor/harness-knowledge-ingest/SKILL.md +39 -244
- package/harness/bundles/general/cursor/harness-knowledge-query/SKILL.md +35 -106
- package/harness/bundles/general/cursor/harness-plan/SKILL.md +4 -4
- package/harness/bundles/general/cursor/harness-plan/checklist.md +2 -2
- package/harness/bundles/general/cursor/harness-review/SKILL.md +2 -2
- package/harness/bundles/general/cursor/harness-run/SKILL.md +2 -2
- package/harness/bundles/general/cursor/harness-submit/SKILL.md +2 -2
- package/harness/bundles/general/cursor/harness-sync/SKILL.md +8 -8
- package/harness/bundles/general/cursor/harness-sync/reference.md +18 -11
- package/harness/bundles/general/cursor/harness-test/SKILL.md +2 -2
- package/harness/bundles/general/cursor/protocols/archive-report-protocol.md +5 -7
- package/harness/bundles/general/cursor/protocols/state-layout-protocol.md +17 -11
- package/harness/bundles/general/cursor/scripts/harness_archive.py +748 -200
- package/harness/bundles/general/cursor/scripts/harness_profile.py +0 -1
- package/harness/bundles/general/cursor/scripts/harness_state.py +3 -5
- package/harness/bundles/java/claude-code/.harness-build.json +1 -1
- package/harness/bundles/java/claude-code/README.md +4 -4
- package/harness/bundles/java/claude-code/harness-apidoc/SKILL.md +2 -2
- package/harness/bundles/java/claude-code/harness-archive/SKILL.md +6 -6
- package/harness/bundles/java/claude-code/harness-codebase-map/SKILL.md +1 -1
- package/harness/bundles/java/claude-code/harness-knowledge-ingest/SKILL.md +42 -258
- package/harness/bundles/java/claude-code/harness-knowledge-query/SKILL.md +38 -120
- package/harness/bundles/java/claude-code/harness-package/SKILL.md +2 -2
- package/harness/bundles/java/claude-code/harness-plan/SKILL.md +4 -4
- package/harness/bundles/java/claude-code/harness-plan/checklist.md +2 -2
- package/harness/bundles/java/claude-code/harness-review/SKILL.md +2 -2
- package/harness/bundles/java/claude-code/harness-run/SKILL.md +2 -2
- package/harness/bundles/java/claude-code/harness-submit/SKILL.md +2 -2
- package/harness/bundles/java/claude-code/harness-sync/SKILL.md +7 -7
- package/harness/bundles/java/claude-code/harness-sync/reference.md +18 -11
- package/harness/bundles/java/claude-code/harness-test/SKILL.md +2 -2
- package/harness/bundles/java/claude-code/protocols/archive-report-protocol.md +5 -7
- package/harness/bundles/java/claude-code/protocols/state-layout-protocol.md +17 -11
- package/harness/bundles/java/claude-code/scripts/harness_archive.py +748 -200
- package/harness/bundles/java/claude-code/scripts/harness_profile.py +0 -1
- package/harness/bundles/java/claude-code/scripts/harness_state.py +3 -5
- package/harness/bundles/java/codebuddy/.harness-build.json +1 -1
- package/harness/bundles/java/codebuddy/README.md +4 -4
- package/harness/bundles/java/codebuddy/harness-apidoc/SKILL.md +2 -2
- package/harness/bundles/java/codebuddy/harness-archive/SKILL.md +6 -6
- package/harness/bundles/java/codebuddy/harness-codebase-map/SKILL.md +1 -1
- package/harness/bundles/java/codebuddy/harness-knowledge-ingest/SKILL.md +39 -244
- package/harness/bundles/java/codebuddy/harness-knowledge-query/SKILL.md +35 -106
- package/harness/bundles/java/codebuddy/harness-package/SKILL.md +2 -2
- package/harness/bundles/java/codebuddy/harness-plan/SKILL.md +4 -4
- package/harness/bundles/java/codebuddy/harness-plan/checklist.md +2 -2
- package/harness/bundles/java/codebuddy/harness-review/SKILL.md +2 -2
- package/harness/bundles/java/codebuddy/harness-run/SKILL.md +2 -2
- package/harness/bundles/java/codebuddy/harness-submit/SKILL.md +2 -2
- package/harness/bundles/java/codebuddy/harness-sync/SKILL.md +8 -8
- package/harness/bundles/java/codebuddy/harness-sync/reference.md +18 -11
- package/harness/bundles/java/codebuddy/harness-test/SKILL.md +2 -2
- package/harness/bundles/java/codebuddy/protocols/archive-report-protocol.md +5 -7
- package/harness/bundles/java/codebuddy/protocols/state-layout-protocol.md +17 -11
- package/harness/bundles/java/codebuddy/scripts/harness_archive.py +748 -200
- package/harness/bundles/java/codebuddy/scripts/harness_profile.py +0 -1
- package/harness/bundles/java/codebuddy/scripts/harness_state.py +3 -5
- package/harness/bundles/java/codex/.harness-build.json +1 -1
- package/harness/bundles/java/codex/README.md +4 -4
- package/harness/bundles/java/codex/harness-apidoc/SKILL.md +2 -2
- package/harness/bundles/java/codex/harness-archive/SKILL.md +6 -6
- package/harness/bundles/java/codex/harness-codebase-map/SKILL.md +1 -1
- package/harness/bundles/java/codex/harness-knowledge-ingest/SKILL.md +39 -244
- package/harness/bundles/java/codex/harness-knowledge-query/SKILL.md +35 -106
- package/harness/bundles/java/codex/harness-package/SKILL.md +2 -2
- package/harness/bundles/java/codex/harness-plan/SKILL.md +4 -4
- package/harness/bundles/java/codex/harness-plan/checklist.md +2 -2
- package/harness/bundles/java/codex/harness-review/SKILL.md +2 -2
- package/harness/bundles/java/codex/harness-run/SKILL.md +2 -2
- package/harness/bundles/java/codex/harness-submit/SKILL.md +2 -2
- package/harness/bundles/java/codex/harness-sync/SKILL.md +8 -8
- package/harness/bundles/java/codex/harness-sync/reference.md +18 -11
- package/harness/bundles/java/codex/harness-test/SKILL.md +2 -2
- package/harness/bundles/java/codex/protocols/archive-report-protocol.md +5 -7
- package/harness/bundles/java/codex/protocols/state-layout-protocol.md +17 -11
- package/harness/bundles/java/codex/scripts/harness_archive.py +748 -200
- package/harness/bundles/java/codex/scripts/harness_profile.py +0 -1
- package/harness/bundles/java/codex/scripts/harness_state.py +3 -5
- package/harness/bundles/java/cursor/.harness-build.json +1 -1
- package/harness/bundles/java/cursor/README.md +4 -4
- package/harness/bundles/java/cursor/harness-apidoc/SKILL.md +2 -2
- package/harness/bundles/java/cursor/harness-archive/SKILL.md +6 -6
- package/harness/bundles/java/cursor/harness-codebase-map/SKILL.md +1 -1
- package/harness/bundles/java/cursor/harness-knowledge-ingest/SKILL.md +39 -244
- package/harness/bundles/java/cursor/harness-knowledge-query/SKILL.md +35 -106
- package/harness/bundles/java/cursor/harness-package/SKILL.md +2 -2
- package/harness/bundles/java/cursor/harness-plan/SKILL.md +4 -4
- package/harness/bundles/java/cursor/harness-plan/checklist.md +2 -2
- package/harness/bundles/java/cursor/harness-review/SKILL.md +2 -2
- package/harness/bundles/java/cursor/harness-run/SKILL.md +2 -2
- package/harness/bundles/java/cursor/harness-submit/SKILL.md +2 -2
- package/harness/bundles/java/cursor/harness-sync/SKILL.md +8 -8
- package/harness/bundles/java/cursor/harness-sync/reference.md +18 -11
- package/harness/bundles/java/cursor/harness-test/SKILL.md +2 -2
- package/harness/bundles/java/cursor/protocols/archive-report-protocol.md +5 -7
- package/harness/bundles/java/cursor/protocols/state-layout-protocol.md +17 -11
- package/harness/bundles/java/cursor/scripts/harness_archive.py +748 -200
- package/harness/bundles/java/cursor/scripts/harness_profile.py +0 -1
- package/harness/bundles/java/cursor/scripts/harness_state.py +3 -5
- package/harness/manifests/general/claude-code.json +21 -45
- package/harness/manifests/general/codebuddy.json +21 -45
- package/harness/manifests/general/codex.json +21 -45
- package/harness/manifests/general/cursor.json +21 -45
- package/harness/manifests/java/claude-code.json +23 -47
- package/harness/manifests/java/codebuddy.json +23 -47
- package/harness/manifests/java/codex.json +23 -47
- package/harness/manifests/java/cursor.json +23 -47
- package/hunter-workflow-family.json +4 -4
- package/package.json +1 -1
- package/harness/bundles/general/claude-code/harness-knowledge-ingest/design.md +0 -842
- package/harness/bundles/general/claude-code/harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml +0 -42
- package/harness/bundles/general/claude-code/harness-knowledge-ingest/mcp-config.example.json +0 -10
- package/harness/bundles/general/claude-code/harness-knowledge-ingest/reference.md +0 -413
- package/harness/bundles/general/claude-code/harness-knowledge-ingest/scripts/harness_knowledge.py +0 -7263
- package/harness/bundles/general/claude-code/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +0 -275
- package/harness/bundles/general/codebuddy/harness-knowledge-ingest/design.md +0 -842
- package/harness/bundles/general/codebuddy/harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml +0 -42
- package/harness/bundles/general/codebuddy/harness-knowledge-ingest/mcp-config.example.json +0 -10
- package/harness/bundles/general/codebuddy/harness-knowledge-ingest/reference.md +0 -413
- package/harness/bundles/general/codebuddy/harness-knowledge-ingest/scripts/harness_knowledge.py +0 -7263
- package/harness/bundles/general/codebuddy/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +0 -275
- package/harness/bundles/general/codex/harness-knowledge-ingest/design.md +0 -842
- package/harness/bundles/general/codex/harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml +0 -42
- package/harness/bundles/general/codex/harness-knowledge-ingest/mcp-config.example.json +0 -10
- package/harness/bundles/general/codex/harness-knowledge-ingest/reference.md +0 -413
- package/harness/bundles/general/codex/harness-knowledge-ingest/scripts/harness_knowledge.py +0 -7263
- package/harness/bundles/general/codex/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +0 -275
- package/harness/bundles/general/cursor/harness-knowledge-ingest/design.md +0 -842
- package/harness/bundles/general/cursor/harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml +0 -42
- package/harness/bundles/general/cursor/harness-knowledge-ingest/mcp-config.example.json +0 -10
- package/harness/bundles/general/cursor/harness-knowledge-ingest/reference.md +0 -413
- package/harness/bundles/general/cursor/harness-knowledge-ingest/scripts/harness_knowledge.py +0 -7263
- package/harness/bundles/general/cursor/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +0 -275
- package/harness/bundles/java/claude-code/harness-knowledge-ingest/design.md +0 -842
- package/harness/bundles/java/claude-code/harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml +0 -42
- package/harness/bundles/java/claude-code/harness-knowledge-ingest/mcp-config.example.json +0 -10
- package/harness/bundles/java/claude-code/harness-knowledge-ingest/reference.md +0 -413
- package/harness/bundles/java/claude-code/harness-knowledge-ingest/scripts/harness_knowledge.py +0 -7263
- package/harness/bundles/java/claude-code/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +0 -275
- package/harness/bundles/java/codebuddy/harness-knowledge-ingest/design.md +0 -842
- package/harness/bundles/java/codebuddy/harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml +0 -42
- package/harness/bundles/java/codebuddy/harness-knowledge-ingest/mcp-config.example.json +0 -10
- package/harness/bundles/java/codebuddy/harness-knowledge-ingest/reference.md +0 -413
- package/harness/bundles/java/codebuddy/harness-knowledge-ingest/scripts/harness_knowledge.py +0 -7263
- package/harness/bundles/java/codebuddy/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +0 -275
- package/harness/bundles/java/codex/harness-knowledge-ingest/design.md +0 -842
- package/harness/bundles/java/codex/harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml +0 -42
- package/harness/bundles/java/codex/harness-knowledge-ingest/mcp-config.example.json +0 -10
- package/harness/bundles/java/codex/harness-knowledge-ingest/reference.md +0 -413
- package/harness/bundles/java/codex/harness-knowledge-ingest/scripts/harness_knowledge.py +0 -7263
- package/harness/bundles/java/codex/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +0 -275
- package/harness/bundles/java/cursor/harness-knowledge-ingest/design.md +0 -842
- package/harness/bundles/java/cursor/harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml +0 -42
- package/harness/bundles/java/cursor/harness-knowledge-ingest/mcp-config.example.json +0 -10
- package/harness/bundles/java/cursor/harness-knowledge-ingest/reference.md +0 -413
- package/harness/bundles/java/cursor/harness-knowledge-ingest/scripts/harness_knowledge.py +0 -7263
- package/harness/bundles/java/cursor/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +0 -275
|
@@ -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,
|
|
60
|
-
| harness-knowledge-ingest | `[Bash(powershell.exe:*), Read,
|
|
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` |
|
|
231
|
-
| harness-knowledge-ingest | `/harness-knowledge-ingest` |
|
|
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=
|
|
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/
|
|
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
|
|
122
|
-
-
|
|
123
|
-
|
|
124
|
-
|
|
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=
|
|
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: "
|
|
4
|
-
argument-hint: "
|
|
5
|
-
effort:
|
|
6
|
-
allowed-tools: [Bash(powershell.exe:*), Read,
|
|
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=
|
|
11
|
+
<!-- generated by harness_deploy.py; core=bde20b36d56b03f4; overlay=none; agent=claude-code; do not edit -->
|
|
24
12
|
# harness-knowledge-ingest
|
|
25
13
|
|
|
26
|
-
|
|
14
|
+
知识 ingest 完全由 Hunter Platform 负责。归档完成时,客户端生成一个确定性 ZIP;
|
|
15
|
+
服务端收到后保存原包、安全解包、发布核心文件,并根据其中的 Markdown 与摘要重建
|
|
16
|
+
项目语义索引。
|
|
27
17
|
|
|
28
|
-
|
|
18
|
+
客户端不得生成 `.harness/knowledge`、SQLite 索引、候选条目、视图、报告或本地裁决。
|
|
19
|
+
本地知识处理脚本已从分发包移除;历史版本数据只由升级兼容逻辑识别,不再执行。
|
|
29
20
|
|
|
30
|
-
##
|
|
21
|
+
## 归档包边界
|
|
31
22
|
|
|
32
|
-
|
|
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
|
-
|
|
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
|
-
|
|
32
|
+
日志、测试报告、审查报告、HTML、缓存、备份、凭据和临时文件不得进入归档包。
|
|
40
33
|
|
|
41
|
-
|
|
42
|
-
- sync knowledge
|
|
43
|
-
- rebuild knowledge index
|
|
44
|
-
- promote knowledge
|
|
45
|
-
- 确认知识条目
|
|
46
|
-
- 从归档生成知识索引
|
|
47
|
-
- 刷新项目知识库
|
|
48
|
-
- 检查知识库是否过期
|
|
34
|
+
## Normal Workflow
|
|
49
35
|
|
|
50
|
-
|
|
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 "
|
|
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
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
- `health`:各 lifecycle、publication、validation 与待裁决工作量。
|
|
42
|
+
2. 检查响应中的包哈希、服务端保存状态和 `knowledge_status`。
|
|
43
|
+
3. 只有服务端确认原 ZIP 已持久保存且知识状态为 ready,才删除本地待上传 ZIP。
|
|
44
|
+
4. 上传或 ingest 失败时保留 ZIP 与失败收据;修复连接后重试同一个 ZIP,不重新拼散文件。
|
|
150
45
|
|
|
151
|
-
|
|
46
|
+
## Ownership Rules
|
|
152
47
|
|
|
153
|
-
|
|
48
|
+
- 客户端:选择核心文件、生成稳定 manifest/ZIP、校验包哈希、上传与保留失败重试材料。
|
|
49
|
+
- 服务端:敏感信息扫描、ZIP 安全校验、原包持久化、解包、制品发布、知识 ingest、状态查询和下载恢复。
|
|
50
|
+
- 远端不可用:知识不可用;不得启动本地替代索引。
|
|
51
|
+
- 面向人的知识、提案、规则和说明默认使用中文。
|
|
154
52
|
|
|
155
|
-
|
|
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
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
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
|
-
|
|
244
|
-
|
|
245
|
-
|
|
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
|
|
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` ·
|
|
93
|
+
> 片段:logging · phase=`knowledge-ingest` · 记录 package hash、服务端状态与失败重试路径
|
|
@@ -1,133 +1,69 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: harness-knowledge-query
|
|
3
|
-
description: "
|
|
4
|
-
argument-hint: "
|
|
5
|
-
effort:
|
|
6
|
-
allowed-tools: [Bash(powershell.exe:*), Read,
|
|
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=
|
|
11
|
+
<!-- generated by harness_deploy.py; core=bde20b36d56b03f4; overlay=none; agent=claude-code; do not edit -->
|
|
24
12
|
# harness-knowledge-query
|
|
25
13
|
|
|
26
|
-
|
|
14
|
+
项目知识以 Hunter Platform 的服务端索引为唯一真源。客户端只提交查询并消费结果:
|
|
27
15
|
|
|
28
|
-
|
|
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
|
-
-
|
|
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
|
-
##
|
|
30
|
+
## Command
|
|
54
31
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
### Query by requirement
|
|
32
|
+
在项目根目录执行一次:
|
|
58
33
|
|
|
59
34
|
```powershell
|
|
60
|
-
powershell.exe -Command "
|
|
35
|
+
powershell.exe -Command "npx hunter-harness knowledge query '<用户需求原文>' --limit 10 --json"
|
|
61
36
|
```
|
|
62
37
|
|
|
63
|
-
|
|
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.
|
|
82
|
-
3.
|
|
83
|
-
4.
|
|
84
|
-
5.
|
|
43
|
+
1. 原样保留用户的需求或问题作为查询文本;已知范围较大时可将关键模块名一并放入文本。
|
|
44
|
+
2. 执行一次远端查询,不在查询前重建或同步知识。
|
|
45
|
+
3. 读取 JSON 中的命中项、来源路径、变更键和相关度。
|
|
46
|
+
4. 把命中内容作为历史线索;涉及当前行为时仍以当前代码和验证结果为准。
|
|
47
|
+
5. 若命令返回远端不可达、未绑定或未认证,记录明确 issue 后继续,不重试本地方案。
|
|
85
48
|
|
|
86
49
|
## Output Contract
|
|
87
50
|
|
|
88
|
-
|
|
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
|
-
|
|
107
|
-
|
|
108
|
-
-
|
|
109
|
-
-
|
|
110
|
-
-
|
|
111
|
-
- `superseded` / `conflicted`:必须显式提示风险,不得静默采用。
|
|
53
|
+
- 查询文本与 limit;
|
|
54
|
+
- 是否成功访问远端;
|
|
55
|
+
- 命中数量及最相关来源;
|
|
56
|
+
- 远端不可用时,明确写“未使用本地回退”;
|
|
57
|
+
- 下一步是进入规划/实现,还是先核对当前代码。
|
|
112
58
|
|
|
113
59
|
## Forbidden Actions
|
|
114
60
|
|
|
115
|
-
-
|
|
116
|
-
-
|
|
117
|
-
-
|
|
118
|
-
-
|
|
119
|
-
-
|
|
120
|
-
-
|
|
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 ·
|
|
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` ·
|
|
93
|
+
> 片段:logging · phase=`knowledge-query` · 成功记录命中摘要,失败记录远端错误码且不做本地回退
|