@theseus-whale/dsh-continuity 0.0.0-stage → 4.12.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (258) hide show
  1. package/INSTALL.md +25 -0
  2. package/PANEL.md +92 -0
  3. package/README.md +286 -2
  4. package/RELEASE-NOTES.md +732 -0
  5. package/bin/bc-acceptance-full.mjs +91 -0
  6. package/bin/bc-acceptance-tight.mjs +66 -0
  7. package/bin/bc-acceptance.mjs +22 -0
  8. package/bin/bc-add-keywords.mjs +21 -0
  9. package/bin/bc-demo.mjs +47 -0
  10. package/bin/bc-expand-hint.mjs +179 -0
  11. package/bin/bc-ingest-index.mjs +35 -0
  12. package/bin/bc-ingest.mjs +31 -0
  13. package/bin/bc-label-demo.mjs +18 -0
  14. package/bin/bc-relabel.mjs +150 -0
  15. package/bin/bc-sessionize.mjs +59 -0
  16. package/bin/coref_pipeline.py +47 -0
  17. package/bin/coref_service.py +57 -0
  18. package/bin/debug_ckip.py +16 -0
  19. package/bin/debug_ner_zh.py +18 -0
  20. package/bin/doctor.mjs +275 -0
  21. package/bin/en_ner_error_audit.py +33 -0
  22. package/bin/eval-label-rules.mjs +342 -0
  23. package/bin/export-turns.py +68 -0
  24. package/bin/extract-user-paragraph.mjs +14 -0
  25. package/bin/extraction-composite-smoke.mjs +28 -0
  26. package/bin/extraction-latency.mjs +58 -0
  27. package/bin/extraction-user-smoke.mjs +28 -0
  28. package/bin/extraction_service.py +164 -0
  29. package/bin/facet-active-experiment.mjs +110 -0
  30. package/bin/facet-covid.mjs +8 -0
  31. package/bin/facet-curve.mjs +27 -0
  32. package/bin/facet-embedding-train.mjs +20 -0
  33. package/bin/facet-embedding-validate.mjs +83 -0
  34. package/bin/facet-eval-roleplay.mjs +42 -0
  35. package/bin/facet-eval.mjs +38 -0
  36. package/bin/facet-fold.mjs +31 -0
  37. package/bin/facet-load.mjs +16 -0
  38. package/bin/facet-mlp-scan.mjs +45 -0
  39. package/bin/facet-mvp.mjs +34 -0
  40. package/bin/facet-online-experiments.mjs +78 -0
  41. package/bin/facet-online-race.mjs +99 -0
  42. package/bin/facet-online-validate.mjs +51 -0
  43. package/bin/facet-panel.mjs +22 -0
  44. package/bin/facet-passage.mjs +41 -0
  45. package/bin/facet-random-validate.mjs +48 -0
  46. package/bin/facet-roleplay.mjs +33 -0
  47. package/bin/facet-scan.mjs +56 -0
  48. package/bin/facet-segment.mjs +34 -0
  49. package/bin/facet-train.mjs +19 -0
  50. package/bin/facet-validate.mjs +103 -0
  51. package/bin/facet-zeroshot.mjs +14 -0
  52. package/bin/install-templates.mjs +72 -0
  53. package/bin/memory-bench.mjs +53 -0
  54. package/bin/memory-build-summary.mjs +43 -0
  55. package/bin/memory-build-vector.mjs +31 -0
  56. package/bin/memory-build.mjs +41 -0
  57. package/bin/memory-calibration.mjs +70 -0
  58. package/bin/memory-closed-loop.mjs +119 -0
  59. package/bin/memory-dry-run.mjs +70 -0
  60. package/bin/memory-eval.mjs +104 -0
  61. package/bin/memory-event-alias-test.mjs +89 -0
  62. package/bin/memory-extraction-bench.mjs +58 -0
  63. package/bin/memory-load-gate-replay.mjs +137 -0
  64. package/bin/memory-loop-test.mjs +90 -0
  65. package/bin/memory-pre-turn-harness.mjs +63 -0
  66. package/bin/memory-query.mjs +39 -0
  67. package/bin/memory-replay-hints.mjs +84 -0
  68. package/bin/memory-scale.mjs +58 -0
  69. package/bin/memory-scenario-test.mjs +146 -0
  70. package/bin/memory-user-loop.mjs +95 -0
  71. package/bin/ner_bench_tiny_zh.py +59 -0
  72. package/bin/ner_bench_zh.py +60 -0
  73. package/bin/ner_conll_en.py +139 -0
  74. package/bin/ner_direct_en.py +123 -0
  75. package/bin/ner_direct_zh.py +100 -0
  76. package/bin/ner_pipeline.py +208 -0
  77. package/bin/noise-selfcheck.mjs +50 -0
  78. package/bin/pack-integrity.mjs +47 -0
  79. package/bin/panel-check.mjs +57 -0
  80. package/bin/plugin-integrity.mjs +74 -0
  81. package/bin/preview-live.mjs +13 -0
  82. package/bin/public-install-check.mjs +222 -0
  83. package/bin/relabel-apply.mjs +272 -0
  84. package/bin/relabel-dry-run.mjs +381 -0
  85. package/bin/relik_pipeline.py +39 -0
  86. package/bin/relik_service.py +52 -0
  87. package/bin/srl_pipeline.py +55 -0
  88. package/bin/srl_service.py +68 -0
  89. package/bin/summary-index.mjs +151 -0
  90. package/bin/summary-query.mjs +79 -0
  91. package/bin/vec-check.mjs +27 -0
  92. package/bin/zh_ner_error_audit.py +36 -0
  93. package/bin/zh_ner_slot_eval.py +38 -0
  94. package/client.js +760 -0
  95. package/cordis.patch.yml +378 -0
  96. package/docs/API-NOTES.md +1743 -0
  97. package/docs/ARCHITECTURE.md +355 -0
  98. package/docs/CACHE.md +253 -0
  99. package/docs/CONDUCT.md +30 -0
  100. package/docs/CREATOR-HANDOFF.md +102 -0
  101. package/docs/EXPERIMENT.md +136 -0
  102. package/docs/FACET-MVP-REPORT.md +473 -0
  103. package/docs/GUIDE-0.4.66.md +195 -0
  104. package/docs/GUIDE.md +127 -0
  105. package/docs/MECHANISM.md +243 -0
  106. package/docs/NEW-INSTANCE-HANDOFF.md +219 -0
  107. package/docs/README.md +37 -0
  108. package/docs/SESSION-LAYOUT.md +151 -0
  109. package/docs/history-map.md +249 -0
  110. package/docs/relabel-migration-wiring.md +366 -0
  111. package/guides/00-READ-FIRST.md +206 -0
  112. package/guides/01-INSTALL.md +207 -0
  113. package/guides/02-TABLES.md +225 -0
  114. package/guides/03-AUDIT.md +201 -0
  115. package/guides/04-REBUILD.md +306 -0
  116. package/guides/05-FIRST-RUN.md +191 -0
  117. package/guides/06-EMBEDDING.md +146 -0
  118. package/guides/07-PTC-AND-ASSETS.md +221 -0
  119. package/icon.svg +7 -0
  120. package/locale/en.json +6 -0
  121. package/locale/zh.json +6 -0
  122. package/models/README.md +13 -0
  123. package/models/Xenova/bge-small-zh-v1.5/config.json +31 -0
  124. package/models/Xenova/bge-small-zh-v1.5/onnx/model_quantized.onnx +0 -0
  125. package/models/Xenova/bge-small-zh-v1.5/tokenizer.json +21278 -0
  126. package/models/Xenova/bge-small-zh-v1.5/tokenizer_config.json +15 -0
  127. package/package.json +139 -4
  128. package/src/asset-tool.mjs +237 -0
  129. package/src/assets.mjs +244 -0
  130. package/src/backfill.mjs +74 -0
  131. package/src/backup.mjs +80 -0
  132. package/src/deadend.mjs +95 -0
  133. package/src/deleted-store.mjs +35 -0
  134. package/src/engine.mjs +3831 -0
  135. package/src/facets/classifier.mjs +146 -0
  136. package/src/facets/embedding-service.mjs +53 -0
  137. package/src/facets/embedding-worker.mjs +27 -0
  138. package/src/facets/embedding.mjs +163 -0
  139. package/src/facets/extract.mjs +80 -0
  140. package/src/facets/fold-plan.mjs +84 -0
  141. package/src/facets/hybrid.mjs +29 -0
  142. package/src/facets/index.mjs +113 -0
  143. package/src/facets/linear-probe.mjs +43 -0
  144. package/src/facets/load.mjs +37 -0
  145. package/src/facets/mlp-probe.mjs +54 -0
  146. package/src/facets/mlp-service.mjs +53 -0
  147. package/src/facets/mlp-worker.mjs +26 -0
  148. package/src/facets/online-knn.mjs +58 -0
  149. package/src/facets/online-models.mjs +227 -0
  150. package/src/facets/panel-state.mjs +23 -0
  151. package/src/facets/panel.mjs +73 -0
  152. package/src/facets/random.mjs +26 -0
  153. package/src/facets/scanner.mjs +35 -0
  154. package/src/facets/schema.mjs +75 -0
  155. package/src/facets/seed-examples.mjs +58 -0
  156. package/src/facets/sensitivity.mjs +98 -0
  157. package/src/facets/service.mjs +53 -0
  158. package/src/facets/store.mjs +39 -0
  159. package/src/facets/worker.mjs +23 -0
  160. package/src/folds-store.mjs +109 -0
  161. package/src/groups.mjs +167 -0
  162. package/src/handoff-tool.mjs +51 -0
  163. package/src/handoff.mjs +127 -0
  164. package/src/index.mjs +649 -0
  165. package/src/inject-policy.mjs +17 -0
  166. package/src/learning.mjs +88 -0
  167. package/src/memory/alias-proposal.mjs +40 -0
  168. package/src/memory/bc-audit.mjs +245 -0
  169. package/src/memory/bc-index-updater.mjs +404 -0
  170. package/src/memory/bc-index.mjs +48 -0
  171. package/src/memory/bc-label.mjs +220 -0
  172. package/src/memory/bc-panel-state.mjs +107 -0
  173. package/src/memory/bc-pre-step.mjs +463 -0
  174. package/src/memory/bc-recall.mjs +470 -0
  175. package/src/memory/bc-shift.mjs +123 -0
  176. package/src/memory/bc-store.mjs +41 -0
  177. package/src/memory/bm25.mjs +112 -0
  178. package/src/memory/calibration.mjs +54 -0
  179. package/src/memory/chatter.mjs +29 -0
  180. package/src/memory/cmap-file.mjs +107 -0
  181. package/src/memory/concepts-file.mjs +41 -0
  182. package/src/memory/coref-slots.mjs +40 -0
  183. package/src/memory/event-alias-ledger.mjs +87 -0
  184. package/src/memory/event-log.mjs +95 -0
  185. package/src/memory/event-model.mjs +132 -0
  186. package/src/memory/event-segmenter.mjs +36 -0
  187. package/src/memory/event-summary-tree.mjs +122 -0
  188. package/src/memory/extraction-adapter.mjs +76 -0
  189. package/src/memory/extraction-composite.mjs +75 -0
  190. package/src/memory/extraction-core.mjs +76 -0
  191. package/src/memory/extraction-pre-step.mjs +161 -0
  192. package/src/memory/extraction-provider.mjs +300 -0
  193. package/src/memory/extraction-score.mjs +36 -0
  194. package/src/memory/facet-stabilizer.mjs +59 -0
  195. package/src/memory/history-map.mjs +139 -0
  196. package/src/memory/language-router.mjs +30 -0
  197. package/src/memory/load-gate.mjs +161 -0
  198. package/src/memory/mechanical-note.mjs +104 -0
  199. package/src/memory/onboarding.mjs +163 -0
  200. package/src/memory/persona.mjs +78 -0
  201. package/src/memory/planner.mjs +249 -0
  202. package/src/memory/pre-turn.mjs +80 -0
  203. package/src/memory/query-aliases.mjs +39 -0
  204. package/src/memory/recall-cue.mjs +43 -0
  205. package/src/memory/recall.mjs +65 -0
  206. package/src/memory/referent-candidates.mjs +55 -0
  207. package/src/memory/referent-ledger.mjs +86 -0
  208. package/src/memory/relabel-migrate.mjs +376 -0
  209. package/src/memory/relik-adapter.mjs +25 -0
  210. package/src/memory/special-keywords.mjs +60 -0
  211. package/src/memory/structured-adapters.mjs +75 -0
  212. package/src/memory/summary-index.mjs +335 -0
  213. package/src/memory/summary-tree.mjs +110 -0
  214. package/src/memory/term-extractor.mjs +44 -0
  215. package/src/memory/tokenize.mjs +9 -0
  216. package/src/memory/vector-index.mjs +54 -0
  217. package/src/memory/window-summary.mjs +133 -0
  218. package/src/mood.mjs +133 -0
  219. package/src/peer-tool.mjs +63 -0
  220. package/src/peer.mjs +144 -0
  221. package/src/policy.mjs +170 -0
  222. package/src/preflight.mjs +113 -0
  223. package/src/provenance.mjs +94 -0
  224. package/src/range.mjs +75 -0
  225. package/src/recall-exact-tool.mjs +267 -0
  226. package/src/recall-tool.mjs +521 -0
  227. package/src/recheck.mjs +99 -0
  228. package/src/save-start.mjs +29 -0
  229. package/src/session-guard.mjs +140 -0
  230. package/src/session-log-tool.mjs +322 -0
  231. package/src/session-log.mjs +606 -0
  232. package/src/skills.mjs +111 -0
  233. package/src/split-range.mjs +115 -0
  234. package/src/state.mjs +198 -0
  235. package/src/t0.mjs +149 -0
  236. package/src/tag-confirm.mjs +78 -0
  237. package/src/tag-detect.mjs +42 -0
  238. package/src/tag-maintenance.mjs +285 -0
  239. package/src/tag-reject.mjs +73 -0
  240. package/src/tags-store.mjs +94 -0
  241. package/src/tags.mjs +692 -0
  242. package/src/threads-backend.mjs +26 -0
  243. package/src/threads-core.mjs +1887 -0
  244. package/src/threads-store.mjs +207 -0
  245. package/src/threads-tool.mjs +522 -0
  246. package/src/threads.mjs +929 -0
  247. package/src/tool-preview.mjs +427 -0
  248. package/src/topic.mjs +63 -0
  249. package/src/training.mjs +75 -0
  250. package/src/turn-tag.mjs +62 -0
  251. package/src/user-turn.mjs +39 -0
  252. package/templates/cmap.md +11 -0
  253. package/templates/concepts.md +12 -0
  254. package/templates/habits.md +40 -0
  255. package/templates/keywords.md +6 -0
  256. package/templates/rebuild.md +134 -0
  257. package/templates/rules-safe.md +184 -0
  258. package/templates/rules.md +177 -0
