@furongjun1999/dsh-memory 0.4.7 → 0.4.9
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 +130 -47
- package/codebuddy/CODEBUDDY.md +21 -10
- 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/Pi/345/217/257/345/255/246/344/271/240/344/274/230/347/202/271_/347/201/265/346/236/242/345/244/247/350/204/221/346/224/271/350/277/233/344/272/244/346/216/245_20260915.md +144 -0
- package/docs/README.md +111 -0
- package/docs/discipline/harnesses.yaml +226 -152
- package/docs/discipline/templates/full.md.tmpl +61 -58
- package/docs/eval//347/254/254/344/270/211/346/226/271/351/252/214/350/257/201/346/212/245/345/221/212_LoCoMo_/347/201/265/346/236/242_.md +127 -0
- package/docs/eval//347/254/254/344/270/211/346/226/271/351/252/214/350/257/201/346/212/245/345/221/212_LoCoMo_/347/201/265/346/236/242_.png +0 -0
- package/docs/eval//347/254/254/344/270/211/346/226/271/351/252/214/350/257/201/346/212/245/345/221/212_/347/201/265/346/236/242_vs_dejavu_/347/273/237/344/270/200/350/257/204/345/210/206_v7.md +202 -0
- 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/experiments/m4-role-probe/census.py +86 -0
- package/docs/experiments/m4-role-probe/probe.py +89 -0
- package/docs/experiments/mapped_confidence/bench_mapped_conf.py +216 -0
- package/docs/experiments/mapped_confidence/post_check.py +75 -0
- package/docs/experiments/mapped_confidence/repro_thirdparty_tol.py +83 -0
- package/docs/experiments/mapped_confidence/result_mapped_conf.json +215 -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/{ → hive/}/350/234/202/345/267/242/345/267/245/344/275/234/350/256/260/345/277/206_/351/241/271/347/233/256/350/256/241/345/210/222.md +14 -2
- 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/{README → mdcg/README}/350/257/246/347/273/206/347/211/210_v0.4.5.md +631 -625
- package/docs/{ → mdcg/}/344/270/273/344/273/243/347/220/206/345/255/220/344/273/243/347/220/206/350/256/260/345/277/206/346/236/266/346/236/204/350/256/276/350/256/241.md +1 -1
- 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 +263 -0
- package/docs/{ → mdcg/}/345/215/225/345/205/203/350/207/252/346/210/221/351/224/232/347/202/271_/347/263/273/347/273/237/346/217/220/347/244/272/350/257/215/346/240/207/345/207/206_v0.3.md +1 -1
- 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.5.md +236 -0
- package/docs/{ → mdcg/}/346/272/220/347/240/201/347/272/247/346/236/266/346/236/204/345/256/241/350/256/241_GPT/346/211/271/350/257/204/345/257/271/347/205/247_v1.0.md +2 -2
- package/docs/{ → mdcg/}/347/201/265/346/236/242/344/270/211/345/261/202/346/213/206/345/210/206/350/247/204/345/210/222_v0.1.md +181 -181
- 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/}/347/274/272/345/217/243/345/215/225_P0/346/224/266/345/217/243_v0.1.md +2 -2
- package/docs/{ → mdcg/}/350/256/244/347/237/245/345/233/276_G4-G8/347/274/272/345/217/243/350/243/201/345/256/232/345/215/225_v0.1.md +1 -1
- package/docs/{ → mdcg/}/350/256/244/347/237/245/345/233/276_/347/264/242/345/274/225/344/270/216/345/267/245/347/250/213/350/247/204/350/214/203/345/214/226_/350/256/241/345/210/222_v0.1.md +4 -4
- package/docs/{ → mdcg/}/350/256/260/345/277/206/346/223/215/344/275/234/347/263/273/347/273/237_MdCGOS/344/270/216MCP/346/216/245/345/205/245_v0.1.md +2 -2
- 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/plans/GridWorld/346/234/200/345/260/217/351/227/255/347/216/257/350/247/204/346/240/274_v0.1.md +176 -0
- package/docs/{ → swarm/}/350/234/202/347/276/244/344/272/222/350/201/224_v0.1.md +3 -3
- package/docs/swarm//350/234/202/347/276/244/345/220/214/351/224/231/346/243/200/346/265/213/345/256/236/351/252/214/345/215/217/350/256/256_v0.1.md +242 -0
- package/docs/theory//345/215/225/347/272/277/347/250/213/344/270/216/346/263/250/346/204/217/345/212/233/351/233/206/344/270/255_/346/227/240/344/272/211/350/256/256/347/220/206/350/256/272/346/226/207/346/241/243_v1.0.md +129 -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 +134 -0
- package/docs/theory//346/246/202/345/277/265/345/210/206/345/261/202/345/257/271/351/275/220/350/241/250_v0.1.md +145 -0
- 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 +6 -6
- package/docs/{ → theory/}/347/220/206/350/256/272/344/273/223/346/213/206/345/210/206/344/270/216/347/231/275/347/256/261/347/237/245/350/257/206/345/272/223/345/206/205/350/277/201_v0.1.md +1 -1
- 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 +221 -0
- package/docs/world_model//344/270/226/347/225/214/346/250/241/345/236/213_/347/245/236/347/273/217/347/275/221/347/273/234/345/272/225/345/261/202/346/236/266/346/236/204_v1.0.md +237 -0
- package/docs//345/255/230/347/256/227/344/270/200/344/275/223/346/236/266/346/236/204/345/255/246/344/271/240_/345/244/226/351/203/250/347/220/206/350/256/272/345/257/271/347/205/247/344/270/216/350/267/257/347/272/277/344/272/244/346/216/245_20260916.md +98 -0
- package/docs//345/255/230/347/256/227/344/270/200/344/275/223/347/245/236/347/273/217/347/275/221/347/273/234/346/236/266/346/236/204_/346/200/273/347/272/262/344/270/216/344/272/244/346/216/245_20260916.md +109 -0
- 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 -405
- 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/docs//347/231/275/347/256/261/345/214/226/347/272/262/351/242/206_/344/270/211/351/241/271/347/233/256/345/255/246/344/271/240/346/200/273/346/236/266/346/236/204/344/270/216Ghidra/344/272/244/346/216/245_20260916.md +104 -0
- package/docs//350/256/260/345/277/206/350/257/204/345/256/241/347/263/273/347/273/237_/347/253/213/351/241/271/350/256/276/350/256/241/344/270/216/346/226/275/345/267/245/344/272/244/346/216/245_20260915.md +183 -0
- package/dsh/README.md +34 -1
- 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 +8 -0
- package/lib/hooks.js +27 -24
- 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 +6 -3
- package/lib/lib/mdcg_client.js +6 -5
- package/lib/lib/mutual.js +4 -4
- package/lib/lib/prompt_safety.d.ts +48 -0
- package/lib/lib/prompt_safety.js +62 -0
- package/lib/lib/token_store.js +4 -5
- package/md_cg/audit.py +91 -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 +37 -6
- package/md_cg/bench_p0.py +4 -1
- package/md_cg/bench_progressive.py +61 -10
- 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 +286 -0
- package/md_cg/build_postings.py +73 -0
- package/md_cg/ccgc.py +949 -0
- 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 +727 -0
- package/md_cg/consistency.py +25 -2
- package/md_cg/consolidate.py +53 -2
- package/md_cg/corpus.py +5 -1
- 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 +35 -6
- 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 +34 -4
- package/md_cg/fsutil.py +81 -2
- package/md_cg/hotcache.py +214 -0
- package/md_cg/hyperedge.py +251 -0
- package/md_cg/identity.py +20 -3
- package/md_cg/insight.py +19 -3
- 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 +273 -0
- package/md_cg/linkref.py +281 -0
- package/md_cg/links.py +29 -1
- package/md_cg/mcp_server.py +894 -168
- package/md_cg/md_whitebox.py +53 -1
- package/md_cg/mdcg.py +1205 -41
- package/md_cg/mdcos.py +1060 -76
- package/md_cg/metacognition.py +39 -4
- 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/__init__.py +25 -0
- package/md_cg/mreview/__main__.py +110 -0
- package/md_cg/mreview/bundle.py +178 -0
- package/md_cg/mreview/candidates.py +262 -0
- package/md_cg/mreview/govern.py +694 -0
- package/md_cg/mreview/locate.py +939 -0
- package/md_cg/mreview/pipeline.py +729 -0
- package/md_cg/mreview/rules/duplication.json +21 -0
- package/md_cg/mreview/rules/field_coverage.json +54 -0
- package/md_cg/mreview/rules/source_license.json +21 -0
- package/md_cg/mreview/rules/template_flow.json +21 -0
- package/md_cg/mreview/ruleset.py +253 -0
- package/md_cg/nodefile.py +269 -1
- package/md_cg/pooling.py +23 -1
- package/md_cg/postings.py +298 -0
- package/md_cg/predict.py +113 -15
- package/md_cg/progressive.py +3 -0
- package/md_cg/protect.py +18 -5
- 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 +88 -4
- 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 +68 -3
- package/md_cg/security.py +26 -1
- package/md_cg/self_state.py +65 -2
- package/md_cg/selfreport.py +151 -0
- package/md_cg/semantic/canonical.py +5 -0
- package/md_cg/semantic/en_normalizer.py +364 -295
- 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 +74 -1
- package/md_cg/tasks.py +471 -0
- package/md_cg/test_action_derive.py +203 -0
- package/md_cg/test_audit_rotate.py +270 -0
- 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_branches.py +249 -0
- package/md_cg/test_ccg_perturb.py +1 -1
- package/md_cg/test_ccgc.py +433 -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_conformance.py +343 -0
- package/md_cg/test_d_meta.py +412 -0
- package/md_cg/test_datapath_root.py +188 -0
- package/md_cg/test_en_pipeline.py +24 -0
- package/md_cg/test_gain_gate.py +47 -1
- package/md_cg/test_health_scale.py +173 -0
- package/md_cg/test_hot_cold.py +187 -0
- package/md_cg/test_hyperedge.py +245 -0
- package/md_cg/test_identity_attribution.py +6 -0
- package/md_cg/test_index_durability.py +224 -0
- package/md_cg/test_lifecycle.py +309 -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 +769 -0
- package/md_cg/test_mr_m2.py +587 -0
- package/md_cg/test_mr_m3.py +710 -0
- package/md_cg/test_mr_m4.py +485 -0
- package/md_cg/test_p1.py +1 -1
- package/md_cg/test_p11_consistency.py +1 -1
- package/md_cg/test_p12_metacognition.py +2 -2
- package/md_cg/test_p16_self_state.py +1 -1
- package/md_cg/test_p26_refindex.py +50 -21
- package/md_cg/test_p27_docindex.py +258 -4
- package/md_cg/test_p28_refcheck.py +1 -1
- package/md_cg/test_p29_session_ingest_export.py +1 -1
- package/md_cg/test_p2_mcp.py +7 -1
- package/md_cg/test_p31_insight.py +24 -0
- package/md_cg/test_p38_contextualize.py +1 -1
- package/md_cg/test_p39_vision_evidence.py +1 -1
- package/md_cg/test_p40_refine_worklist.py +1 -1
- package/md_cg/test_p41_evolve_patrol.py +1 -1
- package/md_cg/test_p42_provenance.py +1 -1
- package/md_cg/test_p43_pooling.py +41 -13
- 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 +141 -0
- 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 +367 -0
- package/md_cg/test_role_views.py +354 -0
- package/md_cg/test_tasks.py +409 -0
- package/md_cg/test_tool_face.py +189 -0
- package/md_cg/test_trust.py +361 -0
- package/md_cg/test_twophase.py +286 -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 +214 -0
- package/md_cg/theory.py +17 -2
- package/md_cg/tokens.py +134 -12
- package/md_cg/tool_face.py +261 -0
- package/md_cg/trust.py +943 -0
- package/md_cg/twophase.py +232 -0
- package/md_cg/units.py +665 -0
- package/md_cg/vision_evidence.py +25 -2
- package/md_cg/weights.py +25 -2
- package/md_cg/whitebox.py +33 -2
- package/md_cg/whitebox_kb/data/verify_cache.json +21233 -360
- package/md_cg/whitebox_kb/data/verify_savings.jsonl +5124 -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 +37 -7
- package/md_cg/writepipe.py +543 -0
- 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 +27 -22
- package/src/index.ts +33 -6
- package/src/lib/datapath.ts +211 -13
- package/src/lib/mdcg_client.ts +12 -8
- package/src/lib/mutual.ts +411 -411
- package/src/lib/prompt_safety.ts +62 -0
- package/src/lib/token_store.ts +4 -5
- package/zcode/AGENTS.md +21 -10
- package/zcode/README.md +4 -0
- package/docs//345/212/237/350/203/275/350/260/203/347/224/250/346/230/240/345/260/204/350/241/250_v0.1.md +0 -221
- /package/docs/{AGI → eval/AGI}/344/270/203/347/273/264/350/257/204/345/210/206/346/212/245/345/221/212_md_cg_v1.0.md" +0 -0
- /package/docs/{AGI → eval/AGI}/344/270/203/347/273/264/350/257/204/345/210/206/346/212/245/345/221/212_md_cg_v2.0.md" +0 -0
- /package/docs/{ → eval/}/345/256/236/351/252/214/346/226/271/346/241/210_/345/255/246/344/271/240/351/227/255/347/216/257AB/344/270/216/346/250/252/350/257/204_v1.0.md" +0 -0
- /package/docs/{ → eval/}/346/250/252/350/257/204_/345/205/255/345/256/266100/351/242/230/344/270/255/350/213/261/345/217/214/346/237/245_v1.0.md" +0 -0
- /package/docs/{guardrail-charter.md → mdcg/guardrail-charter.md} +0 -0
- /package/docs/{lingshu_tutorial.html → mdcg/lingshu_tutorial.html} +0 -0
- /package/docs/{memory-assessment.html → mdcg/memory-assessment.html} +0 -0
- /package/docs/{memory_score.html → mdcg/memory_score.html} +0 -0
- /package/docs/{memory_score.png → mdcg/memory_score.png} +0 -0
- /package/docs/{release_v0.3.0.md → mdcg/release_v0.3.0.md} +0 -0
- /package/docs/{release_v0.4.5.md → mdcg/release_v0.4.5.md} +0 -0
- /package/docs/{tool_table_v0.3.0.md → mdcg/tool_table_v0.3.0.md} +0 -0
- /package/docs/{ → mdcg/}/344/273/244/347/211/214/344/270/216/350/247/222/350/211/262/346/235/203/350/201/214/345/210/206/347/246/273_v0.1.md" +0 -0
- /package/docs/{ → mdcg/}/347/201/265/346/236/24282/345/267/245/345/205/267_/345/212/237/350/203/275/346/225/264/347/220/206/344/270/216/350/277/201/347/247/273/346/230/240/345/260/204_v0.1.md" +0 -0
- /package/docs/{ → mdcg/}/347/201/265/346/236/242MCP/345/267/245/345/205/267/346/200/273/350/241/250_v3.4.md" +0 -0
- /package/docs/{ → mdcg/}/347/201/265/346/236/242_/350/207/252/346/210/221/345/261/202/345/256/232/344/271/211.md" +0 -0
- /package/docs/{ → mdcg/}/350/256/244/347/237/245/345/233/276_MD/347/233/256/345/275/225/346/226/271/346/241/210_v0.1.md" +0 -0
- /package/docs/{ → mdcg/}/350/256/244/347/237/245/345/233/276_/346/235/241/344/273/266/347/251/272/351/227/264/345/220/210/346/210/220/344/270/216/347/224/237/346/225/210/346/235/241/344/273/266/345/217/243/345/276/204_v0.1.md" +0 -0
- /package/docs/{ → mdcg/}/350/256/244/347/237/245/345/233/276/344/275/234/344/270/272/350/256/260/345/277/206/346/223/215/344/275/234/347/263/273/347/273/237_/350/257/204/344/274/260/344/270/216/350/267/257/347/272/277_v0.1.md" +0 -0
- /package/docs/{ → plans/}/345/221/275/345/220/215/346/262/273/347/220/206_/351/241/271/347/233/256/350/256/241/345/210/222.md" +0 -0
- /package/docs/{ → plans/}/347/237/245/350/257/206/345/233/276/350/260/261/351/241/271/347/233/256_/344/272/244/346/216/245/346/226/207/346/241/243_20260914.md" +0 -0
- /package/docs/{ → swarm/}/350/234/202/347/276/244/345/244/232/346/231/272/350/203/275/344/275/223_/344/275/277/347/224/250/346/212/245/345/221/212_20260913.md" +0 -0
- /package/docs/{ → swarm/}/350/234/202/347/276/244/345/244/232/346/231/272/350/203/275/344/275/223_/345/212/237/350/203/275/350/257/264/346/230/216_v0.6.md" +0 -0
- /package/docs/{ → swarm/}/350/234/202/347/276/244/347/233/262/345/214/272/346/240/207/350/256/260_v1.0.md" +0 -0
- /package/docs/{ → theory/}/344/277/241/346/201/257/345/267/256/344/270/272/344/273/200/344/271/210/345/277/205/347/204/266/345/255/230/345/234/250/344/270/224/350/207/252/347/204/266/346/211/251/345/244/247.md" +0 -0
- /package/docs/{ → theory/}/346/231/272/350/203/275/347/232/204/345/205/254/347/220/206/345/214/226/345/237/272/347/237/263.md" +0 -0
- /package/docs/{ → theory/}/346/231/272/350/203/275/347/232/204/350/256/244/347/237/245/350/277/207/347/250/213.md" +0 -0
- /package/docs/{ → theory/}/346/231/272/350/203/275/350/256/2723.4.md" +0 -0
- /package/docs/{ → theory/}/347/231/275/347/256/261/346/231/272/350/203/275/346/230/257/344/273/200/344/271/210/357/274/237.md" +0 -0
- /package/docs/{ → theory/}/347/231/275/347/256/261/346/231/272/350/203/275/347/263/273/345/210/227/302/267/347/254/254/344/272/224/347/257/207/357/274/232/350/256/251AI/347/234/237/346/255/243/350/243/205/344/270/212/350/256/260/345/277/206.md" +0 -0
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* prompt_safety.ts · 注入边界文本安全(宿主严格模板的转义)
|
|
3
|
+
*
|
|
4
|
+
* ── 根因(issue #16,2026-09-16)────────────────────────────────────────
|
|
5
|
+
* dsh 宿主 `@deepseek-ai/dsh-system-prompt` 的 `interpolate()` 会对**每个
|
|
6
|
+
* section / context** 文本做严格 `{{variable}}` 插值,且**四类一律 throw**:
|
|
7
|
+
* ① `{{` 之后能找到 `}}` 但不成简单组(GROUP_AT = /^\{\{([^{}]*)\}\}/ 不匹配)
|
|
8
|
+
* ② 组成立但名不匹配 /^[a-z][a-z0-9_]*$/(如 `{{.Architecture}}`)
|
|
9
|
+
* ③ 名合法但未注册(如 `{{name}}`)
|
|
10
|
+
* ④ 已注册但值为 undefined
|
|
11
|
+
* `renderContextSections()` 逐 context 调用它,throw 直接冒泡到
|
|
12
|
+
* `system-prompt/assemble` → **该轮请求整体失败**。
|
|
13
|
+
*
|
|
14
|
+
* ── 伤害路径 ───────────────────────────────────────────────────────────
|
|
15
|
+
* 自动记忆把用户命令原样沉淀(如 `docker inspect --format '{{.Architecture}}'`)
|
|
16
|
+
* → auto-recall 把含裸 `{{` 的预览推入 `assembly.contexts`
|
|
17
|
+
* → 宿主每轮 assemble 必抛 → **会话永久不可用**(记忆永久在库,非偶发故障)。
|
|
18
|
+
*
|
|
19
|
+
* ── 处置:为何只在注入边界转义,不在写入侧 ────────────────────────────
|
|
20
|
+
* ① 记忆真源必须保真:`{{.Architecture}}` 是用户命令原文,写入侧转义会
|
|
21
|
+
* 不可逆失真,且 cg(op=read) / 工具面 / 检索都依赖原文(= 污染真源);
|
|
22
|
+
* ② 伤害面就是「注入到 prompt 的文本」,在注入边界处理即**最小充分**;
|
|
23
|
+
* ③ 与写入侧 desensitize 不冲突:脱敏是**隐私**要求(不许落盘),
|
|
24
|
+
* 转义是**渲染安全**要求(落盘保真、渲染时规避)——层次不同。
|
|
25
|
+
*
|
|
26
|
+
* ── 转义策略:确保文本中不出现连续两个 `{` ────────────────────────────
|
|
27
|
+
* 依据(宿主源码 `lib/index.js:109-116`):`interpolate` 以
|
|
28
|
+
* `text.indexOf("{{")` 为**唯一扫描锚点**;破坏 `{{` 序列后循环不进入,
|
|
29
|
+
* 文本走 `text.slice(last)` 原样返回。
|
|
30
|
+
* · `}}` 无需处理——它只在 `{{` 成组时参与解析,锚点已破即无意义;
|
|
31
|
+
* · 逐对打断(而非 `split('{{').join(...)`):后者对 `{{{a}}}` 会产出
|
|
32
|
+
* `{ {{a}}}`——新锚点仍在(相邻 `{` 重新合成),不幂等也不安全;
|
|
33
|
+
* · 跨 context 拼接安全:`joinContextSections` 以 `"\n\n"` 分隔并带固定
|
|
34
|
+
* 前缀(`lib/index.js:85-87`,前缀以 `.` 结尾),边界不会合成新 `{{`;
|
|
35
|
+
* · 为何不用零宽字符:显示上「看起来一样」但复制会带入不可见字符
|
|
36
|
+
* (终端粘贴即出错)——诚实性优先,宁可让改写可见。
|
|
37
|
+
*
|
|
38
|
+
* 幂等:结果中不存在 `{{`,重复调用结果不变。
|
|
39
|
+
* 边界:本函数只服务**注入到宿主 prompt 的文本**;记忆真源与工具返回原文
|
|
40
|
+
* 一律不动(工具结果不进 assembly 插值面)。
|
|
41
|
+
*/
|
|
42
|
+
|
|
43
|
+
/** 宿主严格模板的扫描锚点。 */
|
|
44
|
+
const TEMPLATE_OPEN = '{{'
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* 把文本中每一对相邻的 `{` 打断(插入半角空格),使其不再包含 `{{`。
|
|
48
|
+
*
|
|
49
|
+
* 不含 `{{` 的文本**原样返回**(零改写,保真)。
|
|
50
|
+
* 例:`{{.Architecture}}` → `{ {.Architecture}}`;`{{{a}}}` → `{ { {a}}}`。
|
|
51
|
+
*/
|
|
52
|
+
export function escapePromptBraces(text: string): string {
|
|
53
|
+
if (!text.includes(TEMPLATE_OPEN)) return text
|
|
54
|
+
let out = ''
|
|
55
|
+
for (let i = 0; i < text.length; i++) {
|
|
56
|
+
const ch = text.charAt(i)
|
|
57
|
+
out += ch
|
|
58
|
+
// 该 `{` 与下一个字符构成锚点 → 立即插入空格打断
|
|
59
|
+
if (ch === '{' && text.charAt(i + 1) === '{') out += ' '
|
|
60
|
+
}
|
|
61
|
+
return out
|
|
62
|
+
}
|
package/src/lib/token_store.ts
CHANGED
|
@@ -30,7 +30,7 @@ import { spawnSync } from 'node:child_process'
|
|
|
30
30
|
import { chmodSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs'
|
|
31
31
|
import { homedir } from 'node:os'
|
|
32
32
|
import { dirname, join } from 'node:path'
|
|
33
|
-
import { pythonPathValue,
|
|
33
|
+
import { pythonPathValue, runRoot } from './datapath.js'
|
|
34
34
|
|
|
35
35
|
/** 凭据来源(用于启动日志与故障定位)。 */
|
|
36
36
|
export type TokenSource =
|
|
@@ -113,10 +113,9 @@ function issueToken(python: string, role: string, actor: string, clearance: stri
|
|
|
113
113
|
windowsHide: true,
|
|
114
114
|
timeout: 15_000,
|
|
115
115
|
// 与工作纪律第 15 条同源:显式 UTF-8 + PYTHONUTF8,规避 Windows GBK 解码异常。
|
|
116
|
-
//
|
|
117
|
-
//
|
|
118
|
-
|
|
119
|
-
cwd: repoRoot(),
|
|
116
|
+
// 模块解析靠 PYTHONPATH 锚定随包 md_cg(不依赖 cwd);cwd 取包外目录,
|
|
117
|
+
// 否则 pnpm 更新本插件时 rmdir 包目录必报 ERR_PNPM_EBUSY。见 datapath.runRoot()。
|
|
118
|
+
cwd: runRoot(),
|
|
120
119
|
env: {
|
|
121
120
|
...process.env,
|
|
122
121
|
PYTHONPATH: pythonPathValue(),
|
package/zcode/AGENTS.md
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
# 工作纪律(工作纪律_认知图条目_v1.1)·
|
|
1
|
+
# 工作纪律(工作纪律_认知图条目_v1.1)· 17 条
|
|
2
2
|
|
|
3
3
|
> 本文件由 `scripts/render_discipline.py` 从真源
|
|
4
4
|
> `docs/工作纪律_认知图条目_v1.1.json` 渲染生成,**请勿手改**;改真源后重跑渲染。
|
|
5
|
-
> 真源指纹(SHA256 前16位):
|
|
5
|
+
> 真源指纹(SHA256 前16位):37aed1b5423c00af
|
|
6
6
|
|
|
7
7
|
## 概述
|
|
8
8
|
|
|
9
|
-
工作纪律集: 4条方法论(理论先行/全面处理/白箱方法/根因) + 3条执行(验证/双副本/兜底) + 1条思考(中文思考/协作模式分级) + 1条保密(敏感信息隔离) + 3条图像线(选源护栏/历史查询优先/算法权威唯一) + 1条协作(访谈澄清:先问清再动手) + 1条合规(内容政策合规:公开产物过内容政策+隐私双清单) +
|
|
9
|
+
工作纪律集: 4条方法论(理论先行/全面处理/白箱方法/根因) + 3条执行(验证/双副本/兜底) + 1条思考(中文思考/协作模式分级) + 1条保密(敏感信息隔离) + 3条图像线(选源护栏/历史查询优先/算法权威唯一) + 1条协作(访谈澄清:先问清再动手) + 1条合规(内容政策合规:公开产物过内容政策+隐私双清单) + 2条执行调度与运行环境(命令执行统一走python/UTF-8: 显式encoding+PYTHONUTF8=1, 规避GBK; 任务派发统一走蜂巢: 任何执行性任务经蜂巢spawn/submit执行并留痕, agent本体只做编排, L1出口=产物落点为只读判定(不改仓库/外部状态)可直跑须留痕) + 1条记忆闭环(任务收尾归档:每次任务执行完只将核心修改(内容/原因/位置/验证结论)按CCG六要素(功能名/生效条件/子功能/执行/验证方式/不适用条件)成文存入灵枢记忆, 不写中间过程)
|
|
10
10
|
|
|
11
11
|
## 执行公约
|
|
12
12
|
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
### 1. 理论先行
|
|
24
24
|
|
|
25
25
|
- **触发**:重要项目|长期任务
|
|
26
|
-
-
|
|
26
|
+
- **动作**:识别项目级别→检索理论文档与既有实践→输出理论要点→再进入设计
|
|
27
27
|
- **不适用**:情感交互|闲聊
|
|
28
28
|
- **声明**:按工作纪律第1条: 理论先行——先查相关理论与既有实践再动手。
|
|
29
29
|
|
|
@@ -128,9 +128,16 @@
|
|
|
128
128
|
### 16. 任务收尾归档(记忆闭环)
|
|
129
129
|
|
|
130
130
|
- **触发**:任务执行完成|修改落地后|交付后
|
|
131
|
-
- **动作**:任务收尾→提炼核心修改(内容/原因/位置/验证结论四要素, 不写中间过程/试错/调试/重复确认)→写入灵枢记忆(认知图/MCP memory)→标注关联条目+更新 subgraph/depends_on
|
|
131
|
+
- **动作**:任务收尾→提炼核心修改(内容/原因/位置/验证结论四要素, 不写中间过程/试错/调试/重复确认)→按 CCG 六要素成文(# 功能名/# 生效条件/# 子功能/# 执行/# 验证方式/# 不适用条件 六行缺一不可, 与正文四要素并置)→写入灵枢记忆(认知图/MCP memory)→读回确认(写入后发起一次读取查询确认写入成功且可检索)→标注关联条目+更新 subgraph/depends_on
|
|
132
132
|
- **不适用**:情感交互|闲聊|纯查询无改动
|
|
133
|
-
- **声明**:按工作纪律第16条: 任务收尾归档——每次任务执行完只提炼核心修改(内容/原因/位置/验证结论)
|
|
133
|
+
- **声明**:按工作纪律第16条: 任务收尾归档——每次任务执行完只提炼核心修改(内容/原因/位置/验证结论)并按 CCG 六要素(功能名/生效条件/子功能/执行/验证方式/不适用条件)成文存入灵枢记忆, 写入后发起一次读取查询确认写入成功且可检索, 禁写中间过程/试错/调试等无效信息, 与第2条形成「查记忆→执行→写记忆→读回确认」闭环。
|
|
134
|
+
|
|
135
|
+
### 17. 任务派发统一走蜂巢
|
|
136
|
+
|
|
137
|
+
- **触发**:执行性任务|多智能体协作|批量/并行工作|探索盘点|运行测试/脚本
|
|
138
|
+
- **动作**:任务→按产物落点判据定层级(不改仓库/外部状态的只读判定=L1直跑并按任务留痕一条(复核者=使用者+GitHub使用者); 改状态=必派发, 不得自我豁免)→拆spec(LLM委托型=默认exec.py: model+user_prompt+context_files; 确定性执行=自定义worker, 契约「读spec.json写result.json」)→hive_spawn/CLI submit→poll→汇总; 兜底情形须声明「蜂巢不可用, 兜底降级」
|
|
139
|
+
- **不适用**:纯会话内对话/问答(无执行动作)|蜂巢不可用且任务必须立即执行(兜底须声明)|L1只读判定(产物落点=不改仓库/不改外部状态的本地只读命令, 秒级·可逆·高频, 如跑门禁/测试/回归/lint看结论; 判据是产物落点而非「任务简单」的主观感受, 直跑须输出一行「L1 直跑:<命令> — 风险/频次/可逆性」留痕, 留痕粒度按任务(同一任务的多条只读命令合并为一条留痕, 不逐命令逐行); 层级归属的复核者=使用者+GitHub使用者)|情感交互|闲聊
|
|
140
|
+
- **声明**:按工作纪律第17条: 任务派发统一走蜂巢——任何执行性任务经蜂巢 spawn/submit 执行并留痕(spec/status/result), agent本体只做编排; 宿主自带subagent/team不是等价通道, 兜底须声明。L1只读判定(产物落点=不改仓库/外部状态)可直跑, 须输出「L1 直跑:<命令> — 风险/频次/可逆性」留痕。
|
|
134
141
|
|
|
135
142
|
## 声明出口(`response.direct` 原文 · 未输出即未执行)
|
|
136
143
|
|
|
@@ -151,7 +158,8 @@
|
|
|
151
158
|
| 13 | 按工作纪律第13条: 访谈澄清——先提问确认要做什么,逐轮问到完全清楚才动手;事实自查,决策归使用者,不完全清楚不固化。 |
|
|
152
159
|
| 14 | 按工作纪律第14条: 内容政策合规——对外公开产物必须过「内容政策+隐私」双清单,过滤在生成阶段做;已发布发现违规要删条+重写git历史+通知平台清缓存。 |
|
|
153
160
|
| 15 | 按工作纪律第15条: 命令执行统一走python——argv列表+显式UTF-8+PYTHONUTF8=1, 不经Windows shell, 规避GBK解码异常。 |
|
|
154
|
-
| 16 | 按工作纪律第16条: 任务收尾归档——每次任务执行完只提炼核心修改(内容/原因/位置/验证结论)
|
|
161
|
+
| 16 | 按工作纪律第16条: 任务收尾归档——每次任务执行完只提炼核心修改(内容/原因/位置/验证结论)并按 CCG 六要素(功能名/生效条件/子功能/执行/验证方式/不适用条件)成文存入灵枢记忆, 写入后发起一次读取查询确认写入成功且可检索, 禁写中间过程/试错/调试等无效信息, 与第2条形成「查记忆→执行→写记忆→读回确认」闭环。 |
|
|
162
|
+
| 17 | 按工作纪律第17条: 任务派发统一走蜂巢——任何执行性任务经蜂巢 spawn/submit 执行并留痕(spec/status/result), agent本体只做编排; 宿主自带subagent/team不是等价通道, 兜底须声明。L1只读判定(产物落点=不改仓库/外部状态)可直跑, 须输出「L1 直跑:<命令> — 风险/频次/可逆性」留痕。 |
|
|
155
163
|
|
|
156
164
|
## 记忆接口速查(`cg` / `stg`)
|
|
157
165
|
|
|
@@ -160,16 +168,19 @@
|
|
|
160
168
|
| op | 用途 | 常用参数 |
|
|
161
169
|
|---|---|---|
|
|
162
170
|
| `route` | 任务开始路由记忆(返回知识 + 建议能力,不执行) | `intent`(任务意图) |
|
|
163
|
-
| `read` | 召回/检索/按 id 取(`session
|
|
171
|
+
| `read` | 召回/检索/按 id 取(`session`=只取该会话归属的记忆,缺省不过滤;`validity=true`=时效过滤(显式启用,缺省不过滤),**仅排除「已过期」,「未生效」一律保留**——两者语义相反) | `query` / `node_id` / `k` / `layer` / `budget_tokens` / `context` / `session` / `validity` |
|
|
172
|
+
| `edges` | 三元组反查(**只读**):按派生边任意端/谓词/时间反查「这条记忆从哪来 / 谁由它派生」(subject/predicate/object 即 child/relation/parent);`expand_nodes=true` 附命中端点节点卡 | `child` / `parent` / `relation` / `batch` / `start_time` / `end_time` / `time_axis` / `ordering` / `offset` / `limit` / `aggregation` / `expand_nodes` |
|
|
164
173
|
| `write` | 写入(先按 content_kind 审核 + 冲突检测,ACCEPT 落盘 / DEFER 入审核队列 / REJECT 入负记忆)。**自动归属**:frontmatter 带 `writer`/`session`/`harness`(服务端身份,不可伪造) | `content` / `content_kind`(text/code/…)/ `node_id`(同 id 即改写)/ `layer` / `tags` / `importance` / `verification_basis` / `condition_space` / `gated` / `consistency` / `on_conflict`(reject\|defer\|record) |
|
|
165
174
|
| `verify` | 对节点做证据验证(confirmed/weakened/falsified)——**非队列裁决** | `node_id` / `verdict` / `evidence` |
|
|
166
|
-
| `review` | 审核队列:`action=list/rounds/records` 查看;传 `pid`+`decision`+`reason` 即裁决落盘(accept/reject/edit/merge,**需 can_admin
|
|
175
|
+
| `review` | 审核队列:`action=list/rounds/records/stats` 查看;传 `pid`+`decision`+`reason` 即裁决落盘(accept/reject/edit/merge/noop,**需 can_admin**;`noop`=已评估且判定不改动任何现有记忆,只留痕不入库、不进负记忆;本机未配置外部验证器时写入恒 DEFER 入队,靠此裁决落盘) | `action` / `pid` / `decision` / `reason` / `edits` / `merge_into` |
|
|
176
|
+
| `task` | 结构层任务实体(工程台账,跨会话/上下文压缩后不遗忘):`name` 即身份(同名即同任务,slug 归一),`action` = open/status/plan_add/get/list/find/session(缺省 list);**迁 `done` 必须同时给 `result`**(缺一不收,拒收不落盘);未提供的字段沿用旧值(结果不会被静默清空) | `name` / `action` / `plan`(分步计划,每轮覆盖) / `change`(计划变更,逐轮追加) / `result` / `task_status`(active\|blocked\|done\|dropped) / `goal` / `acceptance` / `boundary` / `condition` / `node_id` |
|
|
167
177
|
| `recent` | 近期事件窗口 | `action`(add/list/clear)/ `limit` |
|
|
168
178
|
| `forget` / `protect` | 软删除/恢复 / 写保护 | `node_id` |
|
|
179
|
+
| `help` | 取回工具面上**被投影外置**的完整 op / 参数文档(工具面渐进披露:常驻提示只留一行职责,参数语义按需取;不带 `query` 则列出全部工具) | `query`(工具名或 op 名,如 `cg` / `write`)/ `limit` |
|
|
169
180
|
|
|
170
181
|
三条调用铁律:
|
|
171
182
|
1. **`op` 必填**——漏传会触发参数签名推导兜底(返回标记 `op_derived: true`),复杂任务中也必须显式传,防静默执行错误意图。
|
|
172
|
-
2. **返回 `moved_to: "review_queue"` / `verdict: DEFER/REJECT` 时不要重试**——这是校验闸门的正常行为(返回自带 `hint` 说明),重试同样结果;落盘须由设计者权限(can_admin)经 `op=review` 裁决(decision=accept/reject/edit/merge,本机工具:`python scripts/review_cli.py list`),agent 端无裁决权是设计(写入者不得自裁自决),转告使用者即可。
|
|
183
|
+
2. **返回 `moved_to: "review_queue"` / `verdict: DEFER/REJECT` 时不要重试**——这是校验闸门的正常行为(返回自带 `hint` 说明),重试同样结果;落盘须由设计者权限(can_admin)经 `op=review` 裁决(decision=accept/reject/edit/merge/noop,本机工具:`python scripts/review_cli.py list`),agent 端无裁决权是设计(写入者不得自裁自决),转告使用者即可。
|
|
173
184
|
3. `stg` 同理经 `op` 分发(`timeline` / `relation` / `anchors` 等)。
|
|
174
185
|
|
|
175
186
|
## 收尾强制流程(任务完成时不可跳过)
|
package/zcode/README.md
CHANGED
|
@@ -18,6 +18,10 @@ ZCode 侧的记忆访问复用同一套 MCP 大脑,配置方式与 CodeBuddy
|
|
|
18
18
|
(见 [`../codebuddy/mcp.json`](../codebuddy/mcp.json) 与 [`../codebuddy/README.md`](../codebuddy/README.md)),
|
|
19
19
|
只需把 `MDCG_ACTOR` 改为 `zcode`。
|
|
20
20
|
|
|
21
|
+
该模板同源含第二条 MCP server `hive`(蜂巢:多智能体并发 + 任务上下文管理),一并合并即可;
|
|
22
|
+
ZCode 与 CodeBuddy 指向同一仓库时**共享同一并发池**。语义与边界见
|
|
23
|
+
[`../hive/README.md`](../hive/README.md) 的「各 harness 注册」。
|
|
24
|
+
|
|
21
25
|
## 与 CodeBuddy 并存
|
|
22
26
|
|
|
23
27
|
两者互不干扰——CodeBuddy 读根目录 `CODEBUDDY.md`,ZCode 读根目录 `AGENTS.md`;
|
|
@@ -1,221 +0,0 @@
|
|
|
1
|
-
# 功能调用映射表 v0.1(功能 → 显式代码)
|
|
2
|
-
|
|
3
|
-
> 目标:**任何一个功能,都能从这份文档查到它调用的是哪段代码**。
|
|
4
|
-
> 所有调用都是显式的——没有隐式 provider、没有隐式记忆后端。
|
|
5
|
-
>
|
|
6
|
-
> 版本:v0.1 · 2026-09-10 · 对应改造:md_cg 唯一真源 / AEIS 降能力库 / 白箱下线 / roleplay+mutual 归 LIB。
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## 0. 三条总原则
|
|
11
|
-
|
|
12
|
-
| 原则 | 含义 | 落点 |
|
|
13
|
-
| --- | --- | --- |
|
|
14
|
-
| **唯一真源** | 记忆的写 / 读 / 裁决 / 留痕只有一处:md_cg 认知图 | `md_cg/` |
|
|
15
|
-
| **能力库** | AEIS 不再存记忆,只提供能力(白箱引擎、角色生成) | 由 md_cg 显式调用 |
|
|
16
|
-
| **显式调用** | 每个功能 = 一条写明参数的调用,可 grep 可追踪 | 本表 |
|
|
17
|
-
|
|
18
|
-
```
|
|
19
|
-
DSH 插件 (src/)
|
|
20
|
-
│ src/lib/mdcg_client.ts ← 插件侧唯一显式入口
|
|
21
|
-
▼
|
|
22
|
-
MCP stdio:md_cg/mcp_server.py
|
|
23
|
-
│ cg(op=...) / stg(op=...) ← 两个认知基元(kernel 面)
|
|
24
|
-
│ mdcg_remember ← 写入工具(跳过 audit 的写入口,见 §1 注)
|
|
25
|
-
├──────────────► md_cg/*.py (认知图内部实现)
|
|
26
|
-
└─ cg(op=whitebox) ─► md_cg/whitebox.py ─► AEIS 能力库(python -m aeis.mcp.server)
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
---
|
|
30
|
-
|
|
31
|
-
## 1. 认知基元 `cg`(`md_cg/mcp_server.py:_cg_call`,入口 L1058)
|
|
32
|
-
|
|
33
|
-
| 功能 | 显式调用 | 代码位置 |
|
|
34
|
-
| --- | --- | --- |
|
|
35
|
-
| 服务信息 / 健康 | `cg(op=info)` | `mcp_server.py:1062` → `audit.kinds` |
|
|
36
|
-
| 路由:意图→知识+建议能力 | `cg(op=route)` | `mcp_server.py:1070` → `MdCG.search` |
|
|
37
|
-
| 读取(按 id / 召回 / 预算) | `cg(op=read)` | `mcp_server.py:1090` → `MdCG.get` / `MdCG.recall` / `MdCG.search` |
|
|
38
|
-
| 写入(含冲突检测/闸门/**审核**) | `cg(op=write)` | `mcp_server.py:1344` → `audit.audit` + `MdCG.add` / `remember_gated` / `propose` |
|
|
39
|
-
| **插件写入入口(跳过审核)** | `mdcg_remember` | `mcp_server.py:1691` → `MdCG.remember_gated`(gated=true)/ `MdCG.add`(gated=false) |
|
|
40
|
-
| 目标 | `cg(op=goal)` | `mcp_server.py:1190` → `MdCG.add_goal` / `set_goal_status` / `list_goals` |
|
|
41
|
-
| 最近记忆 | `cg(op=recent)` | `mcp_server.py:1209` → `MdCG.remember_event` / `recent_events` |
|
|
42
|
-
| 外部裁决回填 | `cg(op=verify)` | `mcp_server.py:1221` → `MdCG.verify` |
|
|
43
|
-
| 审核队列 | `cg(op=review)` | `mcp_server.py:1225` → `MdCG.review_*` |
|
|
44
|
-
| 主动遗忘 / 恢复 | `cg(op=forget)` | `mcp_server.py:1241` → `MdCG.forget` / `restore` |
|
|
45
|
-
| 保护(不可遗忘) | `cg(op=protect)` | `mcp_server.py:1247` → `_protect_call` → `md_cg/protect.py` |
|
|
46
|
-
| 身份维度 | `cg(op=identity)` | `mcp_server.py:1250` → `_identity_call` → `md_cg/identity.py` |
|
|
47
|
-
| 一致性检测 | `cg(op=consistency)` | `mcp_server.py:1253` → `_consistency_call` → `md_cg/consistency.py` |
|
|
48
|
-
| 元认知 | `cg(op=metacognition)` | `mcp_server.py:1256` → `_metacognition_call` → `md_cg/metacognition.py` |
|
|
49
|
-
| 自我状态 | `cg(op=self_state)` | `mcp_server.py:1259` → `_self_state_call` → `md_cg/self_state.py` |
|
|
50
|
-
| 飞轮 / 自愈 | `cg(op=sustain)` | `mcp_server.py:1262` → `_sustain_call` → `md_cg/sustain.py` |
|
|
51
|
-
| 洗脑 / 去污染 | `cg(op=scrub)` | `mcp_server.py:1265` → `_scrub_call` → `md_cg/scrub.py` |
|
|
52
|
-
| 预测 / 因果门 | `cg(op=predict)` | `mcp_server.py:1268` → `_predict_call` → `md_cg/predict.py` |
|
|
53
|
-
| 因果链 | `cg(op=causal)` | `mcp_server.py:1271` → `_causal_call` → `md_cg/chain.py` |
|
|
54
|
-
| **白箱能力库** | `cg(op=whitebox)` | `mcp_server.py:1274` → `_whitebox_call` → `md_cg/whitebox.py`(见 §3) |
|
|
55
|
-
| 代码索引 | `cg(op=index_code)` | `mcp_server.py:1277` → `md_cg/codeindex.py` |
|
|
56
|
-
|
|
57
|
-
> ⚠️ **插件写入必须走 `mdcg_remember`,不能走 `cg(op=write)`**:
|
|
58
|
-
> `cg(op=write)` 先过 `audit.audit(content_kind)`,未声明 `content_kind` 且未配置
|
|
59
|
-
> `MDCG_POLICY_FILE` 时恒判 BLINDSPOT/DEFER —— 只进审核队列、**永不落盘**。
|
|
60
|
-
> 实测:自动记忆走 `cg(op=write)` 时 0 篇 md 文档;改用 `mdcg_remember(gated=true)`
|
|
61
|
-
> 后 verdict=ACCEPT、md 文档数=1、timeline/read 均命中。
|
|
62
|
-
> `cg(op=write)` 仍保留给「需要审核留痕的显式写入」场景。
|
|
63
|
-
|
|
64
|
-
## 2. 语义时空基元 `stg`(`mcp_server.py:_stg_call`,入口 L1316)
|
|
65
|
-
|
|
66
|
-
| 功能 | 显式调用 | 代码位置 |
|
|
67
|
-
| --- | --- | --- |
|
|
68
|
-
| 两节点关系 | `stg(op=relation)` | `mcp_server.py:1320` → `stg.relation` |
|
|
69
|
-
| 时间线 | `stg(op=timeline)` | `mcp_server.py:1322` → `stg.timeline` |
|
|
70
|
-
| 锚点检索 | `stg(op=anchors)` | `mcp_server.py:1326` → `stg.anchors` |
|
|
71
|
-
| 时空一致性 | `stg(op=consistency)` | `mcp_server.py:1329` → `stg.consistency` |
|
|
72
|
-
|
|
73
|
-
## 3. 白箱能力库(`md_cg/whitebox.py`,AEIS 降为能力库后的唯一入口)
|
|
74
|
-
|
|
75
|
-
白箱 LLM provider **已下线**(不再注册 `lingshu-whitebox`);能力改由 md_cg 显式调用并留痕。
|
|
76
|
-
|
|
77
|
-
| 功能 | 显式调用 | 代码位置 |
|
|
78
|
-
| --- | --- | --- |
|
|
79
|
-
| 统一分发 | `cg(op=whitebox, action=...)` | `mcp_server.py:1274` → `_whitebox_call`(L1306)→ `whitebox.dispatch`(`whitebox.py:387`) |
|
|
80
|
-
| 白箱问答 | `action=ask` | `whitebox.py:322 ask` → `WhiteboxClient.ask`(`whitebox.py:185`)→ 能力库 `wisdom_chat` |
|
|
81
|
-
| 白箱编码 | `action=remember` | `whitebox.py:334 remember` → `WhiteboxClient.remember`(`whitebox.py:194`)→ 能力库 `remember` |
|
|
82
|
-
| **验证编码能力** | `action=verify_encoding` | `whitebox.py:234 verify_encoding`:写入口令→追问命中 |
|
|
83
|
-
| **验证已有知识回答能力** | `action=verify_existing` | `whitebox.py:266 verify_existing`:探针问题 route=self 且非空 |
|
|
84
|
-
| 连通性探测 | `action=ping` | `whitebox.py:300 ping` |
|
|
85
|
-
| 验证报告 | `action=report` | `whitebox.py:366 report`(self 层留痕汇总) |
|
|
86
|
-
| 留痕 | — | `whitebox.py:350 _record` → `cg.add(layer=self, tags=['whitebox:verify'], verification_basis='test')` |
|
|
87
|
-
|
|
88
|
-
> 细粒度工具别名:`mdcg_whitebox`(`mcp_server.py:1345`)与 `cg(op=whitebox)` 等价。
|
|
89
|
-
> 启动命令可由 `MDCG_WHITEBOX_CMD` / `MDCG_WHITEBOX_ARGS` / `MDCG_WHITEBOX_TIMEOUT` 覆盖(`whitebox.py:61`)。
|
|
90
|
-
|
|
91
|
-
## 4. 插件侧 LIB 本地库(`src/lib/`)
|
|
92
|
-
|
|
93
|
-
### 4.1 `mdcg_client.ts` —— 插件调用认知图的唯一显式入口
|
|
94
|
-
|
|
95
|
-
| 插件方法 | 映射到 | 说明 |
|
|
96
|
-
| --- | --- | --- |
|
|
97
|
-
| `cg(args)` / `stg(args)` | MCP `cg` / `stg` | 逃生口,显式传参 |
|
|
98
|
-
| `route(intent)` | `cg(op=route)` | 意图 → 知识 + 建议能力 |
|
|
99
|
-
| `read(query)` / `get(nodeId)` | `cg(op=read)` | 语义召回 / 按 id 取 |
|
|
100
|
-
| `write(content, extra)` | MCP `mdcg_remember`(gated=false) | 直写 `MdCG.add`;角色 / 转录 / 导入复用 |
|
|
101
|
-
| `remember(content, extra)` | MCP `mdcg_remember`(gated=true, layer=contextual) | 记忆沉淀 + 主动遗忘闸门 |
|
|
102
|
-
| `recall(query, k)` | `cg(op=read, query, k)` | 语义召回;读取记 access log(复用观测) |
|
|
103
|
-
| `verify(nodeId, evidence, verdict)` | `cg(op=verify)` | 外部裁决回填 |
|
|
104
|
-
| `recent(limit)` | `cg(op=recent)` | 近期事件窗口 |
|
|
105
|
-
| `timeline(limit)` | `stg(op=timeline)` | 最近记忆时间线(自动召回注入用) |
|
|
106
|
-
| `identity(subjectId)` | `cg(op=identity)` | 身份维度读取 |
|
|
107
|
-
| `whitebox(action, extra)` | `cg(op=whitebox)` | 白箱能力验证 |
|
|
108
|
-
| `serviceInfo()` | `cg(op=info)` | 服务信息 |
|
|
109
|
-
| `verifyClaim(claim)` | `cg(op=read)` + 依据强度判定 | 互维 memory 通道 |
|
|
110
|
-
| `writeRole(roleId, content)` | `mdcg_remember(layer=knowledge)` | 角色定义落图 |
|
|
111
|
-
| `writeTranscript(roleId, sid, who, text)` | `mdcg_remember(layer=contextual)` | 对话转录落图 |
|
|
112
|
-
|
|
113
|
-
身份注入:`MDCG_ROOT / MDCG_TENANT / MDCG_CLEARANCE / MDCG_ACTOR / MDCG_IDENTITY`
|
|
114
|
-
(`mdcg_client.ts` 构造器)。**写入还需凭据**:`MDCG_TOKEN`(推荐)或
|
|
115
|
-
`MDCG_LEGACY_ENV_AUTH=1`(兼容旧部署)——**两者都不设即默认状态**:只读 guest
|
|
116
|
-
(读 / 召回 / 时间线可用,写入全失败、不落盘)。
|
|
117
|
-
|
|
118
|
-
### 4.2 `roleplay_web.ts` —— 角色扮演网页(LIB 本地库)
|
|
119
|
-
|
|
120
|
-
| 功能 | 显式调用 | 代码位置 |
|
|
121
|
-
| --- | --- | --- |
|
|
122
|
-
| 对话生成 | 能力库 `roleplay_chat` | `roleplay_web.ts:765` |
|
|
123
|
-
| 用户发言落图 | `MdcgClient.writeTranscript(role, cid, 'user', msg)` | `roleplay_web.ts:765` → `mdcg_remember` |
|
|
124
|
-
| 角色回复落图 | `MdcgClient.writeTranscript(role, cid, 'assistant', reply)` | `roleplay_web.ts:784` → `mdcg_remember` |
|
|
125
|
-
| 新建角色 | 能力库 `role_create` + `MdcgClient.writeRole` | `roleplay_web.ts:848` / `851` |
|
|
126
|
-
| 导入记忆/锚点/价值观 | 能力库 `role_import` + `MdcgClient.write`(三导入→knowledge/self/structural) | `roleplay_web.ts:681` / `692` |
|
|
127
|
-
| 落图开关 | `toGraph(label, fn)`(未就绪静默跳过,失败仅告警) | `roleplay_web.ts:451` |
|
|
128
|
-
|
|
129
|
-
### 4.3 `mutual.ts` —— 互维维护(LIB 本地库)
|
|
130
|
-
|
|
131
|
-
| 功能 | 显式调用 | 代码位置 |
|
|
132
|
-
| --- | --- | --- |
|
|
133
|
-
| memory 通道核验 | `MdcgClient.verifyClaim`(注入),未就绪回退能力库 `wisdom_verify` | `index.ts:274` |
|
|
134
|
-
| 复核通道 | 能力库 `think`(DeepSeek 独立复核) | `index.ts:296` |
|
|
135
|
-
| 双通道合并裁决 | `combineVerdict` | `mutual.ts:236` |
|
|
136
|
-
| 任务处理 | `processTask` → `whiteboxVerify` + `llmReview` | `mutual.ts:267` |
|
|
137
|
-
| 心跳 / 任务扫描 | `writeHeartbeat` / `scanTasks` | `mutual.ts`(默认导出 L406) |
|
|
138
|
-
|
|
139
|
-
### 4.4 `whitebox_llm.ts` —— 白箱 LLM 适配器(**已下线,保留为本地库**)
|
|
140
|
-
|
|
141
|
-
- 不再被 `src/index.ts` 安装 → DSH 设置页无 `lingshu-whitebox` provider。
|
|
142
|
-
- 保留原因:未来成熟后恢复;或作为库复用 `isCardFormat()` 等纯函数。
|
|
143
|
-
- 白箱能力验证改走 §3 的 `cg(op=whitebox)`。
|
|
144
|
-
|
|
145
|
-
## 5. 数据迁移
|
|
146
|
-
|
|
147
|
-
| 功能 | 显式命令 | 代码位置 |
|
|
148
|
-
| --- | --- | --- |
|
|
149
|
-
| AEIS(sqlite)→ 认知图 | `python -m md_cg.migrate_aeis --db <sqlite> --root <md_root>` | `md_cg/migrate_aeis.py:migrate` |
|
|
150
|
-
| 角色扮演 + 互维 → 认知图 | `python -m md_cg.migrate_roleplay --data-dir <roleplay_data> --root <md_root> [--mutual-dir <~/.lingxu_net>]` | `md_cg/migrate_roleplay.py:migrate` |
|
|
151
|
-
|
|
152
|
-
`migrate_roleplay` 的映射:
|
|
153
|
-
|
|
154
|
-
| 源 | 目标层 | node_id |
|
|
155
|
-
| --- | --- | --- |
|
|
156
|
-
| `roleplay/_roles.json` 角色 | knowledge | `roleplay_role_<id>` |
|
|
157
|
-
| `*_items`(memory / anchors / values) | knowledge / self / structural | `roleplay_<role>_<kind>_<i>` |
|
|
158
|
-
| `transcripts/<role>__<cid>.jsonl` 每轮 | contextual | `roleplay_turn_<role>_<cid>_<idx>` |
|
|
159
|
-
| 互维 `result-<id>.json` / `task-<id>.json` | contextual | `mutual_task_<id>` |
|
|
160
|
-
|
|
161
|
-
验证:P18 `python -m md_cg.test_p18_whitebox`;P19 `python -m md_cg.test_p19_migrate_roleplay`。
|
|
162
|
-
|
|
163
|
-
## 6. 配置项 → 生效位置
|
|
164
|
-
|
|
165
|
-
| 配置 | 默认 | 生效位置 |
|
|
166
|
-
| --- | --- | --- |
|
|
167
|
-
| `mdcg.enabled` | true | `index.ts:189` 是否启动认知图子进程 |
|
|
168
|
-
| `mdcg.root` | `data/mdcg` | `MDCG_ROOT` → `mdcg_client.ts:81` |
|
|
169
|
-
| `mdcg.actor` | `dsh-memory` | `MDCG_ACTOR`;**须与迁移 `--actor` 一致** |
|
|
170
|
-
| `mdcg.tenant` | `default` | `MDCG_TENANT`;**须与迁移 `--tenant` 一致** |
|
|
171
|
-
| `mdcg.clearance` | `private` | `MDCG_CLEARANCE`;决定能读写的密级上限 |
|
|
172
|
-
| `env.MDCG_TOKEN` | **无(写权限默认关闭)** | 认知图写入凭据。签发:`python -m md_cg.tokens issue --role designer --actor dsh-memory --clearance internal --ops-allow … --layers-allow …`(`--ops-allow` / `--layers-allow` 只能收窄,`--role recorder` 为最小权限版) |
|
|
173
|
-
| `env.MDCG_LEGACY_ENV_AUTH` | 无 | 兼容旧部署的 env 直连身份(`recorder`);与 `MDCG_TOKEN` 都不设 → 只读 `guest` |
|
|
174
|
-
| `env.MDCG_CAN_ADMIN` | 无 | 配合 legacy auth:`'1'` → `designer`(可写 `self` 层,角色 anchors 导入需要) |
|
|
175
|
-
|
|
176
|
-
**写权限默认关闭**:不配凭据时插件以只读 `guest` 运行——读 / 召回 / 时间线
|
|
177
|
-
照常,写入不落盘(`index.ts` 启动告警)。是否打开由用户决定。三种身份的
|
|
178
|
-
实际覆盖(用 `_probe_token.py` 对真实 MCP 进程实测):
|
|
179
|
-
|
|
180
|
-
| 调用点 | `guest`(默认) | `record`(最小权限) | `designer`(收窄版) |
|
|
181
|
-
| --- | --- | --- | --- |
|
|
182
|
-
| `route` / `read` / `recall` / `recent` / `stg(op=timeline)` | ✓ | ✓ | ✓ |
|
|
183
|
-
| `cg(op=whitebox)` | ✓ | ✗ | ✓ |
|
|
184
|
-
| `cg(op=goal)` | ✗ | ✓ | ✓ |
|
|
185
|
-
| `cg(op=identity)` / `cg(op=verify)` | ✗ | ✗ | ✓ |
|
|
186
|
-
| `mdcg_remember` → contextual / knowledge / structural | ✗ | ✓ | ✓ |
|
|
187
|
-
| `mdcg_remember` → self(角色 anchors 导入) | ✗ | ✗ | ✓ |
|
|
188
|
-
| 管理类(`forget` / `restore` / `review_decide`) | ✗ | ✗ | ✗(收窄后不留) |
|
|
189
|
-
| `mutual.enabled` | false | `index.ts:256` 是否启动互维维护 |
|
|
190
|
-
| `MDCG_MCP_SURFACE` | `kernel` | `mcp_server.py`:kernel 仅 `cg`/`stg`,full 另含 29 个细粒度工具 |
|
|
191
|
-
|
|
192
|
-
## 7. 关键约定
|
|
193
|
-
|
|
194
|
-
1. **身份绑定加密**:私有内容按 `(tenant, actor)` 派生 DEK;换身份读同一节点 = 「不可读即不存在」。
|
|
195
|
-
故迁移脚本 `--tenant/--actor` 必须与插件 `config.mdcg.tenant/actor` 一致。
|
|
196
|
-
2. **依据强度**:`verification_basis` 取值限 `compiler | test | measurement | formal_proof | data | other`;
|
|
197
|
-
互维判定视前五者为「强依据」(`mdcg_client.ts:56`)。
|
|
198
|
-
3. **失败降级**:认知图未就绪时,互维回退能力库 `wisdom_verify`(`index.ts:274`);
|
|
199
|
-
角色扮演落图失败仅告警,不阻断对话(`roleplay_web.ts:446`)。
|
|
200
|
-
4. **写权限 fail-closed 且默认关闭**:md_cg 无 `MDCG_TOKEN` / `MDCG_LEGACY_ENV_AUTH=1`
|
|
201
|
-
时降级为只读 `guest`——`route`/`read`/`recall`/`timeline` 正常(自动召回不受影响),
|
|
202
|
-
但 `mdcg_remember` 全部 `AccessDenied`、不落盘。**默认即此状态**,打开写权限由用户
|
|
203
|
-
自行决定;插件不代为注入凭据,只在启动时告警(`index.ts`),避免「看起来在记忆、
|
|
204
|
-
其实没落盘」。写 `self` 层(角色 anchors 导入)须 `designer`
|
|
205
|
-
(`MDCG_CAN_ADMIN=1` 或收窄版 designer 令牌)。
|
|
206
|
-
5. **写入通道唯一**:所有插件写入经 `mdcg_remember`;`cg(op=write)` 会走 audit
|
|
207
|
-
(未声明 `content_kind` 时永不落盘),仅供需要审核留痕的显式调用。
|
|
208
|
-
6. **stdio 一律 UTF-8**:`MdcgClient` 构造子进程时强制 `PYTHONIOENCODING=utf-8`。
|
|
209
|
-
Windows 下 piped Python 默认 `gbk` + `surrogateescape`,Node 写的 UTF-8 中文会被
|
|
210
|
-
解成孤立代理字符(`\udcXX`)→ md_cg 落盘/回写 `UnicodeEncodeError`,**中文记忆
|
|
211
|
-
全部失败**。md_cg 自带测试(`test_p2_mcp.py`)与 `test/bridge.test.ts` 均以该
|
|
212
|
-
环境变量启动,客户端此前漏设。
|
|
213
|
-
|
|
214
|
-
## 8. 变更记录
|
|
215
|
-
|
|
216
|
-
| 日期 | 变更 |
|
|
217
|
-
| --- | --- |
|
|
218
|
-
| 2026-09-10 | md_cg 定为唯一真源;AEIS 降能力库;白箱 provider 下线(保留本地库)+ 新增 `cg(op=whitebox)` 验证通道;roleplay/mutual 迁入 `src/lib` 并改用认知图;新增 `migrate_roleplay.py` 与 P18/P19 测试。 |
|
|
219
|
-
| 2026-09-10 | **写入通道修正**:插件写入由 `cg(op=write)` 改为 MCP `mdcg_remember`(`cg(op=write)` 过 audit,未声明 content_kind 时永不落盘);自动记忆改用 `mdcg_remember(gated=true)`,实测 ACCEPT + md 落盘 + timeline/read 命中。补写入凭据(`MDCG_TOKEN` / `MDCG_LEGACY_ENV_AUTH`)与启动期告警。 |
|
|
220
|
-
| 2026-09-10 | **stdio 编码修正**:`MdcgClient` 子进程强制 `PYTHONIOENCODING=utf-8`。此前 Windows 下 gbk/surrogateescape 解码导致中文内容 `UnicodeEncodeError`,中文记忆无法落盘(实测真实桥 E2E 复现并修复)。 |
|
|
221
|
-
| 2026-09-10 | **写权限改为「默认关闭 + 令牌化」**:`MDCG_TOKEN` 取代 `MDCG_LEGACY_ENV_AUTH` 成为推荐路径,示例配置一律注释掉(由用户决定是否打开);`md_cg/tokens.py` 的 `issue` 子命令补齐 `--ops-allow` / `--layers-allow`(对齐 Python API 已有的收窄能力)。三种身份的实际覆盖矩阵见 §6。 |
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|