@furongjun1999/dsh-memory 0.4.8 → 0.4.10
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/README.md +54 -26
- package/codebuddy/CODEBUDDY.md +196 -195
- package/codebuddy/README.md +13 -1
- package/codebuddy/mcp.json +9 -0
- package/docs/GBrain/345/217/257/345/200/237/351/211/264/347/202/271_/347/201/265/346/236/242/350/220/275/347/202/271/344/272/244/346/216/245_20260919.md +169 -0
- package/docs/README.md +1 -1
- package/docs/discipline/harnesses.yaml +18 -7
- package/docs/discipline/templates/full.md.tmpl +4 -3
- package/docs/experiments/linkref_backfill/candidates_20260917.json +726 -0
- package/docs/experiments/linkref_backfill/candidates_internal_20260917.json +602 -0
- package/docs/experiments/linkref_backfill/candidates_internal_v2.json +603 -0
- package/docs/experiments/linkref_backfill/candidates_secret_20260917.json +884 -0
- package/docs/experiments/linkref_backfill/candidates_secret_v2.json +789 -0
- package/docs/hive//345/244/232/347/253/257harness/351/200/232/344/277/241/345/245/221/347/272/246_v0.1.md +42 -0
- package/docs/hive//346/243/200/347/264/242/346/224/266/346/225/233/345/256/236/346/265/213/344/270/216S1b/350/256/276/350/256/241_v0.1.md +43 -0
- package/docs/hive//346/243/200/347/264/242/350/267/257/345/276/204/344/270/216/350/256/244/347/237/245/347/273/223/346/236/204/345/245/221/347/272/246_v0.1.md +102 -0
- package/docs/hive//347/234/237/345/256/236/345/272/223/347/253/257/345/210/260/347/253/257/345/256/236/346/265/213_S1b/344/270/216/345/217/254/345/233/236/346/235/203/350/241/241_v0.1.md +57 -0
- package/docs/hive//347/234/237/345/256/236/345/272/223/347/253/257/345/210/260/347/253/257/345/256/236/346/265/213_S7/345/200/222/346/216/222/345/200/231/351/200/211/345/261/202_v0.1.md +126 -0
- package/docs/hive//350/234/202/345/267/242/345/217/214/345/256/236/344/276/213/344/272/222/351/252/214_/350/256/276/350/256/241/345/256/232/347/250/277.md +503 -0
- package/docs/mdcg/D_meta_/345/267/245/347/250/213/345/214/226/346/226/271/346/241/210_v0.2.md +216 -0
- package/docs/mdcg/README/350/257/246/347/273/206/347/211/210_v0.4.5.md +631 -625
- package/docs/mdcg//344/273/243/347/240/201/350/257/204/345/256/241/344/270/216/346/235/241/344/273/266/345/214/226/346/263/250/351/207/212_/345/245/221/347/272/246_v0.1.md +82 -0
- package/docs/mdcg//345/205/250/345/272/223/344/273/243/347/240/201/350/257/204/345/256/241/344/270/216/346/235/241/344/273/266/345/214/226/346/263/250/351/207/212_/350/256/241/345/210/222_v0.1.md +600 -0
- package/docs/mdcg//345/212/237/350/203/275/350/260/203/347/224/250/346/230/240/345/260/204/350/241/250_v0.1.md +47 -45
- package/docs/mdcg//345/255/220/344/273/243/347/220/206/351/205/215/347/275/256/346/240/207/345/207/{206_v0.4.md → 206_v0.5.md} +92 -4
- package/docs/mdcg//347/201/265/346/236/242/350/256/260/345/277/206/345/212/250/350/257/215/345/215/217/350/256/256_v1.0-draft.md +172 -0
- package/docs/mdcg//347/216/257/344/272/214_/347/231/275/347/256/261/345/241/253/345/205/205/346/265/201/346/260/264/347/272/277_v0.1.md +31 -0
- package/docs/mdcg//350/267/250/347/253/257/351/252/214/350/257/201/344/270/216/345/220/214/346/255/245/345/215/217/350/256/256_v0.1.md +93 -0
- package/docs/theory//345/271/266/345/217/221/345/277/205/347/204/266/346/200/247/347/220/206/350/256/272_v0.2.md +2 -2
- package/docs/theory//347/220/206/350/256/272_/346/234/272/345/210/266_/344/273/243/347/240/201_/345/256/236/351/252/214_/347/274/272/345/217/243/347/237/251/351/230/265_v0.1.md +3 -3
- package/docs/theory//350/256/244/347/237/245/344/273/243/347/220/206/344/270/216/346/224/266/346/225/233/347/273/223/346/236/204_/346/235/241/344/273/266/350/256/272/351/207/215/346/236/204_v0.1.md +2 -2
- package/docs//345/267/245/344/275/234/347/272/252/345/276/213_/350/256/244/347/237/245/345/233/276/346/235/241/347/233/256_v1.1.json +434 -433
- package/docs//347/201/265/346/236/242/350/207/252/346/210/221/346/224/271/350/277/233/345/267/245/344/275/234/350/256/241/345/210/222_/345/244/226/351/203/250/347/240/224/347/251/266/347/263/273/345/210/227/345/220/270/346/224/266_v1_20260919.md +286 -0
- package/dsh/README.md +33 -0
- package/dsh/cordis.yml.example +13 -7
- package/dsh/hive-mcp-probe.mjs +94 -0
- package/dsh/hive-mcp.example.yml +62 -0
- package/dsh/update-lingshu.bat +11 -0
- package/dsh/update-lingshu.ps1 +337 -0
- package/lib/hooks.d.ts +3 -0
- package/lib/hooks.js +17 -23
- package/lib/index.d.ts +4 -2
- package/lib/index.js +29 -6
- package/lib/lib/datapath.d.ts +76 -1
- package/lib/lib/datapath.js +199 -13
- package/lib/lib/mdcg_client.d.ts +40 -3
- package/lib/lib/mdcg_client.js +46 -22
- package/lib/lib/mutual.js +4 -4
- package/lib/lib/token_store.js +4 -5
- package/md_cg/audit.py +17 -2
- package/md_cg/autonomy.py +86 -15
- package/md_cg/backfill.py +36 -1
- package/md_cg/backfill_bigdomain.py +34 -0
- package/md_cg/bench6_arms.py +28 -1
- package/md_cg/bench6_common.py +10 -1
- package/md_cg/bench6_competitors.py +6 -1
- package/md_cg/bench_axis_domain.py +9 -1
- package/md_cg/bench_blind_comp.py +7 -1
- package/md_cg/bench_en_atoms_public.py +9 -0
- package/md_cg/bench_governance.py +348 -0
- package/md_cg/bench_lme_zh.py +16 -1
- package/md_cg/bench_locomo.py +2 -1
- package/md_cg/bench_locomo_zh.py +16 -1
- package/md_cg/bench_locomo_zh_public.py +4 -1
- package/md_cg/bench_longmem.py +2 -1
- package/md_cg/bench_membench.py +27 -1
- package/md_cg/bench_p0.py +4 -1
- package/md_cg/bench_progressive.py +13 -1
- package/md_cg/bench_role_views.py +238 -0
- package/md_cg/bench_task_ab.py +8 -1
- package/md_cg/bench_task_ab_llm.py +13 -1
- package/md_cg/bench_unified_en.py +6 -1
- package/md_cg/bench_zh_mad.py +20 -1
- package/md_cg/blindspot_tickets.py +123 -0
- package/md_cg/branches.py +12 -1
- package/md_cg/build_postings.py +73 -0
- package/md_cg/ccgc.py +67 -2
- package/md_cg/census.py +5 -1
- package/md_cg/chain.py +24 -3
- package/md_cg/codeindex.py +134 -17
- package/md_cg/coldverify.py +265 -0
- package/md_cg/comment_gate.py +338 -0
- package/md_cg/cond_compose.py +190 -0
- package/md_cg/cond_facts.py +155 -0
- package/md_cg/cond_template.json +107 -0
- package/md_cg/condition_anchor.py +143 -0
- package/md_cg/conformance.py +69 -4
- package/md_cg/consistency.py +24 -1
- package/md_cg/consolidate.py +53 -2
- package/md_cg/corpus.py +4 -0
- package/md_cg/crosscheck.py +42 -2
- package/md_cg/crypto.py +35 -1
- package/md_cg/d_meta.py +310 -0
- package/md_cg/datapath.py +201 -26
- package/md_cg/docindex.py +122 -1
- package/md_cg/eval_common.py +29 -1
- package/md_cg/evidence.py +27 -1
- package/md_cg/evolution.py +21 -1
- package/md_cg/export.py +11 -1
- package/md_cg/forgetting.py +23 -1
- package/md_cg/fsutil.py +18 -1
- package/md_cg/hotcache.py +214 -0
- package/md_cg/hyperedge.py +251 -0
- package/md_cg/identity.py +18 -1
- package/md_cg/insight.py +17 -1
- package/md_cg/lexicon/build_cedict_en_zh.py +9 -0
- package/md_cg/lexicon/build_standard_en.py +171 -168
- package/md_cg/lexicon/expand_en_zh.py +6 -0
- package/md_cg/lifecycle.py +12 -1
- package/md_cg/linkref.py +281 -0
- package/md_cg/links.py +29 -1
- package/md_cg/mcp_server.py +362 -43
- package/md_cg/md_whitebox.py +53 -1
- package/md_cg/mdcg.py +1003 -27
- package/md_cg/mdcos.py +558 -36
- package/md_cg/metacognition.py +37 -2
- package/md_cg/migrate.py +4 -0
- package/md_cg/migrate_aeis.py +221 -213
- package/md_cg/migrate_roleplay.py +8 -0
- package/md_cg/migrate_wisdom_graph.py +14 -1
- package/md_cg/mreview/__main__.py +3 -0
- package/md_cg/mreview/bundle.py +8 -0
- package/md_cg/mreview/candidates.py +9 -0
- package/md_cg/mreview/govern.py +21 -1
- package/md_cg/mreview/locate.py +34 -0
- package/md_cg/mreview/pipeline.py +29 -1
- package/md_cg/mreview/ruleset.py +16 -1
- package/md_cg/nodefile.py +233 -3
- package/md_cg/pooling.py +23 -1
- package/md_cg/postings.py +298 -0
- package/md_cg/predict.py +89 -9
- package/md_cg/progressive.py +3 -0
- package/md_cg/protect.py +14 -1
- package/md_cg/protocol.py +372 -0
- package/md_cg/provenance.py +262 -0
- package/md_cg/reach.py +453 -0
- package/md_cg/refindex.py +47 -2
- package/md_cg/refine.py +20 -1
- package/md_cg/roleviews.py +89 -0
- package/md_cg/routing.py +76 -0
- package/md_cg/scrub.py +63 -2
- package/md_cg/security.py +26 -1
- package/md_cg/self_state.py +64 -1
- package/md_cg/selfreport.py +151 -0
- package/md_cg/semantic/canonical.py +5 -0
- package/md_cg/semantic/en_normalizer.py +364 -355
- package/md_cg/semantic/zh_en_atoms.py +139 -136
- package/md_cg/signer.py +41 -1
- package/md_cg/sources.py +583 -547
- package/md_cg/statushdr.py +179 -0
- package/md_cg/stg.py +59 -18
- package/md_cg/subgraph.py +23 -0
- package/md_cg/sustain.py +56 -1
- package/md_cg/tasks.py +26 -2
- package/md_cg/test_autonomy.py +26 -0
- package/md_cg/test_bench_governance.py +102 -0
- package/md_cg/test_blindspot_tickets.py +166 -0
- package/md_cg/test_ccgc.py +10 -0
- package/md_cg/test_codeindex.py +338 -0
- package/md_cg/test_comment_gate.py +187 -0
- package/md_cg/test_cond_compose_anchors.py +76 -0
- package/md_cg/test_condition_anchor.py +82 -0
- package/md_cg/test_d_meta.py +412 -0
- package/md_cg/test_datapath_root.py +188 -0
- package/md_cg/test_gain_gate.py +47 -1
- package/md_cg/test_hot_cold.py +187 -0
- package/md_cg/test_hyperedge.py +245 -0
- package/md_cg/test_linkref.py +306 -0
- package/md_cg/test_md_access_parity.py +15 -3
- package/md_cg/test_mr_m1.py +108 -18
- package/md_cg/test_mr_m3.py +8 -1
- package/md_cg/test_p26_refindex.py +49 -20
- package/md_cg/test_p27_docindex.py +236 -2
- package/md_cg/test_p2_mcp.py +1 -1
- package/md_cg/test_p31_insight.py +24 -0
- package/md_cg/test_p44_md_whitebox.py +14 -1
- package/md_cg/test_protocol.py +243 -0
- package/md_cg/test_reach.py +378 -0
- package/md_cg/test_reach_keys.py +201 -0
- package/md_cg/test_reach_meta_exits.py +145 -0
- package/md_cg/test_read_clip.py +8 -4
- package/md_cg/test_retr_s1.py +340 -0
- package/md_cg/test_retr_s1b.py +209 -0
- package/md_cg/test_retr_s3.py +194 -0
- package/md_cg/test_retr_s4.py +163 -0
- package/md_cg/test_retr_s5.py +200 -0
- package/md_cg/test_retr_s6.py +157 -0
- package/md_cg/test_retr_s7.py +385 -0
- package/md_cg/test_retr_s8_time.py +316 -0
- package/md_cg/test_retr_s9_edges.py +286 -0
- package/md_cg/test_retr_s9_entity_ctx.py +175 -0
- package/md_cg/test_review_conformance.py +59 -2
- package/md_cg/test_role_views.py +354 -0
- package/md_cg/test_subproc_encoding.py +188 -0
- package/md_cg/test_trust.py +361 -0
- package/md_cg/test_units_poll.py +71 -0
- package/md_cg/test_v14_fixes.py +397 -0
- package/md_cg/test_validity_filter.py +280 -0
- package/md_cg/test_wisdom_md_store.py +7 -3
- package/md_cg/test_writepipe.py +5 -1
- package/md_cg/theory.py +16 -1
- package/md_cg/tokens.py +40 -8
- package/md_cg/tool_face.py +13 -2
- package/md_cg/trust.py +943 -0
- package/md_cg/twophase.py +12 -1
- package/md_cg/units.py +132 -10
- package/md_cg/vision_evidence.py +24 -1
- package/md_cg/weights.py +24 -1
- package/md_cg/whitebox.py +32 -1
- package/md_cg/whitebox_kb/data/verify_cache.json +21210 -365
- package/md_cg/whitebox_kb/data/verify_savings.jsonl +5078 -0
- package/md_cg/whitebox_kb/wisdom/audit_log/chain_heat.json +10 -10
- package/md_cg/whitebox_kb/wisdom/code_compose.py +113 -6
- package/md_cg/whitebox_kb/wisdom/code_solidified.json +1 -1
- package/md_cg/whitebox_kb/wisdom/verifier.py +340 -55
- package/md_cg/whitebox_kb/wisdom/wisdom-book-cloud.db +0 -0
- package/md_cg/writelimit.py +18 -4
- package/md_cg/writepipe.py +178 -7
- package/package.json +2 -2
- package/skills/skills/designer-perspective/scripts/__pycache__/designer.cpython-310.pyc +0 -0
- package/skills/skills/designer-perspective/scripts/designer.py +17 -1
- package/skills/skills/designer-perspective/tests/selftest.py +3 -1
- package/src/hooks.ts +17 -21
- package/src/index.ts +33 -6
- package/src/lib/datapath.ts +211 -13
- package/src/lib/mdcg_client.ts +64 -25
- package/src/lib/mutual.ts +411 -411
- package/src/lib/token_store.ts +4 -5
- package/zcode/AGENTS.md +196 -195
- package/zcode/README.md +4 -0
- package/md_cg/whitebox_kb/wisdom/wisdom-book-cloud.db-shm +0 -0
- package/md_cg/whitebox_kb/wisdom/wisdom-book-cloud.db-wal +0 -0
|
@@ -37,44 +37,46 @@ MCP stdio:md_cg/mcp_server.py
|
|
|
37
37
|
|
|
38
38
|
<!-- FUNCMAP:BEGIN id=cg (scripts/cogmap_sync.py 自动生成 · 勿手改段内) -->
|
|
39
39
|
|
|
40
|
-
**认知基元 `cg` ·
|
|
40
|
+
**认知基元 `cg` · 36 个 op**(行号由本管线从真源自动提取,`check` 门禁守卫漂移):
|
|
41
41
|
|
|
42
42
|
| 功能 | 显式调用 | 代码位置(点击直达源码行) |
|
|
43
43
|
|---|---|---|
|
|
44
|
-
| 按需披露(投影后完整工具 / 参数文档即时取回) | `cg(op=help)` | [`help`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
45
|
-
|
|
|
46
|
-
|
|
|
47
|
-
|
|
|
48
|
-
|
|
|
49
|
-
|
|
|
50
|
-
|
|
|
51
|
-
|
|
|
52
|
-
|
|
|
53
|
-
|
|
|
54
|
-
|
|
|
55
|
-
|
|
|
56
|
-
|
|
|
57
|
-
|
|
|
58
|
-
|
|
|
59
|
-
|
|
|
60
|
-
|
|
|
61
|
-
|
|
|
62
|
-
|
|
|
63
|
-
|
|
|
64
|
-
|
|
|
65
|
-
|
|
|
66
|
-
|
|
|
67
|
-
|
|
|
68
|
-
|
|
|
69
|
-
|
|
|
70
|
-
|
|
|
71
|
-
|
|
|
72
|
-
|
|
|
73
|
-
|
|
|
74
|
-
|
|
|
75
|
-
|
|
|
76
|
-
|
|
|
77
|
-
|
|
|
44
|
+
| 按需披露(投影后完整工具 / 参数文档即时取回) | `cg(op=help)` | [`help`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L1914) → [`_help_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L1833) |
|
|
45
|
+
| 验证态 / 双时间轴 / 履历(含冷路径队列;只读) | `cg(op=status)` | [`status`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L1920) → [`_status_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L1748) |
|
|
46
|
+
| 三元组反查(派生边任意端 / 谓词 / 时间反查;只读) | `cg(op=edges)` | [`edges`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L1923) → [`_edges_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L1804) |
|
|
47
|
+
| 理论检索(领域理论 / 方法论文) | `cg(op=theory)` | [`theory`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L1926) → [`theory`](../../md_cg/theory.py) |
|
|
48
|
+
| 记忆互链(节点间链接管理) | `cg(op=link)` | [`link`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L1943) → [`evidence`](../../md_cg/evidence.py) → [`links`](../../md_cg/links.py) → [`provenance`](../../md_cg/provenance.py) → [`signer`](../../md_cg/signer.py) |
|
|
49
|
+
| 服务信息 / 健康 | `cg(op=info)` | [`info`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2052) → [`audit`](../../md_cg/audit.py) → [`links`](../../md_cg/links.py) → [`nodefile`](../../md_cg/nodefile.py) → [`theory`](../../md_cg/theory.py) |
|
|
50
|
+
| 路由:意图→知识+建议能力 | `cg(op=route)` | [`route`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2069) |
|
|
51
|
+
| 读取(按 id / 召回 / 预算) | `cg(op=read)` | [`read`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2090) → [`refindex`](../../md_cg/refindex.py) |
|
|
52
|
+
| 写入(含冲突检测 / 闸门 / 审核) | `cg(op=write)` | [`write`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2124) → [`writepipe`](../../md_cg/writepipe.py) |
|
|
53
|
+
| 目标(写入 / 状态 / 清单) | `cg(op=goal)` | [`goal`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2132) |
|
|
54
|
+
| 任务实体(登记 / 计划 / 状态 / 结果;done 无结果拒收) | `cg(op=task)` | [`task`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2151) → [`_task_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L1846) |
|
|
55
|
+
| 最近记忆(事件窗口) | `cg(op=recent)` | [`recent`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2154) |
|
|
56
|
+
| 外部裁决回填(节点证据验证) | `cg(op=verify)` | [`verify`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2166) |
|
|
57
|
+
| 审核队列(DEFER / 提案裁决) | `cg(op=review)` | [`review`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2170) |
|
|
58
|
+
| 主动遗忘 / 恢复 | `cg(op=forget)` | [`forget`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2190) |
|
|
59
|
+
| 保护(不可遗忘) | `cg(op=protect)` | [`protect`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2196) → [`_protect_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L1089) |
|
|
60
|
+
| 身份维度 | `cg(op=identity)` | [`identity`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2199) → [`_identity_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L1117) |
|
|
61
|
+
| 一致性检测 | `cg(op=consistency)` | [`consistency`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2202) → [`_consistency_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L1168) |
|
|
62
|
+
| 元认知(盲区聚合) | `cg(op=metacognition)` | [`metacognition`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2205) → [`_metacognition_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L1197) |
|
|
63
|
+
| 自我状态 | `cg(op=self_state)` | [`self_state`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2208) → [`_self_state_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L1232) |
|
|
64
|
+
| 演化(记忆结构演化) | `cg(op=evolution)` | [`evolution`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2211) → [`_evolution_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L1367) |
|
|
65
|
+
| 飞轮 / 自愈 | `cg(op=sustain)` | [`sustain`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2214) → [`_sustain_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L1459) |
|
|
66
|
+
| 洗脑 / 去污染 | `cg(op=scrub)` | [`scrub`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2217) → [`_scrub_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L1568) |
|
|
67
|
+
| 预测 / 因果门 | `cg(op=predict)` | [`predict`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2220) → [`_predict_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L1294) |
|
|
68
|
+
| 因果链 | `cg(op=causal)` | [`causal`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2223) → [`_causal_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L1328) |
|
|
69
|
+
| 白箱能力库(AEIS 能力显式调用) | `cg(op=whitebox)` | [`whitebox`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2226) → [`_whitebox_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2835) |
|
|
70
|
+
| 代码索引 | `cg(op=index_code)` | [`index_code`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2229) → [`refindex`](../../md_cg/refindex.py) |
|
|
71
|
+
| 文档索引 | `cg(op=index_doc)` | [`index_doc`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2261) → [`refindex`](../../md_cg/refindex.py) |
|
|
72
|
+
| 引用 / 反向引用 | `cg(op=ref)` | [`ref`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2297) → [`_ref_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2766) |
|
|
73
|
+
| 会话管理(多会话归属与过滤) | `cg(op=session)` | [`session`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2300) → [`_session_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2496) |
|
|
74
|
+
| 导入落图 | `cg(op=ingest)` | [`ingest`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2303) → [`_ingest_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2573) |
|
|
75
|
+
| 导出 | `cg(op=export)` | [`export`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2306) → [`_export_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2594) |
|
|
76
|
+
| 维护 | `cg(op=maintain)` | [`maintain`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2309) → [`_maintain_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2613) |
|
|
77
|
+
| 记忆固化 / 整理 | `cg(op=consolidate)` | [`consolidate`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2312) → [`_consolidate_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2691) |
|
|
78
|
+
| 洞察 / 自主探索(信息差驱动) | `cg(op=insight)` | [`insight`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2315) → [`_insight_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2716) |
|
|
79
|
+
| CCG 六要素编译(对话→候选→编外复核→落库) | `cg(op=ccg)` | [`ccg`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2318) → [`_ccg_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2325) |
|
|
78
80
|
|
|
79
81
|
<!-- FUNCMAP:END -->
|
|
80
82
|
|
|
@@ -93,10 +95,10 @@ MCP stdio:md_cg/mcp_server.py
|
|
|
93
95
|
|
|
94
96
|
| 功能 | 显式调用 | 代码位置(点击直达源码行) |
|
|
95
97
|
|---|---|---|
|
|
96
|
-
| 两节点关系 | `stg(op=relation)` | [`relation`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
97
|
-
| 时间线 | `stg(op=timeline)` | [`timeline`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
98
|
-
| 锚点检索(时空窗口) | `stg(op=anchors)` | [`anchors`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
99
|
-
| 时空一致性 | `stg(op=consistency)` | [`consistency`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
98
|
+
| 两节点关系 | `stg(op=relation)` | [`relation`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2858) |
|
|
99
|
+
| 时间线 | `stg(op=timeline)` | [`timeline`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2860) |
|
|
100
|
+
| 锚点检索(时空窗口) | `stg(op=anchors)` | [`anchors`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2864) |
|
|
101
|
+
| 时空一致性 | `stg(op=consistency)` | [`consistency`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2868) |
|
|
100
102
|
|
|
101
103
|
<!-- FUNCMAP:END -->
|
|
102
104
|
|
|
@@ -110,12 +112,12 @@ MCP stdio:md_cg/mcp_server.py
|
|
|
110
112
|
|
|
111
113
|
| 功能 | 显式调用 | 代码位置(点击直达源码行) |
|
|
112
114
|
|---|---|---|
|
|
113
|
-
| 白箱问答 | `cg(op=whitebox, action=ask)` | [`ask`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
114
|
-
| 白箱编码(知识写入能力库) | `cg(op=whitebox, action=remember)` | [`remember`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
115
|
-
| 验证编码能力(写入口令→追问命中) | `cg(op=whitebox, action=verify_encoding)` | [`verify_encoding`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
116
|
-
| 验证已有知识回答能力(探针 route=self) | `cg(op=whitebox, action=verify_existing)` | [`verify_existing`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
117
|
-
| 验证报告(self 层留痕汇总) | `cg(op=whitebox, action=report)` | [`report`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
118
|
-
| 连通性探测 | `cg(op=whitebox, action=ping)` | [`ping`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
115
|
+
| 白箱问答 | `cg(op=whitebox, action=ask)` | [`ask`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L505) → [`whitebox.ask`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/whitebox.py#L432) |
|
|
116
|
+
| 白箱编码(知识写入能力库) | `cg(op=whitebox, action=remember)` | [`remember`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L508) → [`whitebox.remember`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/whitebox.py#L445) |
|
|
117
|
+
| 验证编码能力(写入口令→追问命中) | `cg(op=whitebox, action=verify_encoding)` | [`verify_encoding`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L512) → [`whitebox.verify_encoding`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/whitebox.py#L341) |
|
|
118
|
+
| 验证已有知识回答能力(探针 route=self) | `cg(op=whitebox, action=verify_existing)` | [`verify_existing`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L516) → [`whitebox.verify_existing`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/whitebox.py#L374) |
|
|
119
|
+
| 验证报告(self 层留痕汇总) | `cg(op=whitebox, action=report)` | [`report`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L520) → [`whitebox.report`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/whitebox.py#L479) |
|
|
120
|
+
| 连通性探测 | `cg(op=whitebox, action=ping)` | [`ping`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L522) → [`whitebox.ping`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/whitebox.py#L409) |
|
|
119
121
|
|
|
120
122
|
<!-- FUNCMAP:END -->
|
|
121
123
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# 子代理配置标准 v0.
|
|
1
|
+
# 子代理配置标准 v0.5
|
|
2
2
|
|
|
3
3
|
> **本文件定义:向蜂巢派发任何子代理时的配置标准。**
|
|
4
4
|
> **体系定位**(收敛裁定 2026-09-15):三份核心文档之**工程层**——《并发必然性理论_v0.2》(理论层:定理 T 与判据)→《认知代理与收敛结构_条件论重构_v0.1》(架构层:代理定义与收敛结构)→ 本文(工程层:spec 配置);理论概念的工程投影见 §6。
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
> v0.2 修订:按使用者指示——模型可选默认 flash、上下文=任务+读记忆、数量可选、200k 拆解信号、提示词随任务保留。
|
|
8
8
|
> v0.3 修订:新增 §6「与理论层的对应」(条件论公设 P1/P2、CA-T1/T3/T4 落为配置判据);其余不变。
|
|
9
9
|
> v0.4 修订(使用者裁定 2026-09-16):**统一执行默认下沉到 MCP 面**(思考强度 high / 上下文 200k / 超时 600s,缺省即注入,见 §0);**模型名与 base 强配对**(错配即 API 400,见 §1);新增 §7「确定性执行」(`exec_cmd.py`——零 LLM 任务同走蜂巢留痕)。
|
|
10
|
+
> v0.5 修订(使用者裁定 2026-09-16):**正式确立六位运行时角色拓扑**——新增 §8。**副代理正名「设计者视角」**(职责 = 总体方向判断 / 全局信息视角 / 提出建议);明确**副代理 = 融合位 𝓕**(与五大单元是整体与分片关系,非并列);**融合裁决归副代理**(澄清 §6 与 §5 的历史表述);**记录 / 维生双形态**(程序为常规载体、单元为兜底)。
|
|
10
11
|
|
|
11
12
|
---
|
|
12
13
|
|
|
@@ -58,9 +59,10 @@
|
|
|
58
59
|
- 主代理从 L0 全局态裁剪**该子任务相关的部分**直接注入(最小充分上下文,不注入全部);
|
|
59
60
|
- 产出按《主代理子代理记忆架构设计》回流:五栏卡片(L1)+ 细节层(L2),`session` 硬隔离,`derived_from` 溯源。
|
|
60
61
|
|
|
61
|
-
**实测边界(2026-09-15
|
|
62
|
+
**实测边界(2026-09-15 已补机制;2026-09-19 增补只读文件面)**:~~蜂巢 Python 执行器环境未挂载 `lingshu_cg` 工具~~ → **worker 侧工具面已落地**(`hive/exec.py` agent loop,同日):`spec.tools: ["lingshu_cg", "web_search", "read_file"]` 白名单启用(子代理白名单 = `hive/orch.py` 的 `SUB_TOOLS_ALLOW`,编排三工具不外传)。实测要点:
|
|
62
63
|
- **lingshu_cg**:op=route/read/write 白名单(复用 MCP 面同一 dispatch);权限硬编码 recorder(写入过闸门:DEFER 入审核队列/REJECT 负记忆是设计行为,**裁决权仍归设计者**,子代理不得自裁自决);会话隔离 `session=hive_job_<id>`;部署要求 serve env 设 `MDCG_ROOT`(或 `spec.mdcg_root` 兜底,任务级隔离用临时图)。
|
|
63
64
|
- **web_search**:zhipu 后端(`HIVE_WEB_SEARCH_BASE` 缺省智谱官方端点,与 `HIVE_API_BASE` 解耦——中转网关无搜索路由必 404;`HIVE_WEB_SEARCH_KEY` 缺省回落执行器密钥,**key 与 base 不配对时 401,须独立设置**);duckduckgo 零 key 兜底。
|
|
65
|
+
- **read_file**(2026-09-19 新增):读本地文件/目录,**只读**——schema 内无任何写参数,结构上不可能落盘改状态。读写不对称原则:**读放开**(缺省全路径开放,仅 `HIVE_READ_ROOTS` 非空时收窄,越界即拒读并回报 `roots`)、**写严格**(执行器唯一写路径仍是 `lingshu_cg op=write`,过校验闸门)。目录给清单(子目录优先);文本给行窗分页(`offset`/`limit`/`max_chars`,默认 2000 行 / 60000 字符);图像只给类型+尺寸、二进制只给类型+字节数(`content=null`,不猜内容);非 UTF-8 按替换处计数并在 `note` 标存疑;相对路径基准 = `workdir`。子任务因此可**推理中途动态查证现场文件**,不必把材料预先静态塞进 `context_files`。
|
|
64
66
|
- 每轮工具调用记入 `result.json` 的 `tool_trace`(审计可回放);`max_tool_rounds` 默认 5,耗尽强制终答。
|
|
65
67
|
- 主代理的「最小充分上下文直接注入任务体」原则**保持不变**:工具是增量不是替代——任务体仍须自包含,工具用于按需深挖与回写。
|
|
66
68
|
|
|
@@ -96,9 +98,9 @@
|
|
|
96
98
|
| 认知任务原子性 P1(架构层公设) | spec=一个原子收敛单位:每个子代理领一个完整子任务(工作任务+验收标准),产出即裁决单位 R_i(result.json 终态)。**spec 不是「任务切块」,是条件投影的落地** |
|
|
97
99
|
| 条件投影可分性 P2 + CA-T1(架构层) | 子代理数量可选(§1):数量由条件投影的**实质区分**决定(观测位置/工具/时间窗/存在约束任一维不同且影响信息可得性),不由任务大小/长度决定 |
|
|
98
100
|
| 收敛带宽 B_c(理论层定理 T) | context_budget_tokens=200000(§4):**200k 不是资源配额,是拆解信号**——预估超出 = W > B_c(信息流宽度超过调用带宽),收敛粒度必须下沉 |
|
|
99
|
-
| 收敛位唯一、责任不分散 T4(理论层) |
|
|
101
|
+
| 收敛位唯一、责任不分散 T4(理论层) | 副代理(agent 本体)收 result 做融合裁决;worker 只产出 R_i,不自裁(**副代理 = 设计者视角,见 §8.2**) |
|
|
100
102
|
| 串行正当四分类(架构层 §5.1) | 派发前自查:任务链是否真有数据依赖——基座/约束/成本串行才拆串行,认知伪串行应并发 |
|
|
101
|
-
| 融合位裁决纪律(架构层 §4.2) |
|
|
103
|
+
| 融合位裁决纪律(架构层 §4.2) | 副代理汇总时以 R_i 的证据与四态资格裁决,**不以「多个 result 一致」代替验证**(裁决归位见 §8.2) |
|
|
102
104
|
|
|
103
105
|
**理论 → 配置判据速查**:
|
|
104
106
|
|
|
@@ -134,6 +136,91 @@
|
|
|
134
136
|
|
|
135
137
|
---
|
|
136
138
|
|
|
139
|
+
## 8 运行时角色拓扑(六位)(v0.5 新增 · 使用者裁定 2026-09-16)
|
|
140
|
+
|
|
141
|
+
> **一次命名裁定**:本体系运行时共 **六位** 角色 = **1 副代理 + 5 单元**。副代理即 **设计者视角**(正名,见 §8.2)。
|
|
142
|
+
|
|
143
|
+
### 8.1 全景:1 + 5,不是六个并列
|
|
144
|
+
|
|
145
|
+
$$运行时 = A_F + \{\text{记录},\ \text{反思},\ \text{验证},\ \text{输出},\ \text{维生}\}$$
|
|
146
|
+
|
|
147
|
+
**结构性质(架构层 §4.3 原文)**:
|
|
148
|
+
|
|
149
|
+
> `𝓕 的功能分解=五大单元(记录/反思/验证/输出/维生)`
|
|
150
|
+
|
|
151
|
+
即 **副代理不是与五单元并列的「第六个单元」,而是融合位 𝓕 本身;五大单元是 𝓕 的功能分解**。两者是 **整体与分片** 的关系,不是同层并列——这正是「副代理与输出单元要分类」的根据(见 §8.3)。
|
|
152
|
+
|
|
153
|
+
**四层同构映射**(同一个位在四层真源中的四张面孔;一张表消灭「副代理/融合位/第六实例/编排者谁是它」的反复歧义):
|
|
154
|
+
|
|
155
|
+
| 运行时(本文) | 工程层(本文) | 架构层(`认知代理与收敛结构_条件论重构_v0.1`) | 理论层(`智能论3.4`) | 技能层(`designer-perspective`) |
|
|
156
|
+
|---|---|---|---|---|
|
|
157
|
+
| **副代理** | **编排者**(agent 本体) | **融合位 $A_F$ / 𝓕**(§4.2 / §4.3) | **第六实例**(附录18.1:承担蜂群整体责任和方向判断) | **设计者视角元技能**(五步) |
|
|
158
|
+
| 记录单元 | 子代理(§2 记录模板) | 𝓕 的功能分解之一 | 五大单元·记录 | — |
|
|
159
|
+
| 反思单元 | 子代理(§2 反思模板) | 同上 | 五大单元·反思 | — |
|
|
160
|
+
| 验证单元 | 子代理(§2 验证模板) | 同上 | 五大单元·验证 | — |
|
|
161
|
+
| 输出单元 | 子代理(§2 输出模板) | 同上 | 五大单元·输出 | — |
|
|
162
|
+
| 维生系统 | 子代理 / 程序(§7 + §8.4) | 同上 | 五大单元·维生 | — |
|
|
163
|
+
|
|
164
|
+
### 8.2 副代理 = 设计者视角(正名)
|
|
165
|
+
|
|
166
|
+
**裁定(使用者,2026-09-16)**:正式将副代理命名为 **设计者视角**。职责三条:
|
|
167
|
+
|
|
168
|
+
| 职责 | 含义 | 技能锚点 | 理论锚点 |
|
|
169
|
+
|---|---|---|---|
|
|
170
|
+
| **总体方向判断** | 从整体看:识别未知区域(盲区)→ 据此定方向。方向来自「哪里不知道」,不是「哪里最像」 | 技能步骤 4(方向判断与关注信号) | 附录18.1「承担蜂群整体责任和方向判断」 |
|
|
171
|
+
| **全局信息视角** | 信息来自整个运行时的聚合,而非单一投影的观测 | 技能步骤 1(全局观测位置声明)+ 步骤 2(认知图整体观测) | 附录18.1「信息来源于整个蜂群实例的时空图聚合,而非单一实例的观测」 |
|
|
172
|
+
| **提出建议** | 只输出判定单与关注信号(signal),**不替操作层做内部决策** | 技能「位置声明」:设计者位置的功能是 **放权,不是控制**;「观测不干预」 | 附录18.2「设计者视角承担整体责任」 |
|
|
173
|
+
|
|
174
|
+
**融合裁决归位(澄清历史表述)**:架构层 §4.2 定义融合位 $A_F = \langle C_F,\ S_F{=}\{R_i\},\ G_F{=}\textbf{裁决},\ \dots \rangle$——**融合裁决归副代理(设计者视角)**。据此,§6 表中「副代理(agent 本体)收 result 做融合裁决」(v0.4 原文作「编排者」,即本次正名所改)与 §5 输出单元「你不是裁决者」两条 **同时成立、不再冲突**:
|
|
175
|
+
|
|
176
|
+
- 裁决归 **副代理**(融合位);输出单元只做 **调度**(装配与发射),**不自裁**。
|
|
177
|
+
- **两层裁决不同阶**:验证单元裁的是 **单个 $R_i$ 的四态资格**(该结果是否有资格);副代理裁的是 **$R_i$ 之间的融合与方向**(架构层 §4.4:反题 = $R_i$ 间冲突检测)。
|
|
178
|
+
|
|
179
|
+
**载体(不新增角色)**:设计者视角在多数情形下由 **agent 本体(宿主)** 承载;当任务需要独立观测位时,可派 **独立的编排子代理** 承载——仍是同一角色的可替代载体。
|
|
180
|
+
|
|
181
|
+
**克制条款(逐字沿用技能边界,不得放宽)**:
|
|
182
|
+
|
|
183
|
+
1. **不执行**:产出判定单与建议调用清单,不产出操作结果。
|
|
184
|
+
2. **不裁决事实**:资格判定由条件证据裁决;事实裁决归验证单元与 MCP 基底。
|
|
185
|
+
3. **不写库**:`record/verify/flywheel` 等写操作只输出建议参数,由 agent 显式发起。
|
|
186
|
+
4. **不硬答盲区**:无法建立判断路径时判 **BLINDSPOT** 并停止猜测,指出缺失的条件维度。
|
|
187
|
+
|
|
188
|
+
**系统提示词载体(不另造模板)**:副代理的提示词 = **`designer-perspective` 技能本体**(含五步执行、判定单固定格式、克制条款),**不新增单元模板**;五单元提示词仍按《单元自我锚点_系统提示词标准》§2–§6 组装(§2 已定)。
|
|
189
|
+
|
|
190
|
+
### 8.3 副代理 vs 输出单元:判断 / 调度分职
|
|
191
|
+
|
|
192
|
+
| 面 | 副代理(设计者视角 = 融合位 𝓕) | 输出单元(𝓕 的功能分片) |
|
|
193
|
+
|---|---|---|
|
|
194
|
+
| 观测位置 | **全局**(整个运行时的聚合) | **局部**(本投影的发射端) |
|
|
195
|
+
| 职责 | **总的信息判断**:方向 / 融合裁决 / 关注信号 | **调度**:spec 装配、派发、结果回收对齐 |
|
|
196
|
+
| 与 $R_i$ 的关系 | 消费 $R_i$ 作裁决输入($S_F=\{R_i\}$) | 产出 / 发射 $R_i$ 及证据($O_F$ 面) |
|
|
197
|
+
| 可否自裁 | **裁决者**(唯一融合裁决位) | **不可自裁**(§5 输出锚点:「你不是裁决者——不评判任务价值、不静默修改用户意图」) |
|
|
198
|
+
| 越权判据 | 若代做 spec 装配细节 → **下沉过度**(失去全局位) | 若做了融合裁决 → **越权**(出现两个裁决位) |
|
|
199
|
+
|
|
200
|
+
**一句话**:**副代理持全局做判断,输出单元持局部做调度**——同为 𝓕,一个在整体位(融合位),一个在分片位(功能分解之一)。
|
|
201
|
+
|
|
202
|
+
### 8.4 记录 / 维生:程序为常规载体,单元为兜底
|
|
203
|
+
|
|
204
|
+
使用者裁定(2026-09-16):**保留记录单元、维生系统,作为兜底。**
|
|
205
|
+
|
|
206
|
+
| 角色 | 常规载体(主路径) | 兜底载体(单元子代理) | 切换判据 |
|
|
207
|
+
|---|---|---|---|
|
|
208
|
+
| **记录** | **程序**:写入即落盘 + 索引自动(`add` / `_stage` / `_scan_nodes` 全链路自动归属与索引) | **记录单元子代理**(§2 记录模板) | ① 程序遗漏(自动索引未覆盖的新形态)② 需语义归纳而非机械落盘 ③ 跨仓/跨端无迁移能力 |
|
|
209
|
+
| **维生** | **程序**:`md_cg/sustain.py`(心跳 / 互检 `mutual_watch` / 自动修复 / 审计 `_sustain.jsonl`),零 LLM 确定性 | **维生单元子代理**(§2 维生模板) | ① `sustain` 不可用(进程外/权限受限)② 需语义判断的存续决策 ③ 部署侧未挂守护 |
|
|
210
|
+
|
|
211
|
+
**为什么常规走程序**:记录与维生的核心动作(落盘、索引、心跳、拉起)是 **确定性计算**——第 7 条兜底纪律与第 12 条算法权威唯一原则都要求「主路径用确定性机制」;LLM 在此只增加导航税与不确定性。
|
|
212
|
+
|
|
213
|
+
**为什么仍保留单元**:程序有覆盖边界(新形态、语义归纳、不可迁移部署),**无兜底即单点失效**(第 7 条:主路径不可用则切等价兜底)。故单元形态 **不删除、降为兜底**。
|
|
214
|
+
|
|
215
|
+
### 8.5 装配规程(一次派发,六位通用)
|
|
216
|
+
|
|
217
|
+
1. **谁派发**:副代理(设计者视角)做 **方向判断与融合裁决**;输出单元做 **spec 装配与发射**;实际提交统一走蜂巢(第 17 条:`hive_spawn` / CLI submit + 留痕)。
|
|
218
|
+
2. **系统提示词**:副代理 = 技能本体(§8.2);五单元 = 《单元自我锚点_系统提示词标准》§2–§6。
|
|
219
|
+
3. **回填**:五单元产出 $R_i$(`result.json` 终态)→ 副代理按 §6 融合位裁决纪律裁决(**不以「多个 result 一致」代替验证**)。
|
|
220
|
+
4. **拓扑不变式**:任一时刻 **融合裁决位唯一**(架构层 T4 收敛位唯一、责任不分散);单元可多开(§1 数量可选),**副代理不随之复制**。
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
137
224
|
## 附:版本差异(使用者教改记录)
|
|
138
225
|
|
|
139
226
|
| # | 上一版(错误形态) | 本版(修订) |
|
|
@@ -146,3 +233,4 @@
|
|
|
146
233
|
| 6 | 每次临时组装提示词,无保留复用(v0.1) | 提示词随任务保留;长期任务复用;满上下文读工作记忆续跑(v0.2) |
|
|
147
234
|
| 7 | (v0.2 无理论对应节) | v0.3 新增 §6:公设 P1/P2、CA-T1/T3/T4 落为配置判据与速查 |
|
|
148
235
|
| 8 | 统一执行默认停留在口头约定,MCP 面不透传 effort / 预算(v0.3) | v0.4 §0:三项默认下沉到 `hive_spawn` 缺省注入 + `spec_defaults` 回显;§7 补确定性执行 worker |
|
|
236
|
+
| 9 | 运行时角色拓扑散落四层,无一处成文;「副代理」仅第三方报告用词,与融合位/第六实例/编排者被当成四个东西(v0.4) | v0.5 §8:**六位拓扑成文**(1 副代理 + 5 单元)+ **副代理正名「设计者视角」**(方向判断 / 全局视角 / 提建议)+ **融合裁决归位副代理**(§6 与 §5 历史表述澄清)+ **记录 / 维生双形态**(程序常规、单元兜底) |
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
# 灵枢记忆动词协议 v1.0(draft)
|
|
2
|
+
|
|
3
|
+
> **本文档是投影,不是真源。** 真源 = `md_cg/protocol.py`(`VERBS` / `VERB_SPECS` /
|
|
4
|
+
> `WRITE_TRIO` / `OP_DERIVE` / `DERIVE_EXTRA_KEYS` / `VERDICT_FIELDS`)。
|
|
5
|
+
> 文档与 `md_cg/conformance.py` 的断言**均从真源取值**;改形状只改真源,本文档随之同步。
|
|
6
|
+
> 手写行号会腐化(本仓已有实证),故本文档只写**符号名**不写行号。
|
|
7
|
+
|
|
8
|
+
**版本**:v1 · **状态**:draft(`protocol.FROZEN = False`)
|
|
9
|
+
|
|
10
|
+
## 1 目的与范围
|
|
11
|
+
|
|
12
|
+
把 MCP 记忆工具面的**动词与 I/O 形状**冻结成可裁决的声明,使三端(本仓 MCP 客户端 /
|
|
13
|
+
DSH 内建基元 / 第三方客户端)**各自实现客户端而不必读源码**。
|
|
14
|
+
|
|
15
|
+
- **动词范围(先行收窄)**:`route` / `read` / `write` / `supersede` / `forget`。
|
|
16
|
+
- **协议面 ≠ MCP 面全量**:`_cg_dispatch` 现有 35 个 op 分支,其中 30 个
|
|
17
|
+
(`ccg` / `review` / `protect` / `verify` / `whitebox` …)属**扩展能力面**——
|
|
18
|
+
它们是能力,不是协议违例。把协议覆盖范围当成 MCP 面全量,会让协议每加一个 op
|
|
19
|
+
就永久红灯;故反向对账降级为 `extension_ops` 报告项(清单可见、**不 FAIL**)。
|
|
20
|
+
扩展面的文档一致性由 README 认知图 + `docs/mdcg/功能调用映射表` 的 cogmap 门禁承担。
|
|
21
|
+
- **非目标**:本文档不定义 HTTP / 传输层;不定义扩展 op 的形状(只登记其存在)。
|
|
22
|
+
|
|
23
|
+
## 2 三条铁律
|
|
24
|
+
|
|
25
|
+
| # | 铁律 | 判据 |
|
|
26
|
+
|---|---|---|
|
|
27
|
+
| 1 | **不冒充** | 未实现的动词登记 `status="reserved"` 并给出 `map_to` 现状映射证据;live 的形状取**代码实测**,不取设想 |
|
|
28
|
+
| 2 | **write 三键铁律** | `write` **任一形态**必含 `ok` / `id` / `committed` 三键——客户端据此判定「是否落盘」,不靠猜 |
|
|
29
|
+
| 3 | **fail-closed 取形状** | 未声明动词 / 未声明形态直接抛 `KeyError`,不返回空壳(`protocol.shape_of`) |
|
|
30
|
+
|
|
31
|
+
`ok` 与 `committed` **分离**是本协议对客户端最有价值的一条:它表达
|
|
32
|
+
「**闸门行为 ≠ 工具故障**」——`ok=True, committed=False` 是校验闸门正常短路
|
|
33
|
+
(REJECT / DEFER / 冲突),**重试同样结果**,客户端不应重试而应读 `hint`。
|
|
34
|
+
|
|
35
|
+
## 3 动词总览
|
|
36
|
+
|
|
37
|
+
| 动词 | status | 变更性 | 必需入参(任一满足) | 形态数 | 语义 |
|
|
38
|
+
|---|---|---|---|---|---|
|
|
39
|
+
| `route` | live | 否 | `intent` \| `query` | 1 | 只给知识与建议能力名,不执行 |
|
|
40
|
+
| `read` | live | 否 | `node_id` \| (`query` \| `intent`) \| `budget_tokens` | 4(含 null) | 读三分态:单节点 / 结果列表 / token 预算包 |
|
|
41
|
+
| `write` | live | 是 | `content` | 4 | 落盘或闸门短路;未 committed 必给去向 |
|
|
42
|
+
| `supersede` | **reserved** | 是 | `node_id` \| `superseded_by` | 1(planned) | 以新节点取代旧节点(**未实现**,见 §5) |
|
|
43
|
+
| `forget` | live | 是 | `node_id` | 3 | 软删(移 trash + 删除清单 + 摘索引)与恢复 |
|
|
44
|
+
|
|
45
|
+
## 4 形状声明(required 必在,optional 可缺)
|
|
46
|
+
|
|
47
|
+
### 4.1 `route`
|
|
48
|
+
|
|
49
|
+
| 形态 | when | required | optional |
|
|
50
|
+
|---|---|---|---|
|
|
51
|
+
| `default` | 恒 | `knowledge`, `meta` | `suggested_capabilities`, `note` |
|
|
52
|
+
|
|
53
|
+
### 4.2 `read`(三分态 + null)
|
|
54
|
+
|
|
55
|
+
| 形态 | when | required | optional |
|
|
56
|
+
|---|---|---|---|
|
|
57
|
+
| `node` | `node_id` 非空且目标存在且可见 | `id`, `path`, `frontmatter`, `content`, `verification_state` | `truncated`, `content_lines`, `content_bytes`, `offset`, `next_offset`, `note` |
|
|
58
|
+
| `node_missing` | `node_id` 非空但目标不存在 / 不可见 / 已软删 | **(返回 `null`)** | — |
|
|
59
|
+
| `list` | `budget_tokens` 为空 | `meta`, `results` | — |
|
|
60
|
+
| `pack` | `budget_tokens` 非空 | `pack`, `tokens_used`, `budget`, `skipped`, `recent`, `meta` | — |
|
|
61
|
+
|
|
62
|
+
> **`read` 目标缺失返回 `null`(实测),不是错误对象。** 客户端必须先判空再解析:
|
|
63
|
+
> 把 `null` 当异常会误报,把 `null` 当空内容会静默吞未知。这是本协议里唯一
|
|
64
|
+
> 以 `returns_null` 登记的形态。
|
|
65
|
+
|
|
66
|
+
### 4.3 `write`(四形态)
|
|
67
|
+
|
|
68
|
+
| 形态 | when | required | optional |
|
|
69
|
+
|---|---|---|---|
|
|
70
|
+
| `committed` | 链尾执行器落盘 | `ok`, `id`, `committed` | `verdict`, `consistency`, `propagation` |
|
|
71
|
+
| `gate_short_circuit` | 任一 before 闸门短路(审核 REJECT / DEFER / 冲突) | 三键 + `moved_to`, `verdict`, `hint` | `pid`, `dedup`, `dup_of`, `dup_status`, `consistency` |
|
|
72
|
+
| `gate_hard_reject` | 契约缺失硬拒(依赖声明闸 E050/E051) | 三键 + `gate`, `error`, `hint` | `missing`, `verdict` |
|
|
73
|
+
| `gate_gated` | 主动遗忘闸(`gated=true`) | 三键 + `gate`, `verdict` | `consistency`, `moved_to`, `propagation` |
|
|
74
|
+
|
|
75
|
+
`hint` 的语义固定为:**闸门正常行为、不是工具故障、重试同样结果**(并给出下一步 op)。
|
|
76
|
+
|
|
77
|
+
### 4.4 `forget`
|
|
78
|
+
|
|
79
|
+
| 形态 | when | required | optional |
|
|
80
|
+
|---|---|---|---|
|
|
81
|
+
| `forgotten` | `action` 缺省或非 `restore` | `ok`, `id`, `tombstone` | — |
|
|
82
|
+
| `restored` | `action == 'restore'` | `ok`, `id`, `forced` | — |
|
|
83
|
+
| `failed` | 目标不存在 / 已 tombstone(未 force)/ trash 无文件 / OSError | `ok`, `error` | `reason`, `t`, `action`, `action_derived`, `hint_action` |
|
|
84
|
+
|
|
85
|
+
### 4.5 `supersede`(reserved,未实现)
|
|
86
|
+
|
|
87
|
+
| 形态 | when | required | optional |
|
|
88
|
+
|---|---|---|---|
|
|
89
|
+
| `planned` | (预留位,尚未实现) | `ok`, `id`, `superseded_by` | `supersedes`, `propagation`, `verdict` |
|
|
90
|
+
|
|
91
|
+
## 5 `supersede` 为何 reserved 而非 live
|
|
92
|
+
|
|
93
|
+
**现状映射证据(`map_to`,即「现在实际怎么做」)**:
|
|
94
|
+
|
|
95
|
+
| 现有锚 | 说明 |
|
|
96
|
+
|---|---|
|
|
97
|
+
| `write` | 新节点写入本身走 `write`(五动词不重复造写入通道) |
|
|
98
|
+
| `review` / `verify` | 现有撤回体系由校验(`verify` 验伪)与审核(`review` 的 delete/merge)承担,无独立取代动词 |
|
|
99
|
+
| `nodefile.believed_at` | 取代语义的锚字段已就位(写侧注释),缺的是动词入口与检索面过滤 |
|
|
100
|
+
|
|
101
|
+
**不实现的原因**:取代会改变**默认检索面**(被取代节点是否可见),属行为变更,
|
|
102
|
+
须先冻结协议再落实现——否则三端各自发明可见性口径,协议形同虚设。
|
|
103
|
+
|
|
104
|
+
## 6 op 推导兜底(客户端须知)
|
|
105
|
+
|
|
106
|
+
`op` 漏传时 wrapper 按入参签名推导(2026-09-13 防呆落地):
|
|
107
|
+
|
|
108
|
+
| 入参签名 | 推导 op |
|
|
109
|
+
|---|---|
|
|
110
|
+
| `content` | `write` |
|
|
111
|
+
| `query` | `read` |
|
|
112
|
+
| `node_id` | `read` |
|
|
113
|
+
| `intent` | `route` |
|
|
114
|
+
| (无签名) | `read` |
|
|
115
|
+
|
|
116
|
+
推导发生时返回体**追加透出** `op` / `op_derived` / `hint`(`DERIVE_EXTRA_KEYS`)——
|
|
117
|
+
语义是「本次 op 是猜的」,客户端据此可要求调用方补显式 op。这是 **additive** 行为,
|
|
118
|
+
不破坏各形态的 required 子集判定。
|
|
119
|
+
|
|
120
|
+
> 协议侧只作**文档化声明**,不对推导做强静态对账:推导实现散落在 wrapper 分支里,
|
|
121
|
+
> 强做正则对账会误报——**宁可少断言,不可假绿灯**。
|
|
122
|
+
|
|
123
|
+
## 7 `verdict` 字段集
|
|
124
|
+
|
|
125
|
+
写路径闸门短路时随返回透出(`VERDICT_FIELDS`):
|
|
126
|
+
|
|
127
|
+
`state` · `kind` · `basis` · `evidence` · `detail`
|
|
128
|
+
|
|
129
|
+
其中 `state ∈ {ACCEPT, REJECT, DEFER, BLINDSPOT}`(四态资格裁决)。
|
|
130
|
+
客户端应据 `state` 决定「可用 / 待补 / 不可用」,而不是据 HTTP 式成败。
|
|
131
|
+
|
|
132
|
+
## 8 静态对账与门禁
|
|
133
|
+
|
|
134
|
+
`conformance.check()` **恒追加**四条断言(`protocol.*`):
|
|
135
|
+
|
|
136
|
+
| check id | 级别 | 判据 |
|
|
137
|
+
|---|---|---|
|
|
138
|
+
| `protocol.op.extension_surface` | WARN | 报告协议冻结面与扩展面规模(能力不是违例) |
|
|
139
|
+
| `protocol.verb.implemented` | FAIL | 声明为 live 的动词在 MCP 面均有实现分支(**说了没做**) |
|
|
140
|
+
| `protocol.verb.reserved_clean` | FAIL | reserved 动词未出现实现分支(**预留位被静默实现**) |
|
|
141
|
+
| `protocol.shape.declared` | FAIL | 每动词至少一形态、每形态有 `when`、reserved 有 `map_to`、live 有 `impl` |
|
|
142
|
+
|
|
143
|
+
op 分支提取用 **AST** 而非正则(`protocol._ops_from_source`):正则对单引号 /
|
|
144
|
+
换行 / `op.strip().lower()` 形态会**静默漏提**,而漏提在本协议里等于假绿灯
|
|
145
|
+
(cogmap 已有同类教训:单引号写法静默漏报窗口)。AST 结构性识别不依赖写法。
|
|
146
|
+
|
|
147
|
+
**命令**:
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
python -m md_cg.protocol # 打印静态对账结论(只读,零写入)
|
|
151
|
+
python -m md_cg.test_protocol # 形状钉死测试(41 断言:静态 17 + 真调 16 + 集成 8)
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## 9 边界与不适用条件
|
|
155
|
+
|
|
156
|
+
**生效条件**:三端需要按同一形状实现记忆客户端时;改动五动词任一的返回形状时;
|
|
157
|
+
新增/变更 MCP 面 op 分支时(须复核是否触碰协议面)。
|
|
158
|
+
|
|
159
|
+
**不适用条件**:
|
|
160
|
+
|
|
161
|
+
- 扩展能力面(30 个 op)的形状——本协议不定义,由各自模块文档与 cogmap 门禁承担。
|
|
162
|
+
- 传输 / 序列化 / 鉴权——属宿主层,不在协议面。
|
|
163
|
+
- 未冻结前(draft 期)**形状可破坏性调整**;冻结是单向门,须三端实测收敛后
|
|
164
|
+
由使用者拍板(工作计划 §9 风险 3)。冻结后改形状须递增版本号(v1 → v2),
|
|
165
|
+
不得原地改 v1。
|
|
166
|
+
|
|
167
|
+
**已知边界(如实声明,不假装覆盖)**:
|
|
168
|
+
|
|
169
|
+
- `write.committed` 形态在**无 `MDCG_POLICY_FILE` 的环境不可达**(校验闸门恒 DEFER
|
|
170
|
+
入 `review_queue`),故 `test_protocol` 的 B 段按实际走的那一态校验形状;
|
|
171
|
+
`committed` 字段依据是 `writepipe` 链尾执行器的**源码事实**而非实测返回。
|
|
172
|
+
- 本协议只冻结**形状**(键集),不冻结**取值语义**(如 `pack` 内条目排序口径)。
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# 环二·白箱填充流水线 v0.1(测试阶段记录)
|
|
2
|
+
|
|
3
|
+
> 分工(使用者裁定 2026-09-17):**LLM 提供模板并做校验;白箱负责确定性填充**;先测试(自有文件)→ 再试点(10 符号)→ 后规模化。
|
|
4
|
+
|
|
5
|
+
## 一、流水线四段
|
|
6
|
+
|
|
7
|
+
| 段 | 产物 | 性质 | 位置 |
|
|
8
|
+
|---|---|---|---|
|
|
9
|
+
| ① 事实提取 | 逐符号 required/optional/externals/guards/returns/doc | **确定性**(ast) | `md_cg/cond_facts.py` |
|
|
10
|
+
| ② 模板 | 7 槽位 + 10 规则 + 12 条校验清单 | **LLM 单次产出**(job `h1789643186033_ba80bc`) | `md_cg/cond_template.json`(含 `_provenance`) |
|
|
11
|
+
| ③ 填充 | 中文功能级生效条件 | **确定性**(零 LLM) | `md_cg/cond_compose.py` |
|
|
12
|
+
| ④ 校验 | 逐条 PASS/REVISE/BLINDSPOT + 依据 | **LLM 单次复核**(job `h1789643407918_380037`) | 见本文件 §三 |
|
|
13
|
+
|
|
14
|
+
门禁:任一条生成文本须过 `md_cg/condition_anchor.judge`(`ANCHORED` 或 `BLINDSPOT`;`WEAK`/`REJECT_META` 不放行)。**锚点通过 ≠ 语义正确**,故必须有 ④。
|
|
15
|
+
|
|
16
|
+
## 二、测试结果(自有文件:`condition_anchor.py` + `cond_facts.py`)
|
|
17
|
+
|
|
18
|
+
- 事实提取 13 符号;白箱填充 13 条;确定性门禁 **13/13 ANCHORED**;0 BLINDSPOT。
|
|
19
|
+
- 样例:`调用 judge 时,必须提供实参 cond、src;可选 prefix=""、suffix="" 可省略;体内引用 META_MARKS、IDENT 需已定义;返回 out;功能:判定单条候选条件。…`
|
|
20
|
+
|
|
21
|
+
## 三、LLM 校验结果与两处归因
|
|
22
|
+
|
|
23
|
+
- 结论:**8 PASS / 5 REVISE / 0 BLINDSPOT**;5 条 REVISE 全部集中在同一处,另有 1 处真实缺陷。
|
|
24
|
+
- **受控偏离(非缺陷)**:校验清单 C6/C9 要求「guards 非空时必须把每个 guard 原文写入」,但 `guards` 含**函数内部分支**(如 `if hits:`、`if i == 0 and …`)——那是实现细节不是前置条件。填充器按 `early` 标记只保留「首条语句且含 return/raise」的早退式前置。修正口径:**模板/清单需增加 `early` 条件**(此处登记为模板 v0.2 待改项,改由 LLM 复核)。
|
|
25
|
+
- **真实缺陷(已修)**:`doc_head` 截断 60 字导致词被切半(`option` ≠ `referenced`),校验器 C9 以原文比对抓出。修正:超长按句读收口,不再截半个词。
|
|
26
|
+
|
|
27
|
+
## 四、下一步(原始计划)
|
|
28
|
+
|
|
29
|
+
1. 把 13 条写入自有源码(`# 生效条件:…` 置于定义前),过 `condition_anchor` + 全组回归,落候选分支交编外裁定。
|
|
30
|
+
2. 模板 v0.2:把 `early` 条件写入 C6/C9(LLM 复核);补 `md_cg/test_cond_facts.py`、`test_cond_compose.py` 断言。
|
|
31
|
+
3. 试点:把 `hive/interop/iter-008-ring2-pilot/proposals.json` 的 10 条(LLM 路线)与白箱路线对比,择优或互补。
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 跨端验证与同步协议_v0.1
|
|
3
|
+
overview: 主代理(designer/DSH)与验证端(zcode,在 4_ai 隔离副本)之间「请求验证 → 出回执 → 台账闭合」的机械协议;载体=蜂巢任务(spec/result 留痕)+ 本地 git 传输 + 灵枢任务实体台账。
|
|
4
|
+
状态: 生效(v0.1 · 2026-09-17)
|
|
5
|
+
关联: docs/mdcg/全库代码评审与条件化注释_计划_v0.1.md
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# 跨端验证与同步协议 v0.1
|
|
9
|
+
|
|
10
|
+
## 一、角色与职责(使用者裁决 2026-09-17)
|
|
11
|
+
|
|
12
|
+
| 角色 | 实体 | 职责 | 权限 |
|
|
13
|
+
|---|---|---|---|
|
|
14
|
+
| **主代理** | DSH 端 designer(actor=dsh-memory) | 编排、改码、**持有任务台账**、判定验证是否闭合 | 须含 `task` op |
|
|
15
|
+
| **验证端** | zcode(在 **4_ai 验证面** `<verify-face>/dsh-memory`) | 独立复算与反证,产出**回执** | **无权设 task**;只出回执,不改台账 |
|
|
16
|
+
|
|
17
|
+
> 台账归属是硬边界:`task` 由主代理写。验证端若要表达结论,走**回执**(第三节),不写任务实体。
|
|
18
|
+
|
|
19
|
+
## 二、同步通道(不经网络,不触第 14 条)
|
|
20
|
+
|
|
21
|
+
1. 主代理在 2_ai/dsh-memory 提交(pathspec 部分提交)。
|
|
22
|
+
2. 验证端从主代理仓**直接 fetch**(本地路径即远端):
|
|
23
|
+
`git -C "<verify-face>/dsh-memory" fetch "<main-repo>/dsh-memory" main`
|
|
24
|
+
(**占位符**:本机真实路径不入公开文档——第 14 条;执行时按本机部署替换)
|
|
25
|
+
然后 `git checkout -B verify/<verify_id> FETCH_HEAD`(或 merge)到隔离分支。
|
|
26
|
+
3. **验证面 = 已提交状态**:工作区未提交的在途改动**一律不进入验证面**——这是把「我的脏工作区」与「被验证的产物」分开的关键。
|
|
27
|
+
4. 4_ai 的独立性即互斥保证:验证端不写 2_ai,主代理不写 4_ai;两侧测试副产物(如 _md_cg_p27/、verify_cache.json)互不干扰。
|
|
28
|
+
5. 需要对公众发布时,主代理才 `push origin main`,且**推送前必须过第 14 条双清单**。
|
|
29
|
+
|
|
30
|
+
## 三、握手格式(蜂巢任务即信道)
|
|
31
|
+
|
|
32
|
+
**请求(主代理 → 验证端)**:一条 task 台账卡 + 交给验证端的 spec 模板。
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
[VERIFY-REQ] verify_id=<verify_id> commit=<sha> repo=<verify-face>/dsh-memory
|
|
36
|
+
acceptance=<逐条可判的验收判据>
|
|
37
|
+
commands=<验证端将执行的确定性命令(argv 形式,零 LLM)>
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
**回执(验证端 → 主代理)**:验证端用蜂巢 `submit --spec` 派发确定性任务,spec 的 `user_prompt` 以如下行**开头**,结论落在该任务 `result.json`:
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
[VERIFY-RESULT] verify_id=<verify_id> commit=<sha> verdict=PASS|FAIL|PARTIAL
|
|
44
|
+
evidence=<命令输出摘要 / 失败项清单 / 与基线的差异>
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
> 为什么用蜂巢:第 17 条已强制「执行性任务经蜂巢派发」,spec/status/result 三件套天然留痕——于是**回执不需要额外机制**,它就是一条已留痕的任务。
|
|
48
|
+
|
|
49
|
+
## 四、机械判定:怎么知道「验证完了」
|
|
50
|
+
|
|
51
|
+
主代理侧一条**只读巡检**(L1 可直跑,须输出一行留痕):
|
|
52
|
+
|
|
53
|
+
1. 记水位 w:发起请求时刻 `hive/jobs` 的最大 `created_ts`。
|
|
54
|
+
2. 枚举 `created_ts > w` 的任务,筛出 `spec.json` 的 `user_prompt` 以 `[VERIFY-RESULT]` 开头者。
|
|
55
|
+
**防自证**:本端(actor=dsh-memory)派发的任务一律不算,只认非本端派发的回执。
|
|
56
|
+
3. **判定为「验证已回」的充要条件**:存在 `[VERIFY-RESULT]` 任务,其 `verify_id` 与 `commit` 与请求**逐字一致**,且 `result.json` 已落盘。
|
|
57
|
+
4. 命中 → 主代理据此写台账:`task action=status`(通过迁 `done` 且 result 必填;不通过迁 `blocked` 并记缺失维度)。
|
|
58
|
+
5. 未命中 → 状态是「**未收到回执**」;措辞不得是不可判定的「等验证中」。
|
|
59
|
+
6. **基线采集位置(迭代二修补 · 经编外复核两轮修正)**:在**同一验证面**上取两个期望——**基线 commit 的期望 vs 候选 commit 的实测**;禁止从发起端工作区取任何期望值(发起端工作区结果只用于「发起端是否引入回归」的自测,不得写入验收判据)。
|
|
60
|
+
> 复核指出的原文缺陷:「期望值与实测值同源采集」表述含糊、有**同义反复风险**,故改为按两个 commit 显式命名。
|
|
61
|
+
> 引用回归结果时必须逐字附 **SUMMARY 原文 + 失败清单原文**,不得只报「全绿/几红」这类概括。
|
|
62
|
+
> **计数口径(经验证端纠正)**:分母 = **通过数 + 失败数**,跳过**单列**——实证「84/85 通过,3 跳过」= 84 通过 + 1 失败 + 3 跳过;「86/90 通过」= 86 + 4。故「84+3」不构成矛盾。
|
|
63
|
+
> 更正记录:本协议迭代一曾据误读断言「SUMMARY 计数不自洽」,该断言**错误**,已由验证端指出并在此更正——**引用回归结果前先核口径,不确定就只附原文**。
|
|
64
|
+
> 归因(智能论三问协议 · `CommonTrustProtocol/docs/条件论失败分析协议.md`):首轮判据写死「期望 3 红」= 在**发起端工作区**观测、却声明适用于**验证面** → 失配维度 = **观测位置 + 条件边界**;机制缺的条件声明 = 「基线采集位置 = 验证面」。
|
|
65
|
+
> 证据:回执 job `h1789634407680_445c` 在 4_ai 纯净树得 **85/85 零红**,而发起端脏树有 3 红(源于 20+ 项未提交在途改动,与提交产物无关)。
|
|
66
|
+
> 附:本节判定已机械化实现于**主代理侧仓外运维件** `<main-ops-dir>/poll_verify_receipt.py`(**刻意不入公开仓**:内含本机绝对路径,触第 14 条)。
|
|
67
|
+
|
|
68
|
+
7. **判据面同一性(迭代四~七 → 收口后回填 · 主体侧独立复算确认)**:把「判据是否被改动」变成一件可机械比对的事——
|
|
69
|
+
- **集合**:`md_cg/**/test_*.py` + `scripts/run_tests.py`(收口后 98 文件)
|
|
70
|
+
- **算法**:`sha256(按仓库相对路径升序拼接各文件字节)`,取前 16 个十六进制字符
|
|
71
|
+
- **取数**:`python -X utf8 scripts/criteria_fingerprint.py --commit <rev>`(git archive 抽树,只读**已提交状态**,不触碰工作区)
|
|
72
|
+
- **实证**:`5a2778a` → `c5a3280201a4499f`(97 文件),与验证端回执**逐字一致**(算法由此反解确认);收口后 `main` → `217a3a1b7c5db309`(98 文件),与验证端冻结值一致。
|
|
73
|
+
- **权限边界**:判据的冻结与推进由验证端持有;主体只做**复算与比对**,不得自行改判据或自认通过。
|
|
74
|
+
8. **收口后置断言(本轮缺陷修补 · 强制)**:以 plumbing(临时索引 + `commit-tree` + `update-ref`)合并后,必须 `git read-tree <新提交>` 同步真实索引,并断言 `git diff <合并提交> <新提交> -- <代码面>` 为空;收口后附 `criteria_fingerprint --commit main` 与验证端冻结值的比对。
|
|
75
|
+
> 缺陷实证:未同步索引时,紧随其后的普通 `git commit` 以**合并前树**落盘,把合并内容**静默还原**(历史里 merge 提交仍在,故两端都易漏看)。本轮由第 7 项的指纹比对发现:`main` 曾为 96 文件 / `be5bfbb5d03b4d3d` ≠ 冻结 97 文件 / `c5a3280201a4499f`,修正提交 `a0dad20`。
|
|
76
|
+
> 同批证据:冻结后 `main`(隔离抽树)全组回归 = **SUMMARY 116/116 通过、3 跳过**,`criteria_fingerprint = 217a3a1b7c5db309`。
|
|
77
|
+
## 五、TTL 与措辞纪律
|
|
78
|
+
|
|
79
|
+
- 每条请求带 deadline(建议 24h)。
|
|
80
|
+
- 到期未回:主代理在会话中**明确报告「未收到验证回执」**并给出水位与检索证据;不得暗示已通过。
|
|
81
|
+
- 严禁把「我自己的自测通过」表述为「已验证」——自测是主代理自身的验证门禁,不是第三方验证。
|
|
82
|
+
|
|
83
|
+
## 六、不适用条件
|
|
84
|
+
|
|
85
|
+
- 不适用于纯查询/无仓库改动的任务(无产物则无需交叉验证)。
|
|
86
|
+
- 不替代第 5 条(主代理自身须先过断言/回归)与第 14 条(推送前双清单)。
|
|
87
|
+
- 不授权验证端写台账、改 2_ai 工作区、或代主代理提交。
|
|
88
|
+
- 4_ai 的 .venv 与依赖环境由验证端自持;主代理不假定两侧环境一致,差异须在回执 evidence 中显式声明。
|
|
89
|
+
|
|
90
|
+
## 七、待定项
|
|
91
|
+
|
|
92
|
+
1. 验证端两个令牌当前 ops_allow=[*](含 task),与「验证端无权设 task」冲突 → 是否收窄为「全 op 减 task」待使用者确认。
|
|
93
|
+
2. 主代理令牌放行 task 后,mdcg MCP 常驻进程需重启才生效;期间的直调兜底口径待固化。
|