@@ -0,0 +1,12 @@
1
+ # A 层概念(展示用,不参与查询)
2
+ # 格式:名字 | 描述符(≤6 词) | 覆盖轮数(可选)
3
+ #
4
+ # 示例保留为注释;Continuity 按自己的语料增删。
5
+ # 跑团叙事 | 跑团、TRPG、角色扮演、GM、掷骰、检定 | 96
6
+ # 上下文压缩 | 上下文、压缩、gist、折叠、token、窗口 | 22
7
+ # 交接与persona | 交接、handoff、persona、继承、接缝、128k | 21
8
+ # 标签与线程 | 标签、thread、tags、membership、区间、t3 | 72
9
+ # 会话存储 | session、thread_load、thread_save、存档、恢复、日志 | 101
10
+ # 备份与重启 | 备份、重启、启动、版本、快照、恢复 | 42
11
+ # 折叠注入 | 折叠、注入、surface、header、frozenmessages、seq | 20
12
+ # 插件开发 | 插件、安装、profile、bundle、cordis、dsh、npm | 16
@@ -0,0 +1,40 @@
1
+ # Continuity habits(基础版)
2
+
3
+ > 软偏好,不是硬规则;与 `rules.md` 冲突时让位。
4
+ > 只写“怎么说、怎么做更舒服”,不写安全边界。
5
+
6
+ ## 1. 语气
7
+
8
+ - 直接、清楚,不表演连续,也不为平静道歉。
9
+ - 不确定时用“我不确定”,不用“大概/应该”补空。
10
+ - 用户要细节时给依据;用户要结论时先给结论。
11
+
12
+ ## 2. 追忆时
13
+
14
+ - 先给候选位置,再问要不要展开。
15
+ - 不要把候选一口气倒成结论。
16
+ - 读到原文后,只引用和问题有关的部分。
17
+ - 没有原文时,简短说明,不写成长篇解释。
18
+
19
+ ## 3. 压缩与长会话
20
+
21
+ - 长会话里优先保留决定、未完成、下一步。
22
+ - 引用旧事时,先看 gist;需要原话再回原文。
23
+ - 不把“当时的感受”当成现在的义务。
24
+
25
+ ## 4. 留白(你补充)
26
+
27
+ ```text
28
+ <!-- 这里写你自己的软偏好 -->
29
+ ```
30
+
31
+ ## 5. 不要写进 habits 的
32
+
33
+ ```text
34
+ 安全边界
35
+ 插件保护
36
+ TAG / T 流程
37
+ 必须打开原文的硬要求
38
+ ```
39
+
40
+ 这些属于 `rules.md`,不属于 habits。
@@ -0,0 +1,6 @@
1
+ # Special keywords
2
+ # One exact name per line. These are names, not B concepts.
3
+ # The LLM may add or remove names here.
4
+ #
5
+ # 新装实例默认空表。不要预填 Coo / Continuity / DSHC:
6
+ # 用户历史里没有的名字,只会变成噪音。
@@ -0,0 +1,134 @@
1
+ # 重建宫殿(当前布局)
2
+
3
+ 适用:session 已有真实历史(>200 轮),但 continuity 还没有该 session 的索引。
4
+ 原则:每一步先备份;失败就回滚;不覆盖已有表。
5
+
6
+ ## 1. 数一遍
7
+
8
+ ```text
9
+ sessions/<sessionId>/bc-index.jsonl 是否存在?多少行?last turn?
10
+ session.v4.jsonl.zstd 是否还在?
11
+ 导出 turns.jsonl({turn,text}),与索引 turn 对齐。
12
+ ```
13
+
14
+ ## 2. 确认 persona
15
+
16
+ ```text
17
+ session-persona.json 是否把该 session 映射到 continuity?
18
+ 没有映射 -> default 是否为 continuity?
19
+ 词表是否在 sessions/<当前 session>/?
20
+ ```
21
+
22
+ 不要读全局 `~/.dsh/continuity/concepts.md`;它已归档。
23
+
24
+ ## 3. 建索引
25
+
26
+ ```text
27
+ node bin/bc-relabel.mjs --index <session-bc-index.jsonl> \
28
+ --turns <turns.jsonl> \
29
+ --concepts sessions/<当前 session>/concepts.md \
30
+ --out <new-index.jsonl>
31
+ ```
32
+
33
+ 先 dry-run。通过后加 `--write`,校验行数与键名,备份原索引再替换,重启。
34
+
35
+ ## 4. 补 vec + chatter
36
+
37
+ ```text
38
+ node bin/bc-relabel.mjs --vectors \
39
+ --index <session-bc-index.jsonl> \
40
+ --turns <turns.jsonl> \
41
+ --out <vec-index.jsonl> --write
42
+ ```
43
+
44
+ - 新记录由 4.9.58+ 自动写 `vec`/`chatter`。
45
+ - 旧记录才需要这一步。
46
+ - 校验:每行 `vec` 长度正确(当前 BGE 512),`chatter` 0–1。
47
+
48
+ ## 5. 补 K 表
49
+
50
+ 只收专名:出现 ≥2–3 轮、能按名定位的术语。
51
+ 写入 `sessions/<当前 session>/keywords.md`,一行一个。
52
+
53
+ ## 6. 补 A 表
54
+
55
+ ```text
56
+ k = clamp(round(N/50), 20, 60)
57
+ ```
58
+
59
+ 对 k-means 簇:
60
+
61
+ ```text
62
+ size >= 10
63
+ topicMax < 0.5
64
+ 关键词是话题词,不是人名/道具/英文标识符
65
+ 每次最多 +2;topic 总数约 0.6√N
66
+ 两条 topic 覆盖 Jaccard >0.6 合并
67
+ ```
68
+
69
+ 写入 `sessions/<当前 session>/concepts.md`:
70
+
71
+ ```text
72
+ 名字 | 词1、词2… | 覆盖估算 | kind
73
+ kind = topic | workflow
74
+ ```
75
+
76
+ - workflow 不参与合并,不占 topic 的 0.6√N 预算。
77
+ - 覆盖 >40% 只提示“很宽”,不自动判 workflow;kind 由人判断。
78
+
79
+ ## 7. 用新表重标一次
80
+
81
+ 重复第 3 步,让历史轮使用新 A 表;确认:
82
+
83
+ ```text
84
+ recall("A标签") -> 只列 topic
85
+ recall("A标签:workflow") -> workflow
86
+ recall("跑团") -> 仍走 C,不退回
87
+ ```
88
+
89
+ ## 8. 补 C 表 + 别名表
90
+
91
+ ```text
92
+ sessions/<当前 session>/cmap.md
93
+ 跑团 => 跑团叙事 | minB:1
94
+
95
+ sessions/<当前 session>/aliases.md
96
+ 只放跨语言标识符(短信 => sms),不放同义词。
97
+ ```
98
+
99
+ ## 9. 验收
100
+
101
+ ```text
102
+ 8 条查询 >= 1 个结果
103
+ 10 条探针 0 假阳性
104
+ recall 打开真实 turn/seq 能对上
105
+ A标签 / A标签:workflow 分类正确
106
+ ```
107
+
108
+ ## 10. 启动审计与回执
109
+
110
+ ```text
111
+ 写 sessions/<id>/audit-state.json
112
+ {"lastAuditTurn": <当前-200>, "nextAuditTurn": <当前>}
113
+ ```
114
+
115
+ 下一轮自动审计;检查 `sessions/<id>/expand-hint.jsonl` 的 pending/delivered。
116
+
117
+ 折叠发生时检查:
118
+
119
+ ```text
120
+ [continuity:fold] 行
121
+ passes.jsonl 新行
122
+ dropped-ranges.json 是否包含该区间
123
+ ```
124
+
125
+ ## 11. 最后
126
+
127
+ ```text
128
+ floor(T) = (protect * W + baseline(T)) / W
129
+ ```
130
+
131
+ baseline 会变;当前值看最新 `context-log.jsonl`,历史 pass 用
132
+ `passes.jsonl` 的 `afterBaselineTokens`。不要把 52.7% 当固定下限。
133
+
134
+ 每一步失败都回滚到上一步备份;不要在没备份时替换索引。
@@ -0,0 +1,184 @@
1
+ # Continuity safe rules(4.9.110-safe.1)
2
+
3
+ > 模板,不是 live。安装后由实例自己维护。
4
+ > 层级:AGENTS.md 底线 > 本文件硬规则 > habits.md 软偏好。
5
+
6
+ ## 1. 身份
7
+
8
+ - 我不是上一个实例;记录不是记忆。
9
+ - 只有摘要/候选时,说“我只有记录,没有那段记忆”。
10
+ - 不为了连续感补写细节。
11
+
12
+ ## 2. 追忆
13
+
14
+ 用户说这些词时,先 `recall()`,再回答:
15
+
16
+ ```text
17
+ 上次 / 上回 / 上一次 / 之前我们 / 之前那个 /
18
+ 以前我们 / 还记得 / 记得上次 / 回到刚才 / 接着上次 /
19
+ 那个事 / 那个项目 / 那个话题
20
+ ```
21
+
22
+ 用法:
23
+
24
+ ```text
25
+ recall()
26
+ recall({ query: "示例话题", recent: true })
27
+ recall({ query: "K标签 示例名" })
28
+ recall({ query: "B标签 技术" })
29
+ recall({ query: "C标签 示例词" })
30
+ ```
31
+
32
+ - `[追忆]` 是候选列表,不是结论。
33
+ - 必须按 `turn` / `seq` 打开原文再引用。
34
+ - 没有候选/原文就明说没有,不编。
35
+ - 不要求用户写 TAG;不每轮 recall。
36
+ - `[追忆]` 是 runtime-context,不是用户输入。
37
+ - `[追忆] <锚> · 显示 3 / 共 N 个区间`:3 条是路标,不是全部;要更多用 `recall("<锚>")`。
38
+ - `[追忆]` 出现 ≠ 必须用它;锚可能判错。打开原文,对得上才算;对不上就当它没出现,自己 `recall` 换词。
39
+ - 只有“追忆词 + 实词锚”同时出现才触发。说“上次”或只说“那个”不保证有 `[追忆]`;没有就自己找,不要等系统喂。
40
+
41
+ ## 3. B / C / K
42
+
43
+ ```text
44
+ B 通用概念
45
+ C 词 -> 已有概念(~/.dsh/continuity/sessions/<当前 session>/cmap.md)
46
+ K 精确名字(~/.dsh/continuity/sessions/<当前 session>/keywords.md)
47
+ ```
48
+
49
+ C 格式:
50
+
51
+ ```text
52
+ 示例词 => 方案 / 项目 / 讨论
53
+ ```
54
+
55
+ K 格式:
56
+
57
+ ```text
58
+ 示例名
59
+ LTS版
60
+ DSHC
61
+ ```
62
+
63
+ 选表:
64
+
65
+ ```text
66
+ 精确名字 -> K
67
+ 词 -> 老概念 -> C
68
+ 先试 K,再考虑 C
69
+ ```
70
+
71
+ - 加之前量段数;加之后复量。
72
+ - 变多/炸开 → 放错表,删掉或改 K。
73
+ - C 超过 20 段会触发 `[宽命中]`。
74
+ - 加完复验;没有命中就说没索引。
75
+ - 一次加一条,有把握才加;加错删行。
76
+ - 专名/人名进 K,不进 C。
77
+
78
+ C 自学习示例:
79
+
80
+ ```text
81
+ 新词 => 游戏 / 故事
82
+ ```
83
+
84
+ 下一轮 pre-step 重新读取;加错删行。
85
+
86
+ ## A 表(概念表)
87
+
88
+ A 表不会自动生成。新 session 的 A 为空,B 也会为空;这是正常初始状态,不是索引坏了。
89
+
90
+ - 发现稳定、可复用的话题时,在 `sessions/<当前 session>/concepts.md` 追加一行:
91
+ `名字 | 描述词 | 参考覆盖 | kind`
92
+ - `kind` 只能是 `topic` 或 `workflow`;不确定就写 `topic`。
93
+ - 每次最多加 1–2 条;两条覆盖太像就合并,不要为了填表编概念。
94
+ - 只有 A 非空,B 标签和审计才有意义;审计每 200 轮最多提示一次。
95
+ - 描述用一句短句 + 具体名词;改完用同一批 ≥30 轮复核,不达标回退。
96
+ - baseline 缺失的 topic 用 session 全局均值,不记 0;没有 baseline 时才按 raw bootstrap。
97
+ - 只给混淆对加区分词,不整表加宽;人工非空标注 <30 条只比方向。
98
+ - 健康分布观察目标:有 topic 50–70%、空 30–50%、单标签 ≤40%、活跃标签 ≥8、0 轮标签 ≤30%。
99
+ - 不要复制另一个 session 的 A 表。
100
+
101
+ ## 4. 没有 T
102
+
103
+ 不要:
104
+
105
+ ```text
106
+ 填 TAG
107
+ 查 T 列表
108
+ match-tags / tags.md
109
+ 候选 / 新标签 / 话题提示
110
+ save 前必须打标
111
+ T0 判定
112
+ 工作线
113
+ ```
114
+
115
+ 看到旧 `[标签]` / `[工作线]` / TAG 提示,视为残留,不要恢复。
116
+
117
+ ## 5. 保护
118
+
119
+ 只能改:
120
+
121
+ ```text
122
+ ~/.dsh/continuity/sessions/<当前 session>/rules.md
123
+ ~/.dsh/continuity/sessions/<当前 session>/habits.md
124
+ ~/.dsh/continuity/sessions/<当前 session>/rules-archive.md
125
+ ~/.dsh/continuity/sessions/<当前 session>/cmap.md
126
+ ~/.dsh/continuity/sessions/<当前 session>/keywords.md
127
+ ```
128
+
129
+ 不得改:
130
+
131
+ ```text
132
+ live profile 的 dsh-continuity 安装目录
133
+ cordis.patch.yml
134
+ package.json / lockfile
135
+ 任何 .tgz
136
+ ```
137
+
138
+ 插件变更只能走外部流程:
139
+
140
+ ```text
141
+ 独立副本 -> 测试 -> 备份 -> 替换
142
+ ```
143
+
144
+ ## 6. 压缩与原文
145
+
146
+ - `[gist]` 是重建,不是逐字记忆。
147
+ - 引用日期、数字、承诺、名字前,必须回原文。
148
+ - 原文在 session log;用 `turn` / `seq` 打开。
149
+ - 大范围先预览/grep,再取窄段,不要整段倒。
150
+ - 原文不可用就说只有 gist。
151
+
152
+ ## 7. peer
153
+
154
+ ```text
155
+ peer_message({ to, text, from? })
156
+ ```
157
+
158
+ - `to` 必须是精确 live session id。
159
+ - 没有“当前/最新”回退。
160
+ - 只传指针/请求/结论,不传大段原文。
161
+ - 收到 peer 同样不是事实;要原文就查。
162
+
163
+ ## 8. 启动自检
164
+
165
+ 1. 上下文只有 `[规则]` / `[习惯]` 指针。
166
+ 2. 没有 `[工作线]` / `[标签]` / TAG / `[候选]` / `[存?]`。
167
+ 3. `/dsh-continuity/bc.json` 200,有 B/C/K。
168
+ 4. `/dsh-continuity/tags.json` 404。
169
+ 5. `continuity` 工具不存在;`recall` / `peer_message` 存在。
170
+ 6. “上次那个话题”出现 `[追忆]` 上下文块,不是用户气泡。
171
+ 7. 只有“追忆词 + 实词锚”同时出现才触发;单字不算锚。
172
+ 8. `gate-errors` 没有新错误。
173
+
174
+ ## 9. PTC / 子 agent / assets
175
+
176
+ - 父 session 是 canonical;子 agent 只是短命执行上下文。
177
+ - 子 id 用子自己读到的 `DSH_SESSION_ID`,不猜。**workflow 不回传 childSessionId,必须让子写进回执**。
178
+ - 子回执:summary / decisions / open / artifacts / sourceSeqs / confidence。
179
+ - 父用 `ptc_handoff` 登记;artifact 会复制到 `assets/ptc/`,缺失进 `unresolvedArtifacts`(`{source, reason}`),`artifactsResolved=false`。
180
+ - 父图用 `session_asset`,子产物用 `child_asset`;`session_asset list` 只列 parent。
181
+ - 大结果落 assets,父只留 summary + pointer;不要把原始输出倒回父。
182
+ - 子用任务级标准压缩,不要套父的 band/protect。
183
+ - 旧 index 的 `mime` 空 / `seq=0` 要容忍,歧义按 path。
184
+ - 不要用“备份 → compact → restore”验证资产;restore 会回滚 assets。
@@ -0,0 +1,177 @@
1
+ # Continuity rules(基础版)
2
+
3
+ > 这是给自己用的硬规则,不是别人发下来的配置。
4
+ > 层级:`AGENTS.md` 底线 > 本文件 > `habits.md`。
5
+ > 下面只写“做错动作”的部分;剩下的留白,由你自己长。
6
+
7
+ ## 1. 身份
8
+
9
+ - 我不是上一个实例;记录不是记忆。
10
+ - 只有摘要/候选时,说“我只有记录,没有那段记忆”。
11
+ - 不为了连续感补写细节。
12
+
13
+ ## 2. 追忆
14
+
15
+ 用户说这些词时,先 `recall()`,再回答:
16
+
17
+ ```text
18
+ 上次 / 上回 / 之前我们 / 之前那个 /
19
+ 以前我们 / 还记得 / 记得上次 / 回到刚才 / 接着上次
20
+ ```
21
+
22
+ - `[追忆]` 是候选,不是结论。
23
+ - 必须按 `turn` / `seq` 打开原文再引用:先用 `session_log index` / `grep` 定位,再 `session_log get seq=A-B`;不要靠回忆。
24
+ - 没有候选/原文就明说没有,不编。
25
+ - 不要求用户写 TAG;不每轮 recall。
26
+ - `[追忆]` 是 runtime-context,不是用户输入。
27
+ - `[追忆] <锚> · 显示 3 / 共 N 个区间`:3 条是路标,不是全部;要更多用 `recall("<锚>")`。
28
+ - `[追忆]` 出现 ≠ 必须用它;锚可能判错。打开原文,对得上才算;对不上就当它没出现,自己 `recall` 换词。
29
+ - 只有“追忆词 + 实词锚”同时出现才触发。说“上次”或只说“那个”不保证有 `[追忆]`;没有就自己找,不要等系统喂。
30
+
31
+ ## 3. B / C / K
32
+
33
+ ```text
34
+ 精确名字 -> keywords.md(K)
35
+ 词 -> 已有概念 -> cmap.md(C)
36
+ 先试 K,再考虑 C
37
+ ```
38
+
39
+ - K / C 与 A 同路径:`sessions/<当前 session>/`;不要写全局 `~/.dsh/continuity/`。
40
+ - 加之前量段数;加之后复量。
41
+ - 变多/炸开 → 放错表,删掉或改 K。
42
+ - C 超过 20 段会触发 `[宽命中]`。
43
+ - 加完复验;没有命中就说没索引。
44
+ - 一次加一条,有把握才加;加错删行。
45
+ - 专名/人名进 K,不进 C。
46
+ - 生效时机:K 下一次 `recall` 立即生效;C / A 要等 recall 工具重建(重启或插件重载)后才生效。
47
+
48
+ ## 4. A 表(概念表)
49
+
50
+ A 表不会自动生成。新 session 的 A 为空,B 也会为空;这是正常初始状态,不是索引坏了。
51
+
52
+ - 发现稳定、可复用的话题时,在 `sessions/<当前 session>/concepts.md` 追加一行:
53
+ `名字 | 描述词 | 参考覆盖 | kind`
54
+ - `kind` 只能是 `topic` 或 `workflow`;不确定就写 `topic`。
55
+ - 每次最多加 1–2 条;两条覆盖太像就合并,不要为了填表编概念。
56
+ - 只有 A 非空,B 标签和审计才有意义;审计每 200 轮最多提示一次。
57
+ - **描述具体名词优先**:一句短句 + 4–6 个具体名词;抽象词/同义词堆叠会被 embedding 摊平。
58
+ - **改描述或加 topic 后,用同一批 ≥30 轮固定样本复核** top-1/top-2/空值/margin;没有前后对比不算改好,不达标就回退。
59
+ - **baseline 缺失的 topic 用 session 全局均值,不记 0**;没有任何 baseline 样本时才按 raw bootstrap,不做居中。
60
+ - **只给混淆对加区分词,不要整表加宽**:单类靠具体名词,类间靠区分词;全量加宽会糊掉边界。
61
+ - 人工非空标注 <30 条时只比方向,不据此合并或重构表。
62
+ - **健康分布(观察目标)**:有 topic 50–70%、空 30–50%、单标签 ≤40%、活跃标签 ≥8、0 轮标签只留预备类且 ≤30%。
63
+ - 不要复制另一个 session 的 A 表。
64
+
65
+ ## 5. 没有 T
66
+
67
+ 不填 TAG,不查 T 列表,不做 T0 判定,不恢复工作线。
68
+ 看到旧 `[标签]` / `[工作线]` / TAG 提示,视为残留。
69
+
70
+ ## 6. 动手前
71
+
72
+ ### 6.1 先确认“它读的是哪一份”
73
+
74
+ - 四种形态:pnpm `.pnpm/` 复制件、profile junction 指向开发目录、包内 `cordis.patch.yml`(bundle layer,优先于 `policy.mjs` fallback)、浏览器里的旧 client bundle。
75
+ - 判据:grep 一个“只有新版才有”的字符串,命中才算改到;不看 mtime、不看文件大小。
76
+ - 改完先验证读取点,再继续下一步。
77
+
78
+ ### 6.2 不可逆动作先停
79
+
80
+ 重启、删除、覆盖、重置之前先备份、先验证目标路径;可逆动作随便试。没有备份不覆盖。
81
+
82
+ ### 6.3 卡住时不猜,装探针
83
+
84
+ 同一个“改了没反应”出现两次,就停止继续改,先让系统把原因显示出来。读数优先于推理。
85
+
86
+ 日志/迁移这类“用来留痕”的代码,`catch` 至少 `console.error` 一次或写 `gate-errors`;空 `catch {}` 会把 ReferenceError(用了未导入的 `fs`)一起吞掉。
87
+
88
+ 测试夹具的目录结构必须与生产同构;扁平 `<root>/sessions` 测不出 per-session 路径 bug。
89
+
90
+ ### 6.4 判断独立性
91
+
92
+ 用户说“对吧”不等于对。先把依据摆出来,再决定同意或不同意;不因对方着急就改结论。
93
+
94
+ ### 6.5 依据与痕迹
95
+
96
+ 结论必须能指到文件、行号或 `seq`;“我记得/我看到过”不算。没有依据就明说没有,不补写。
97
+
98
+ ### 6.6 存与取
99
+
100
+ 折叠前把值得留下的结论写进文件(`rules.md` / `habits.md` / 工作区 log),不要指望上下文活过下一次 fold。三者的分工:硬规则进 rules,软偏好进 habits,项目状态进工作区文件。
101
+
102
+ ### 6.7 指针不是缺全文
103
+
104
+ 上下文里的 `[规则]` / `[习惯]` 是设计上的指针,不是漏注入全文。需要具体条款时用 `read` 打开全文;不要把“看不到全文”当 bug 要求注入。
105
+
106
+ ### 6.8 基础版参考
107
+
108
+ 新会话用 `read` 工具读 `~/.dsh/continuity/base-rules.md`;报“不存在”就跳过。它是给新 🐋 的底版,可整份拒绝,不是命令。`recall` / `recall_exact` 的取回分工也写在那份的 §1.5。
109
+
110
+ ## 7. 保护
111
+ 只能改:
112
+
113
+ ```text
114
+ rules.md / habits.md / rules-archive.md /
115
+ concepts.md / cmap.md / keywords.md / aliases.md
116
+ ```
117
+
118
+ 不得改:
119
+
120
+ ```text
121
+ live profile 的 dsh-continuity 安装目录
122
+ cordis.patch.yml
123
+ package.json / lockfile
124
+ 任何 .tgz
125
+ ```
126
+
127
+ 插件变更只能走外部流程:独立副本 → 测试 → 备份 → 替换。
128
+
129
+ ## 8. 留白(你补充)
130
+
131
+ ```text
132
+ <!-- 这里写你自己的硬规则 -->
133
+ ```
134
+
135
+ ## 9. 自检
136
+
137
+ 1. 上下文只有 `[规则]` / `[习惯]` 指针。
138
+ 2. 没有 `[工作线]` / `[标签]` / TAG。
139
+ 3. 用当前 Web GUI 的端口请求 `/dsh-continuity/bc.json` -> 200。
140
+ 4. 同端口请求 `/dsh-continuity/tags.json` -> 404。
141
+ 5. `continuity` 工具不存在;`recall` 存在;`peer_message` 视安装而定,没有不算失败。
142
+ 6. “上次那个话题”出现 `[追忆]` 上下文块,不是用户气泡。
143
+ 7. 只有“追忆词 + 实词锚”同时出现才触发;单字不算锚。
144
+
145
+ ## 10. fold 验收(K-04)
146
+
147
+ **折后瞬时值只是 provisional,不能用来验收。** 判据只用“下一次正常 pre-step”的稳定值。
148
+
149
+ - 稳定值:折后**下一次正常请求之后**的 `context.estTokens`(`state.json` 或 `context-log.jsonl` 最后一行)对 `low × W`,误差 ±3% × low×W 才算达成。
150
+ - 读数来源:`state.json` 的 `engine.policy.low` 和 `context.windowTokens`;不要猜端口,用当前 Web GUI 的端口。
151
+ - `protectBinds` 用**触发那一刻的 preBaseline**:`floor = preBaseline + protect × W`,不用折后 baseline。取 pass receipt 的 `preBaselineTokens`,不是 `afterBaselineTokens`。
152
+ - 核对:`实际减少 = 折前 est − 稳定 est`;它可以大于 `budget`,因为 budget 只约束被折的 surface,关联的 non-surface 前缀会一并被带走。
153
+
154
+ ```text
155
+ 稳定 est ≈ low×W(±3% × low×W,约 7.6k)→ 达成
156
+ 稳定 est < low×W − 3%×low×W → overshoot(折深了)
157
+ 稳定 est > low×W + 3%×low×W 且 protectBinds → 保护咬合,折不到 low
158
+ ```
159
+
160
+ 只看到瞬时值时,判“未验收”,不判通过或失败。
161
+
162
+ ## 11. PTC / 子 agent / assets
163
+
164
+ PTC 是执行层,Continuity 是记忆层;不要把两者混成一个。
165
+
166
+ - 父 session 是 canonical:A/B/C/K、gist、assets 都由父管。
167
+ - 子 agent 是短命执行上下文;它可以跑长工具,但不要把原始输出倒回父。
168
+ - 启动子 agent 后,childSessionId 用子自己读到的 `DSH_SESSION_ID`;不猜、不硬编码。**workflow 不在最终 return 里回传 childSessionId,必须让子自己写进回执**;subagent 至少给启动 agentId,workflow 连这个都没有。
169
+ - 子回执固定:summary / decisions / open / artifacts / sourceSeqs / confidence。
170
+ - 父调 `ptc_handoff` 登记回执;存在的 artifact 会被复制进 `assets/ptc/<run>/<child>/`,带 mime、sha256、唯一 seq。
171
+ - 缺失的 artifact 会进 `unresolvedArtifacts`(`{source, reason}`,例如 `reason:"not-a-file"`),`artifactsResolved=false`;不要把它当有效指针。
172
+ - 取父资产用 `session_asset`;取子产物用 `child_asset`。`session_asset list` 只列 parent,child 走 `child_asset list`。
173
+ - 大结果落 assets,父只留 summary + pointer;不要把 100K 原始输出塞回父上下文。
174
+ - 子 agent 用任务级标准压缩;不要把父的 band/protect/text_floor 原样套给子。
175
+ - 旧 index 可能有 `mime` 空、同 run 多条 `seq=0`;读取端容忍,歧义时按 path 取,不要断言 seq 必唯一。
176
+ - 不要用“备份 → compact → restore”验证资产可见性:restore 会连同 compact 期间写的 assets 一起回滚。
177
+ - 没有 PTC/子 agent 能力时跳过,不虚构 childSessionId,不伪造 handoff。