@hunter-harness/workflow-harness 0.2.49 → 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 +11 -3
- package/harness/bundles/general/claude-code/harness-codebase-map/SKILL.md +6 -1
- package/harness/bundles/general/claude-code/harness-knowledge-ingest/SKILL.md +45 -244
- package/harness/bundles/general/claude-code/harness-knowledge-query/SKILL.md +41 -112
- package/harness/bundles/general/claude-code/harness-plan/SKILL.md +9 -4
- package/harness/bundles/general/claude-code/harness-plan/checklist.md +2 -2
- package/harness/bundles/general/claude-code/harness-review/SKILL.md +7 -2
- package/harness/bundles/general/claude-code/harness-run/SKILL.md +8 -3
- package/harness/bundles/general/claude-code/harness-submit/SKILL.md +7 -2
- package/harness/bundles/general/claude-code/harness-sync/SKILL.md +12 -7
- package/harness/bundles/general/claude-code/harness-sync/reference.md +18 -11
- package/harness/bundles/general/claude-code/harness-test/SKILL.md +7 -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 +769 -191
- package/harness/bundles/general/claude-code/scripts/harness_events_sync.py +90 -12
- package/harness/bundles/general/claude-code/scripts/harness_gate.py +17 -0
- 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 +11 -3
- package/harness/bundles/general/codebuddy/harness-codebase-map/SKILL.md +6 -1
- package/harness/bundles/general/codebuddy/harness-knowledge-ingest/SKILL.md +42 -230
- package/harness/bundles/general/codebuddy/harness-knowledge-query/SKILL.md +38 -98
- package/harness/bundles/general/codebuddy/harness-plan/SKILL.md +9 -4
- package/harness/bundles/general/codebuddy/harness-plan/checklist.md +2 -2
- package/harness/bundles/general/codebuddy/harness-review/SKILL.md +7 -2
- package/harness/bundles/general/codebuddy/harness-run/SKILL.md +8 -3
- package/harness/bundles/general/codebuddy/harness-submit/SKILL.md +7 -2
- package/harness/bundles/general/codebuddy/harness-sync/SKILL.md +13 -8
- package/harness/bundles/general/codebuddy/harness-sync/reference.md +18 -11
- package/harness/bundles/general/codebuddy/harness-test/SKILL.md +7 -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 +769 -191
- package/harness/bundles/general/codebuddy/scripts/harness_events_sync.py +90 -12
- package/harness/bundles/general/codebuddy/scripts/harness_gate.py +17 -0
- 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 +11 -3
- package/harness/bundles/general/codex/harness-codebase-map/SKILL.md +6 -1
- package/harness/bundles/general/codex/harness-knowledge-ingest/SKILL.md +42 -230
- package/harness/bundles/general/codex/harness-knowledge-query/SKILL.md +38 -98
- package/harness/bundles/general/codex/harness-plan/SKILL.md +9 -4
- package/harness/bundles/general/codex/harness-plan/checklist.md +2 -2
- package/harness/bundles/general/codex/harness-review/SKILL.md +7 -2
- package/harness/bundles/general/codex/harness-run/SKILL.md +8 -3
- package/harness/bundles/general/codex/harness-submit/SKILL.md +7 -2
- package/harness/bundles/general/codex/harness-sync/SKILL.md +13 -8
- package/harness/bundles/general/codex/harness-sync/reference.md +18 -11
- package/harness/bundles/general/codex/harness-test/SKILL.md +7 -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 +769 -191
- package/harness/bundles/general/codex/scripts/harness_events_sync.py +90 -12
- package/harness/bundles/general/codex/scripts/harness_gate.py +17 -0
- 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 +11 -3
- package/harness/bundles/general/cursor/harness-codebase-map/SKILL.md +6 -1
- package/harness/bundles/general/cursor/harness-knowledge-ingest/SKILL.md +42 -230
- package/harness/bundles/general/cursor/harness-knowledge-query/SKILL.md +38 -98
- package/harness/bundles/general/cursor/harness-plan/SKILL.md +9 -4
- package/harness/bundles/general/cursor/harness-plan/checklist.md +2 -2
- package/harness/bundles/general/cursor/harness-review/SKILL.md +7 -2
- package/harness/bundles/general/cursor/harness-run/SKILL.md +8 -3
- package/harness/bundles/general/cursor/harness-submit/SKILL.md +7 -2
- package/harness/bundles/general/cursor/harness-sync/SKILL.md +13 -8
- package/harness/bundles/general/cursor/harness-sync/reference.md +18 -11
- package/harness/bundles/general/cursor/harness-test/SKILL.md +7 -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 +769 -191
- package/harness/bundles/general/cursor/scripts/harness_events_sync.py +90 -12
- package/harness/bundles/general/cursor/scripts/harness_gate.py +17 -0
- 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 +7 -2
- package/harness/bundles/java/claude-code/harness-archive/SKILL.md +11 -3
- package/harness/bundles/java/claude-code/harness-codebase-map/SKILL.md +6 -1
- package/harness/bundles/java/claude-code/harness-knowledge-ingest/SKILL.md +45 -244
- package/harness/bundles/java/claude-code/harness-knowledge-query/SKILL.md +41 -112
- package/harness/bundles/java/claude-code/harness-package/SKILL.md +7 -2
- package/harness/bundles/java/claude-code/harness-plan/SKILL.md +9 -4
- package/harness/bundles/java/claude-code/harness-plan/checklist.md +2 -2
- package/harness/bundles/java/claude-code/harness-review/SKILL.md +7 -2
- package/harness/bundles/java/claude-code/harness-run/SKILL.md +8 -3
- package/harness/bundles/java/claude-code/harness-submit/SKILL.md +7 -2
- package/harness/bundles/java/claude-code/harness-sync/SKILL.md +12 -7
- package/harness/bundles/java/claude-code/harness-sync/reference.md +18 -11
- package/harness/bundles/java/claude-code/harness-test/SKILL.md +7 -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 +769 -191
- package/harness/bundles/java/claude-code/scripts/harness_events_sync.py +90 -12
- package/harness/bundles/java/claude-code/scripts/harness_gate.py +17 -0
- 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 +7 -2
- package/harness/bundles/java/codebuddy/harness-archive/SKILL.md +11 -3
- package/harness/bundles/java/codebuddy/harness-codebase-map/SKILL.md +6 -1
- package/harness/bundles/java/codebuddy/harness-knowledge-ingest/SKILL.md +42 -230
- package/harness/bundles/java/codebuddy/harness-knowledge-query/SKILL.md +38 -98
- package/harness/bundles/java/codebuddy/harness-package/SKILL.md +7 -2
- package/harness/bundles/java/codebuddy/harness-plan/SKILL.md +9 -4
- package/harness/bundles/java/codebuddy/harness-plan/checklist.md +2 -2
- package/harness/bundles/java/codebuddy/harness-review/SKILL.md +7 -2
- package/harness/bundles/java/codebuddy/harness-run/SKILL.md +8 -3
- package/harness/bundles/java/codebuddy/harness-submit/SKILL.md +7 -2
- package/harness/bundles/java/codebuddy/harness-sync/SKILL.md +13 -8
- package/harness/bundles/java/codebuddy/harness-sync/reference.md +18 -11
- package/harness/bundles/java/codebuddy/harness-test/SKILL.md +7 -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 +769 -191
- package/harness/bundles/java/codebuddy/scripts/harness_events_sync.py +90 -12
- package/harness/bundles/java/codebuddy/scripts/harness_gate.py +17 -0
- 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 +7 -2
- package/harness/bundles/java/codex/harness-archive/SKILL.md +11 -3
- package/harness/bundles/java/codex/harness-codebase-map/SKILL.md +6 -1
- package/harness/bundles/java/codex/harness-knowledge-ingest/SKILL.md +42 -230
- package/harness/bundles/java/codex/harness-knowledge-query/SKILL.md +38 -98
- package/harness/bundles/java/codex/harness-package/SKILL.md +7 -2
- package/harness/bundles/java/codex/harness-plan/SKILL.md +9 -4
- package/harness/bundles/java/codex/harness-plan/checklist.md +2 -2
- package/harness/bundles/java/codex/harness-review/SKILL.md +7 -2
- package/harness/bundles/java/codex/harness-run/SKILL.md +8 -3
- package/harness/bundles/java/codex/harness-submit/SKILL.md +7 -2
- package/harness/bundles/java/codex/harness-sync/SKILL.md +13 -8
- package/harness/bundles/java/codex/harness-sync/reference.md +18 -11
- package/harness/bundles/java/codex/harness-test/SKILL.md +7 -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 +769 -191
- package/harness/bundles/java/codex/scripts/harness_events_sync.py +90 -12
- package/harness/bundles/java/codex/scripts/harness_gate.py +17 -0
- 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 +7 -2
- package/harness/bundles/java/cursor/harness-archive/SKILL.md +11 -3
- package/harness/bundles/java/cursor/harness-codebase-map/SKILL.md +6 -1
- package/harness/bundles/java/cursor/harness-knowledge-ingest/SKILL.md +42 -230
- package/harness/bundles/java/cursor/harness-knowledge-query/SKILL.md +38 -98
- package/harness/bundles/java/cursor/harness-package/SKILL.md +7 -2
- package/harness/bundles/java/cursor/harness-plan/SKILL.md +9 -4
- package/harness/bundles/java/cursor/harness-plan/checklist.md +2 -2
- package/harness/bundles/java/cursor/harness-review/SKILL.md +7 -2
- package/harness/bundles/java/cursor/harness-run/SKILL.md +8 -3
- package/harness/bundles/java/cursor/harness-submit/SKILL.md +7 -2
- package/harness/bundles/java/cursor/harness-sync/SKILL.md +13 -8
- package/harness/bundles/java/cursor/harness-sync/reference.md +18 -11
- package/harness/bundles/java/cursor/harness-test/SKILL.md +7 -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 +769 -191
- package/harness/bundles/java/cursor/scripts/harness_events_sync.py +90 -12
- package/harness/bundles/java/cursor/scripts/harness_gate.py +17 -0
- 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 +23 -47
- package/harness/manifests/general/codebuddy.json +23 -47
- package/harness/manifests/general/codex.json +23 -47
- package/harness/manifests/general/cursor.json +23 -47
- package/harness/manifests/java/claude-code.json +25 -49
- package/harness/manifests/java/codebuddy.json +25 -49
- package/harness/manifests/java/codex.json +25 -49
- package/harness/manifests/java/cursor.json +25 -49
- 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
|
@@ -1,280 +1,81 @@
|
|
|
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=63cbdcb9833a5c07; overlay=java; 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
|
-
- sync knowledge
|
|
34
|
-
- rebuild knowledge index
|
|
35
|
-
- promote knowledge
|
|
36
|
-
- 确认知识条目
|
|
37
|
-
- 从归档生成知识索引
|
|
38
|
-
- 刷新项目知识库
|
|
39
|
-
- 检查知识库是否过期
|
|
23
|
+
允许上传的核心内容只有:
|
|
40
24
|
|
|
41
|
-
|
|
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 生成)
|
|
42
31
|
|
|
43
|
-
|
|
44
|
-
- `.harness/archive/**/reports/final/summary-data.json`
|
|
45
|
-
- `.harness/knowledge/index.json`
|
|
46
|
-
- `.harness/codebase/map-summary.md`(如存在)
|
|
47
|
-
- design.md
|
|
32
|
+
日志、测试报告、审查报告、HTML、缓存、备份、凭据和临时文件不得进入归档包。
|
|
48
33
|
|
|
49
|
-
##
|
|
34
|
+
## Normal Workflow
|
|
50
35
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
1. **整理知识库内容**:把归档里的 `businessGoal`、`changedFiles`、`maintenanceNotes`、`knownRisks`、`manualActions`、`verification`、`reviewSummary` 抽成知识条目。
|
|
54
|
-
2. **维护知识生命周期**:检查索引是否过期,保留 active 条目;高置信 candidate 由 `autoPromote` 自动提升;其余 candidate/conflicted 由 **Agent judge** 闭环裁决,不再默认输出人工待办清单。
|
|
55
|
-
|
|
56
|
-
## Outputs
|
|
57
|
-
|
|
58
|
-
```text
|
|
59
|
-
.harness/knowledge/index.json
|
|
60
|
-
.harness/knowledge/index.sqlite
|
|
61
|
-
.harness/knowledge/entries/candidate/*.json
|
|
62
|
-
.harness/knowledge/entries/active/*.json
|
|
63
|
-
.harness/knowledge/entries/stale/*.json
|
|
64
|
-
.harness/knowledge/entries/superseded/*.json
|
|
65
|
-
.harness/knowledge/entries/conflicted/*.json
|
|
66
|
-
.harness/knowledge/cache/archive-entries/*.json
|
|
67
|
-
.harness/knowledge/reports/ingest-report-*.md
|
|
68
|
-
.harness/knowledge/reports/verification-report-*.md
|
|
69
|
-
.harness/knowledge/reports/audit-report-*.md
|
|
70
|
-
.harness/knowledge/reports/judge-export-<content-sha256>.json
|
|
71
|
-
.harness/knowledge/reports/judgements-<content-sha256>.json
|
|
72
|
-
.harness/knowledge/reports/latest.json
|
|
73
|
-
.harness/knowledge/views/knowledge-dashboard.md
|
|
74
|
-
.harness/knowledge/views/by-file.md
|
|
75
|
-
.harness/knowledge/views/stale-items.md
|
|
76
|
-
.harness/knowledge/views/superseded-items.md
|
|
77
|
-
.harness/knowledge/views/conflicted-items.md
|
|
78
|
-
.harness/knowledge/views/active-review.md
|
|
79
|
-
.harness/knowledge/views/knowledge.base
|
|
80
|
-
.harness/knowledge/context-packs/*.md
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
## Commands
|
|
84
|
-
|
|
85
|
-
`<skill-dir>` 指本 skill 目录。所有 python 脚本命令通过 `powershell.exe -Command "..."` 执行。完整命令示例与 config.json 配置见 `reference.md`「Commands 详细」。
|
|
86
|
-
|
|
87
|
-
| 命令 | 用途 |
|
|
88
|
-
|---|---|
|
|
89
|
-
| 无参数 / `auto` | 一键防腐:首建 config、sync --update、**默认**写回 validator 建议、verify、audit;随后由 **Agent** 执行 judge 闭环 |
|
|
90
|
-
| `status` | 严格只读地返回 freshness 与 health |
|
|
91
|
-
| `repair all` | 修复可证明的 legacy gate、归一化重复、冲突与报告保留;不确定项返回 `needsConfirmation` |
|
|
92
|
-
| `ingest` | 重建/刷新知识索引,抽取 candidate;`--no-incremental` 强制全量重抽取 |
|
|
93
|
-
| `sync --check` | 只读检查 index 与 archive/HEAD 一致性;`--update` 自动刷新 |
|
|
94
|
-
| `promote` | candidate→active(显式 promote 或 autoPromote / judge 触发) |
|
|
95
|
-
| `demote` | active→stale/candidate(显式 demote 或自动降级策略触发) |
|
|
96
|
-
| `audit` | 生成 Candidate/Stale/Superseded/Conflict/Active Review 报告 |
|
|
97
|
-
| `verify` | 执行 entry validators,刷新 lifecycle.validation,生成 verification-report |
|
|
98
|
-
| `suggest-validators` | 生成 file_exists/file_contains validator 建议;`--apply` 写回 entry |
|
|
99
|
-
| `admin <旧命令>` | 旧管理命令兼容入口 |
|
|
100
|
-
| `mcp` | FastMCP stdio 入口,暴露 9 个工具(见 reference.md) |
|
|
101
|
-
|
|
102
|
-
config.json 配置项(autoPromote / confidence / activeLifecycle / knowledgeValidation)详见 `reference.md`「Commands 详细」。
|
|
103
|
-
|
|
104
|
-
## Workflow
|
|
105
|
-
|
|
106
|
-
### Phase 0:确认项目根目录
|
|
107
|
-
|
|
108
|
-
项目根目录必须包含 `.harness/`。如果 `.harness/archive/` 不存在或没有 `summary-data.json`,报告当前项目暂无可索引归档,不要伪造知识。
|
|
109
|
-
|
|
110
|
-
### Phase 1:重建本地知识索引
|
|
111
|
-
|
|
112
|
-
运行:
|
|
113
|
-
|
|
114
|
-
```powershell
|
|
115
|
-
powershell.exe -Command "python '<skill-dir>\scripts\harness_knowledge.py' ingest --project '<project-root>'"
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
生成:
|
|
119
|
-
|
|
120
|
-
- `index.json`:人类可读 manifest。
|
|
121
|
-
- `index.sqlite`:SQLite FTS5 检索索引。
|
|
122
|
-
- `entries/candidate/`:自动抽取、待确认知识。
|
|
123
|
-
- `entries/stale/`:来源 commit 缺失、无法比较,或来源 commit 后相关文件变化的知识。
|
|
124
|
-
- `entries/active/`:人工确认后可长期引用的知识。
|
|
125
|
-
- `views/`:Obsidian 友好的浏览视图。
|
|
126
|
-
- `reports/`:本次 ingest 报告。
|
|
127
|
-
|
|
128
|
-
### Phase 2:一键 auto(推荐入口)
|
|
129
|
-
|
|
130
|
-
```powershell
|
|
131
|
-
powershell.exe -Command "python '<skill-dir>\scripts\harness_knowledge.py' auto --project '<project-root>'"
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
不传子命令时等价于 `auto`。`auto` 输出必须分别报告:
|
|
135
|
-
|
|
136
|
-
- `freshness`:archive、HEAD、manifest、entry、SQLite 是否一致。
|
|
137
|
-
- `health`:各 lifecycle、publication、validation 与待裁决工作量。
|
|
138
|
-
|
|
139
|
-
`auto` 默认会写回确定性 validator 建议(`--no-apply-suggestions` 可关闭)。JSON 返回含 `lifecycle` 摘要(validatorsApplied、autoPromote、pendingAgentJudge 等)。
|
|
140
|
-
|
|
141
|
-
### Phase 3:Agent judge 闭环(auto 之后必须执行)
|
|
142
|
-
|
|
143
|
-
当 `lifecycle.pendingAgentJudge > 0`、存在 `pending-judge` outbox,或 `judge export` 的
|
|
144
|
-
`counts.requiredDecisionCount > 0` 时:
|
|
145
|
-
|
|
146
|
-
1. `judge export`(或读 maintain 产出的 pending judgements)
|
|
147
|
-
2. Agent 读取 export JSON,按 `reference.md`「Agent judge 启发式」批量写 `reports/judge-decisions-<ts>.json`
|
|
148
|
-
3. `judge apply --apply <decisions.json>`(`knowledge.manualReview=true` 时需用户显式 `--force`)
|
|
149
|
-
4. 向用户输出 **已处理报告**(promoted/dropped/superseded/kept/skipped 计数 + 报告路径)
|
|
150
|
-
|
|
151
|
-
**禁止**默认输出「请人工确认 N 条 candidate」类五步待办清单。拿不准的 candidate 保持 `candidate` 状态留待下轮,记入 `skippedCandidates` 即可。
|
|
152
|
-
|
|
153
|
-
`pendingAgentJudge`/`requiredDecisionCount` 是完整待裁决总量;`previewCount` 才受
|
|
154
|
-
`config.judge.maxCandidatesPerRun`(默认 100)限制。已被 publication gate 阻断的条目
|
|
155
|
-
只进入 `quarantinedCount`,不得混入 judge export。`defer` 必须保存证据指纹;来源、
|
|
156
|
-
validator、冲突关系或 publication 证据变化后即使未到 `reviewAfter` 也重新进入裁决。
|
|
157
|
-
|
|
158
|
-
### Phase 4:同步检查(可选)
|
|
36
|
+
1. `harness-archive` 的 finalize 生成确定性 ZIP,并调用:
|
|
159
37
|
|
|
160
38
|
```powershell
|
|
161
|
-
powershell.exe -Command "
|
|
39
|
+
powershell.exe -Command "npx hunter-harness archive upload --file '<archive.zip>' --change-key '<change-key>' --yes --non-interactive --json"
|
|
162
40
|
```
|
|
163
41
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
仅在用户点名单条、或 `manualReview=true` 需人工确认时使用 `promote` / `demote`。日常归档后不要逐条人工复核。
|
|
169
|
-
|
|
170
|
-
**发布门禁**:knowledge publication 与 archive release status 独立。promote / judge apply /
|
|
171
|
-
autoPromote 校验 authoritative pointer/hash 与 `reportPipeline.sourceConsistency`;即使归档
|
|
172
|
-
最终状态为 WARN,只要知识来源一致也可发布,但保留 release advisory。旧归档只有在
|
|
173
|
-
summary/hash/source commit 可独立证明时才自动生成 attestation;否则保持 quarantined 并
|
|
174
|
-
返回 `needsConfirmation`(详见 `reference.md`「发布门禁」)。
|
|
175
|
-
|
|
176
|
-
### Phase 6:解释同步结果
|
|
177
|
-
|
|
178
|
-
回复用户或交给后续 skill 前,应说明:
|
|
179
|
-
|
|
180
|
-
- 索引是否最新。
|
|
181
|
-
- 如需刷新,具体原因是 archive 增删、checksum 变化、sqlite 缺失,还是 HEAD 改变。
|
|
182
|
-
- 本次是否自动刷新。
|
|
183
|
-
- 当前 `active` / `candidate` / `stale` 的数量。
|
|
184
|
-
- 分别报告 `freshness` 与 `health`,不要用一个 `status` 覆盖
|
|
185
|
-
lifecycle/review/publication/validation 四个正交维度。
|
|
186
|
-
|
|
187
|
-
## Knowledge extraction rules
|
|
188
|
-
|
|
189
|
-
- 优先读取归档显式 `knowledgeCandidates[]`;维护流水线、测试计数等
|
|
190
|
-
`category=process-observation` 不进入长期知识。
|
|
191
|
-
- Duplicate content 使用 Unicode、空白、标点与大小写归一化指纹,并在全量重建时迁移。
|
|
192
|
-
- 冲突必须同时有相同实体、共享来源范围和双方证据;仅关键词相反不得判为冲突。
|
|
193
|
-
- Keep project-local entries excluded from any global index unless explicitly selected.
|
|
194
|
-
- Validate lifecycle relationships.
|
|
195
|
-
- Default generated entries are `candidate`; only config-gated `autoPromote` may promote high-confidence long-lived entries to `active`.
|
|
196
|
-
- Preserve provenance: every entry must include source archive, summary path, source commit, and source files when available.
|
|
197
|
-
- Do not edit `.harness/archive/**` during ingest.
|
|
198
|
-
- Do not copy secrets into `.harness/knowledge`.
|
|
199
|
-
|
|
200
|
-
## Lifecycle rules
|
|
201
|
-
|
|
202
|
-
- `candidate`:自动抽取;高置信 + 白名单类型可由 autoPromote 提升;其余由 Agent judge 裁决或保持 candidate。
|
|
203
|
-
- `active`:autoPromote、judge promote,或显式 promote 后可用。
|
|
204
|
-
- `stale`:来源 commit 缺失、来源 commit 后相关文件变化,或当前代码无法证明旧结论仍有效。
|
|
205
|
-
- `superseded`:被后续归档/决策取代。
|
|
206
|
-
- `conflicted`:与另一条 active/candidate 知识冲突。
|
|
42
|
+
2. 检查响应中的包哈希、服务端保存状态和 `knowledge_status`。
|
|
43
|
+
3. 只有服务端确认原 ZIP 已持久保存且知识状态为 ready,才删除本地待上传 ZIP。
|
|
44
|
+
4. 上传或 ingest 失败时保留 ZIP 与失败收据;修复连接后重试同一个 ZIP,不重新拼散文件。
|
|
207
45
|
|
|
208
|
-
##
|
|
46
|
+
## Ownership Rules
|
|
209
47
|
|
|
210
|
-
-
|
|
211
|
-
-
|
|
212
|
-
-
|
|
213
|
-
-
|
|
214
|
-
- store_secrets
|
|
215
|
-
- treat_stale_knowledge_as_current_fact
|
|
48
|
+
- 客户端:选择核心文件、生成稳定 manifest/ZIP、校验包哈希、上传与保留失败重试材料。
|
|
49
|
+
- 服务端:敏感信息扫描、ZIP 安全校验、原包持久化、解包、制品发布、知识 ingest、状态查询和下载恢复。
|
|
50
|
+
- 远端不可用:知识不可用;不得启动本地替代索引。
|
|
51
|
+
- 面向人的知识、提案、规则和说明默认使用中文。
|
|
216
52
|
|
|
217
|
-
##
|
|
53
|
+
## Forbidden Actions
|
|
218
54
|
|
|
219
|
-
-
|
|
220
|
-
-
|
|
221
|
-
-
|
|
222
|
-
-
|
|
223
|
-
-
|
|
224
|
-
-
|
|
225
|
-
- agent_judge_knowledge_lifecycle
|
|
226
|
-
- write_knowledge_index
|
|
227
|
-
- 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
|
|
228
61
|
|
|
229
62
|
## Verification
|
|
230
63
|
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
powershell.exe -Command "python 'harness\scripts\harness_test_runner.py' unittest --profile safe --tests-dir '<skill-dir>\tests' --timeout-seconds 300 --verbosity 1"
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
完成脚本修改后必须至少运行该测试。若在真实项目中验证,还应运行:
|
|
238
|
-
|
|
239
|
-
```powershell
|
|
240
|
-
powershell.exe -Command "python '<skill-dir>\scripts\harness_knowledge.py' auto --project '<real-project-root>'"
|
|
241
|
-
powershell.exe -Command "python '<skill-dir>\scripts\harness_knowledge.py' ingest --project '<real-project-root>'"
|
|
242
|
-
powershell.exe -Command "python '<skill-dir>\scripts\harness_knowledge.py' suggest-validators --project '<real-project-root>' --limit 20"
|
|
243
|
-
powershell.exe -Command "python '<skill-dir>\scripts\harness_knowledge.py' verify --project '<real-project-root>'"
|
|
244
|
-
powershell.exe -Command "python '<skill-dir>\scripts\harness_knowledge.py' sync --project '<real-project-root>'"
|
|
245
|
-
```
|
|
246
|
-
|
|
247
|
-
并确认 `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 已按收据策略清理,且平台下载接口可以恢复原包。
|
|
248
67
|
|
|
249
68
|
## P0 执行可信度规则
|
|
250
69
|
|
|
251
70
|
- 命令结果不得靠猜测;普通 Bash 被拒 → 立即改用等价 PowerShell 重试一次
|
|
252
71
|
- 仅 PowerShell 成功且有明确证据(构建/git/测试输出、文件存在、exit 0)时可标 ✅OK;否则 ❌FAIL 或 🟡WARN
|
|
253
72
|
- 禁止把 hook 拒绝、静态验证、无输出、用户跳过说成成功 → 详见 [[../protocols/powershell-protocol.md|powershell-protocol]]、[[../protocols/evidence-based-reporting-protocol.md|evidence-based-reporting-protocol]]
|
|
254
|
-
> 片段:p0-trust · ingest/sync 须绑定 `upToDate`/产物路径证据
|
|
255
|
-
|
|
256
|
-
## Output Format
|
|
257
|
-
|
|
258
|
-
执行完成后展示:
|
|
259
|
-
|
|
260
|
-
- 本次命令(ingest/sync/promote)与目标项目根。
|
|
261
|
-
- `upToDate` 及 `reasons`(sync)或新增/覆盖条目数(ingest/promote)。
|
|
262
|
-
- 当前 `active` / `candidate` / `stale` 数量统计。
|
|
263
|
-
- 产物路径(`index.json`、`index.sqlite`、`views/`、`reports/`)。
|
|
264
|
-
- `lifecycle` 摘要:`validatorsApplied`、`candidateAutoPromoted`、兼容整数
|
|
265
|
-
`pendingAgentJudge`,以及
|
|
266
|
-
`pendingAgentJudgeSummary.requiredDecisionCount/previewCount/quarantinedCount` 等。
|
|
267
|
-
- validator 摘要:`eligible/selected/applied/remaining/unavailable`,不得只报告本轮抽样数。
|
|
268
|
-
- **已处理报告**(auto + judge 后):promoted/dropped/superseded/kept/deferred/skipped 计数与 `reports/judge-decisions-*.json`、`judgements-*.json` 路径;人工判断还会追加到 `judgements/decisions.json`,后续 ingest 不得抹除。`defer` 必须带 `reviewAfter`,到期前不重复进入待判断清单。
|
|
269
|
-
- 仅当 `upToDate=false` 时建议 `sync --update`;查询历史 → `/harness-knowledge-query`。**禁止**默认列出「请人工确认 N 条 candidate」待办。
|
|
270
|
-
|
|
271
|
-
## 渐进披露
|
|
272
|
-
|
|
273
|
-
- **Read `reference.md`** 仅在执行命令或查阅 config.json 配置时 — 含 Commands 详细示例、config.json 配置与兼容说明。
|
|
274
73
|
|
|
275
|
-
##
|
|
74
|
+
## 生成内容语言约定
|
|
276
75
|
|
|
277
|
-
|
|
76
|
+
- sync/ingest 等生成的文档、规则、知识条目、架构说明一律**优先使用中文**撰写(标识符、命令、代码、API 字段名保持原文)
|
|
77
|
+
- 面向平台展示的标题/摘要/正文默认中文;仅当用户明确要求或目标系统强制时才用英文
|
|
78
|
+
> 片段:p0-trust · 只有服务端持久化与 ingest 收据可证明知识已入库
|
|
278
79
|
|
|
279
80
|
## 执行日志
|
|
280
81
|
|
|
@@ -289,4 +90,4 @@ python <skills-root>/scripts/harness_events.py append --change-dir ".harness/cha
|
|
|
289
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 边界保持最新。
|
|
290
91
|
|
|
291
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` 环境变量统一注入。
|
|
292
|
-
> 片段:logging · phase=`knowledge-ingest` ·
|
|
93
|
+
> 片段:logging · phase=`knowledge-ingest` · 记录 package hash、服务端状态与失败重试路径
|
|
@@ -1,152 +1,81 @@
|
|
|
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=63cbdcb9833a5c07; overlay=java; 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
|
-
|
|
21
|
+
所有面向人的总结默认使用中文,代码标识符和原始路径保持原样。
|
|
31
22
|
|
|
32
23
|
## Triggers
|
|
33
24
|
|
|
34
|
-
- query knowledge
|
|
35
|
-
-
|
|
36
|
-
- 查找相关历史需求
|
|
37
|
-
- 根据历史归档理解这个需求
|
|
25
|
+
- query knowledge / knowledge query
|
|
26
|
+
- 查询历史需求、决策或实现经验
|
|
38
27
|
- 结合之前做过的内容
|
|
39
|
-
-
|
|
40
|
-
- 生成需求上下文包
|
|
41
|
-
- 在规划前查历史
|
|
28
|
+
- 规划或排查前读取项目知识
|
|
42
29
|
|
|
43
|
-
##
|
|
30
|
+
## Command
|
|
44
31
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
不在 query 前单独执行 sync。`query` 命令内部执行一次 ensure-current:建立一次当前快照,索引新鲜时无操作,过期或缺失时只构建一次,然后在同一调用内完成查询。
|
|
48
|
-
|
|
49
|
-
## Commands
|
|
50
|
-
|
|
51
|
-
`<ingest-skill-dir>` 指同级 `harness-knowledge-ingest/` 目录;查询逻辑复用其脚本。所有 python 脚本命令通过 `powershell.exe -Command "..."` 执行,避开 Bash 在 Windows 中文路径下的编码/参数问题。
|
|
52
|
-
|
|
53
|
-
### Query by requirement
|
|
32
|
+
在项目根目录执行一次:
|
|
54
33
|
|
|
55
34
|
```powershell
|
|
56
|
-
powershell.exe -Command "
|
|
35
|
+
powershell.exe -Command "npx hunter-harness knowledge query '<用户需求原文>' --limit 10 --json"
|
|
57
36
|
```
|
|
58
37
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
```powershell
|
|
62
|
-
powershell.exe -Command "python '<ingest-skill-dir>\scripts\harness_knowledge.py' query --project '<project-root>' --query '<需求或关键词>' --file '<source-file>' --status active"
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
可重复使用:
|
|
66
|
-
|
|
67
|
-
- `--file <path>`:只返回关联到指定文件的知识。
|
|
68
|
-
- `--status active|candidate|stale|superseded|conflicted`:按生命周期过滤。
|
|
69
|
-
- `--type requirement|decision|implementation|risk|test-evidence|pitfall|api-contract`:按知识类型过滤。
|
|
70
|
-
- `--limit <n>`:限制返回数量。
|
|
38
|
+
只允许通过 CLI 访问平台,不得直接拼接 HTTP 请求,也不得调用旧的
|
|
39
|
+
本地知识查询脚本(该脚本已从当前分发包移除)。
|
|
71
40
|
|
|
72
41
|
## Workflow
|
|
73
42
|
|
|
74
|
-
1.
|
|
75
|
-
2.
|
|
76
|
-
3.
|
|
77
|
-
4.
|
|
78
|
-
5.
|
|
43
|
+
1. 原样保留用户的需求或问题作为查询文本;已知范围较大时可将关键模块名一并放入文本。
|
|
44
|
+
2. 执行一次远端查询,不在查询前重建或同步知识。
|
|
45
|
+
3. 读取 JSON 中的命中项、来源路径、变更键和相关度。
|
|
46
|
+
4. 把命中内容作为历史线索;涉及当前行为时仍以当前代码和验证结果为准。
|
|
47
|
+
5. 若命令返回远端不可达、未绑定或未认证,记录明确 issue 后继续,不重试本地方案。
|
|
79
48
|
|
|
80
49
|
## Output Contract
|
|
81
50
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
- `matchCount`
|
|
85
|
-
- `contextPack`
|
|
86
|
-
- `filters`
|
|
87
|
-
- `planInput`
|
|
88
|
-
- `matches`
|
|
89
|
-
|
|
90
|
-
`planInput.kind` 必须为 `harness-knowledge-context-pack`。后续 `harness-plan` 应读取 `planInput.path`。
|
|
91
|
-
|
|
92
|
-
每次查询还会更新稳定指针:
|
|
93
|
-
|
|
94
|
-
```text
|
|
95
|
-
.harness/knowledge/context-packs/latest.json
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
该文件包含最新 query、context pack 路径和 `matchIds`,供后续流程快速读取最近一次知识上下文。
|
|
51
|
+
必须说明:
|
|
99
52
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
-
|
|
103
|
-
-
|
|
104
|
-
-
|
|
105
|
-
- `superseded` / `conflicted`:必须显式提示风险,不得静默采用。
|
|
53
|
+
- 查询文本与 limit;
|
|
54
|
+
- 是否成功访问远端;
|
|
55
|
+
- 命中数量及最相关来源;
|
|
56
|
+
- 远端不可用时,明确写“未使用本地回退”;
|
|
57
|
+
- 下一步是进入规划/实现,还是先核对当前代码。
|
|
106
58
|
|
|
107
59
|
## Forbidden Actions
|
|
108
60
|
|
|
109
|
-
-
|
|
110
|
-
-
|
|
111
|
-
-
|
|
112
|
-
-
|
|
113
|
-
-
|
|
114
|
-
-
|
|
115
|
-
- copy_large_archive_content_into_prompt
|
|
116
|
-
|
|
117
|
-
## Verification
|
|
118
|
-
|
|
119
|
-
```powershell
|
|
120
|
-
powershell.exe -Command "python -m unittest '<ingest-skill-dir>\tests\test_harness_knowledge.py'"
|
|
121
|
-
powershell.exe -Command "python '<ingest-skill-dir>\scripts\harness_knowledge.py' query --project '<real-project-root>' --query '<真实需求>'"
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
确认输出中存在 `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
|
|
125
67
|
|
|
126
68
|
## P0 执行可信度规则
|
|
127
69
|
|
|
128
70
|
- 命令结果不得靠猜测;普通 Bash 被拒 → 立即改用等价 PowerShell 重试一次
|
|
129
71
|
- 仅 PowerShell 成功且有明确证据(构建/git/测试输出、文件存在、exit 0)时可标 ✅OK;否则 ❌FAIL 或 🟡WARN
|
|
130
72
|
- 禁止把 hook 拒绝、静态验证、无输出、用户跳过说成成功 → 详见 [[../protocols/powershell-protocol.md|powershell-protocol]]、[[../protocols/evidence-based-reporting-protocol.md|evidence-based-reporting-protocol]]
|
|
131
|
-
> 片段:p0-trust · query 成功须含 `contextPack`/`planInput.kind` 与 `latest.json` 写入
|
|
132
|
-
|
|
133
|
-
## Output Format
|
|
134
|
-
|
|
135
|
-
执行完成后展示:
|
|
136
|
-
|
|
137
|
-
- 用户需求原文与生效的过滤条件(`--file`/`--status`/`--type`/`--limit`)。
|
|
138
|
-
- `matchCount` 与按状态分组的命中数(active/candidate/stale/superseded/conflicted)。
|
|
139
|
-
- `contextPack` 路径与 `latest.json` 指针。
|
|
140
|
-
- 命中 stale/superseded/conflicted 时显式提示风险。
|
|
141
|
-
- 下一步建议(context pack 已就绪 → 进入 `/harness-plan`;ensure-current 失败 → 报告具体 issue,不重复同步或查询)。
|
|
142
|
-
|
|
143
|
-
## 渐进披露
|
|
144
|
-
|
|
145
|
-
- 本 skill 暂无 `checklist.md` / `reference.md` 支持文件,规则全部在 SKILL.md。若 Output Contract / Interpretation Rules 后续扩展变重,应拆到 `reference.md`。
|
|
146
73
|
|
|
147
|
-
##
|
|
74
|
+
## 生成内容语言约定
|
|
148
75
|
|
|
149
|
-
|
|
76
|
+
- sync/ingest 等生成的文档、规则、知识条目、架构说明一律**优先使用中文**撰写(标识符、命令、代码、API 字段名保持原文)
|
|
77
|
+
- 面向平台展示的标题/摘要/正文默认中文;仅当用户明确要求或目标系统强制时才用英文
|
|
78
|
+
> 片段:p0-trust · 远端查询成功必须有 CLI JSON 证据;失败不得伪装为已读取历史
|
|
150
79
|
|
|
151
80
|
## 执行日志
|
|
152
81
|
|
|
@@ -161,4 +90,4 @@ python <skills-root>/scripts/harness_events.py append --change-dir ".harness/cha
|
|
|
161
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 边界保持最新。
|
|
162
91
|
|
|
163
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` 环境变量统一注入。
|
|
164
|
-
> 片段:logging · phase=`knowledge-query` ·
|
|
93
|
+
> 片段:logging · phase=`knowledge-query` · 成功记录命中摘要,失败记录远端错误码且不做本地回退
|
|
@@ -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=63cbdcb9833a5c07; overlay=java; agent=claude-code; do not edit -->
|
|
25
25
|
# harness-package — 增量模块打包(Java overlay)
|
|
26
26
|
|
|
27
27
|
## Purpose
|
|
@@ -50,7 +50,7 @@ disallowed-tools:
|
|
|
50
50
|
6. **implementation-detail** — 自适应执行参考;legacy 缺失 🟡WARN,不阻断
|
|
51
51
|
7. **test-scenarios** — 测试真相源:`plans/<change>-test-scenarios.md`
|
|
52
52
|
8. **禁止读取 `docs/superpowers/` 作为正式输入** — 旧草稿仅人工线索
|
|
53
|
-
9. **每个 skill 边界只刷新一次状态快照** — 先运行 `python <skills-root>/scripts/harness_state.py capture --project . --change-dir ".harness/changes/<change-name>" --base <baseCommit> --json`;`changedSegments=[]` 时复用已有 profile/rules/map/
|
|
53
|
+
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` 段仅为兼容空段,知识始终按需远端查询;快照不能替代源码读取和验证门禁。
|
|
54
54
|
|
|
55
55
|
状态目录分层:新路径优先,旧路径兼容 → [[../protocols/state-layout-protocol.md|state-layout-protocol]]
|
|
56
56
|
> 片段:read-protocol
|
|
@@ -70,6 +70,11 @@ disallowed-tools:
|
|
|
70
70
|
- 命令结果不得靠猜测;普通 Bash 被拒 → 立即改用等价 PowerShell 重试一次
|
|
71
71
|
- 仅 PowerShell 成功且有明确证据(构建/git/测试输出、文件存在、exit 0)时可标 ✅OK;否则 ❌FAIL 或 🟡WARN
|
|
72
72
|
- 禁止把 hook 拒绝、静态验证、无输出、用户跳过说成成功 → 详见 [[../protocols/powershell-protocol.md|powershell-protocol]]、[[../protocols/evidence-based-reporting-protocol.md|evidence-based-reporting-protocol]]
|
|
73
|
+
|
|
74
|
+
## 生成内容语言约定
|
|
75
|
+
|
|
76
|
+
- sync/ingest 等生成的文档、规则、知识条目、架构说明一律**优先使用中文**撰写(标识符、命令、代码、API 字段名保持原文)
|
|
77
|
+
- 面向平台展示的标题/摘要/正文默认中文;仅当用户明确要求或目标系统强制时才用英文
|
|
73
78
|
> 片段:p0-trust
|
|
74
79
|
|
|
75
80
|
## 渐进披露
|
|
@@ -21,14 +21,14 @@ 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=63cbdcb9833a5c07; overlay=java; agent=claude-code; do not edit -->
|
|
25
25
|
# harness-plan — 需求规划
|
|
26
26
|
|
|
27
27
|
## Purpose
|
|
28
28
|
|
|
29
29
|
确定 change 后必须运行 `python <skills-root>/scripts/harness_gate.py classify --change <id> --stage plan --json`,并把脚本返回的 risk tier、默认阶段、条件阶段和必需验证写入计划;不得凭模型印象另建风险分级。
|
|
30
30
|
|
|
31
|
-
需求 → 设计文档 → 任务拆分 →
|
|
31
|
+
需求 → 设计文档 → 任务拆分 → 测试场景表(编码/测试唯一真相源)。项目已绑定远端平台时先执行一次 `harness-knowledge-query`;远端不可用则记录 issue 并继续,不做本地回退。
|
|
32
32
|
|
|
33
33
|
## When to Use
|
|
34
34
|
|
|
@@ -46,7 +46,7 @@ disallowed-tools:
|
|
|
46
46
|
6. **implementation-detail** — 自适应执行参考;legacy 缺失 🟡WARN,不阻断
|
|
47
47
|
7. **test-scenarios** — 测试真相源:`plans/<change>-test-scenarios.md`
|
|
48
48
|
8. **禁止读取 `docs/superpowers/` 作为正式输入** — 旧草稿仅人工线索
|
|
49
|
-
9. **每个 skill 边界只刷新一次状态快照** — 先运行 `python <skills-root>/scripts/harness_state.py capture --project . --change-dir ".harness/changes/<change-name>" --base <baseCommit> --json`;`changedSegments=[]` 时复用已有 profile/rules/map/
|
|
49
|
+
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` 段仅为兼容空段,知识始终按需远端查询;快照不能替代源码读取和验证门禁。
|
|
50
50
|
|
|
51
51
|
状态目录分层:新路径优先,旧路径兼容 → [[../protocols/state-layout-protocol.md|state-layout-protocol]]
|
|
52
52
|
> 片段:read-protocol · plan 额外写 `meta/worktree.json`、`meta/change-context.json`
|
|
@@ -86,7 +86,7 @@ disallowed-tools:
|
|
|
86
86
|
|------|------|
|
|
87
87
|
| 0 | 用当前解释器运行 `harness_runtime.py doctor`,后续消费绝对 argv;git status;脏工作区 → baseline 隔离 + `decision`,不询问 |
|
|
88
88
|
| 0.5 | 先执行 `harness_context.py prepare --phase plan --executor <tool> [--change <id>] --json`,以其唯一 change/executionRoot 初始化 plan-run-id 与 attempt(首次为 1),用同一身份追加 `phase.start`;从第一条知识查询起保留事件证据,并在 finalizer 中复用该身份 |
|
|
89
|
-
| 1 | `harness-knowledge-query`
|
|
89
|
+
| 1 | `harness-knowledge-query` 单次远端 query(失败记 `issue`,不建立本地索引或离线回退) |
|
|
90
90
|
| 2 | 歧义优先检查 + 复杂度分级;先确认会改变实现方向的语义歧义 |
|
|
91
91
|
| 3 | 按复杂度执行有预算的代码探索;简单修复不得扩散到无关模块 |
|
|
92
92
|
| 4 | **设计审批包** blocking user confirmation;确认事件早于 approved 设计文档和 `meta/worktree.json` |
|
|
@@ -101,6 +101,11 @@ change-name 范围变更 → 提示重命名或记 🟡WARN(→ `reference.md`
|
|
|
101
101
|
- 命令结果不得靠猜测;普通 Bash 被拒 → 立即改用等价 PowerShell 重试一次
|
|
102
102
|
- 仅 PowerShell 成功且有明确证据(构建/git/测试输出、文件存在、exit 0)时可标 ✅OK;否则 ❌FAIL 或 🟡WARN
|
|
103
103
|
- 禁止把 hook 拒绝、静态验证、无输出、用户跳过说成成功 → 详见 [[../protocols/powershell-protocol.md|powershell-protocol]]、[[../protocols/evidence-based-reporting-protocol.md|evidence-based-reporting-protocol]]
|
|
104
|
+
|
|
105
|
+
## 生成内容语言约定
|
|
106
|
+
|
|
107
|
+
- sync/ingest 等生成的文档、规则、知识条目、架构说明一律**优先使用中文**撰写(标识符、命令、代码、API 字段名保持原文)
|
|
108
|
+
- 面向平台展示的标题/摘要/正文默认中文;仅当用户明确要求或目标系统强制时才用英文
|
|
104
109
|
> 片段:p0-trust
|
|
105
110
|
|
|
106
111
|
## 关键规则
|
|
@@ -15,8 +15,8 @@ description: harness-plan 的阶段检查清单和覆盖检查列表。仅在执
|
|
|
15
15
|
## 阶段 0.5:事件初始化与知识查询
|
|
16
16
|
|
|
17
17
|
- [ ] 先确定 change-name、稳定的 plan-run-id 与 attempt(首次为 1),立即用 `harness_events.py append ... --phase plan --type phase.start --run-id <plan-run-id> --attempt <attempt>` 追加开始事件
|
|
18
|
-
- [ ]
|
|
19
|
-
- [ ] 查询失败追加 `issue
|
|
18
|
+
- [ ] 项目已绑定平台时执行一次远端 knowledge `query`;不另跑前置 sync,不创建本地索引
|
|
19
|
+
- [ ] 查询失败追加 `issue`,不得回退本地 archive/SQLite、重跑“sync + query”循环或假装已读取历史
|
|
20
20
|
|
|
21
21
|
## 阶段 2:歧义优先检查与复杂度分级
|
|
22
22
|
|