@mingmaple/dsh-handover 0.9.14 → 1.0.0

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 (102) hide show
  1. package/README.md +123 -92
  2. package/docs/migrate.md +52 -41
  3. package/docs/releases/0.9.12.md +2 -3
  4. package/docs/releases/0.9.14.md +1 -5
  5. package/docs/releases/0.9.22.md +34 -0
  6. package/docs/releases/1.0.0.md +33 -0
  7. package/docs/troubleshoot.md +230 -46
  8. package/package.json +74 -71
  9. package/scripts/behavior.mjs +398 -0
  10. package/scripts/blank-dsh.mjs +41 -25
  11. package/scripts/blank-smoke.mjs +278 -109
  12. package/scripts/check-docs.mjs +7 -0
  13. package/scripts/e2e-migration.mjs +2 -2
  14. package/scripts/office.mjs +3 -3
  15. package/scripts/portability.mjs +71 -0
  16. package/scripts/style-gate.mjs +571 -0
  17. package/src/client.js +1028 -955
  18. package/src/index.mjs +313 -142
  19. package/src/lib/absrefs.mjs +1 -1
  20. package/src/lib/api.mjs +18 -10
  21. package/src/lib/archive.mjs +1 -1
  22. package/src/lib/brief.mjs +8 -6
  23. package/src/lib/config.mjs +23 -8
  24. package/src/lib/consent.mjs +54 -1
  25. package/src/lib/docmap.mjs +140 -0
  26. package/src/lib/drift.mjs +1 -1
  27. package/src/lib/events.mjs +1 -1
  28. package/src/lib/facts.mjs +19 -12
  29. package/src/lib/gates.mjs +30 -6
  30. package/src/lib/global-task.mjs +69 -0
  31. package/src/lib/guide.mjs +81 -85
  32. package/src/lib/handover-io.mjs +69 -6
  33. package/src/lib/identity.mjs +330 -0
  34. package/src/lib/legacy.mjs +89 -0
  35. package/src/lib/lint.mjs +17 -13
  36. package/src/lib/manual.mjs +135 -59
  37. package/src/lib/mover.mjs +23 -19
  38. package/src/lib/names.mjs +14 -19
  39. package/src/lib/office.mjs +63 -15
  40. package/src/lib/pack-ops.mjs +11 -11
  41. package/src/lib/pathkey.mjs +24 -0
  42. package/src/lib/peer.mjs +4 -4
  43. package/src/lib/phase.mjs +8 -13
  44. package/src/lib/profile.mjs +1 -1
  45. package/src/lib/reminder.mjs +110 -0
  46. package/src/lib/role.mjs +9 -6
  47. package/src/lib/scaffold.mjs +68 -26
  48. package/src/lib/schedule.mjs +5 -6
  49. package/src/lib/session-create.mjs +3 -3
  50. package/src/lib/session-ops.mjs +80 -51
  51. package/src/lib/sessions.mjs +41 -3
  52. package/src/lib/sevenzip.mjs +10 -1
  53. package/src/lib/status.mjs +337 -176
  54. package/src/lib/succession.mjs +16 -16
  55. package/src/lib/system.mjs +364 -0
  56. package/src/lib/zstd-log.mjs +1 -1
  57. package/src/selftest.mjs +6 -6
  58. package/src/templates/Changelog.skeleton.md +3 -3
  59. package/src/templates/Charter.skeleton.md +13 -9
  60. package/src/templates/Handover.global.skeleton.md +20 -13
  61. package/src/templates/Handover.template.md +89 -0
  62. package/src/templates/Plan.skeleton.md +34 -0
  63. package/src/templates/Prompt_Templates.md +101 -20
  64. package/src/templates/Runtime_Manual.md +263 -122
  65. package/src/templates/System.skeleton.md +31 -0
  66. package/src/templates/Systems.global.skeleton.md +13 -0
  67. package/src/templates/rules/Delegation_Rules.md +45 -0
  68. package/src/templates/rules/Handover_Rules.md +46 -23
  69. package/src/templates/rules/Migration_Rules.md +7 -7
  70. package/src/templates/rules/Misc_Task_Standard.md +17 -10
  71. package/src/templates/rules/Writing_Rules.md +33 -16
  72. package/src/templates/standards/README.md +37 -0
  73. package/src/templates/standards//345/206/231/344/275/234/350/247/204/350/214/203/README.md +120 -0
  74. package/src/templates/standards//345/206/231/344/275/234/350/247/204/350/214/203//344/276/235/346/215/256_/350/256/272/346/226/207.md +389 -0
  75. package/src/tools/ho_backup.mjs +135 -0
  76. package/src/tools/ho_changelog.mjs +4 -4
  77. package/src/tools/ho_charter.mjs +7 -6
  78. package/src/tools/ho_checkpoint.mjs +36 -32
  79. package/src/tools/ho_docmap.mjs +239 -0
  80. package/src/tools/ho_gate.mjs +11 -5
  81. package/src/tools/ho_handover.mjs +61 -35
  82. package/src/tools/ho_office.mjs +46 -5
  83. package/src/tools/ho_profile.mjs +3 -3
  84. package/src/tools/ho_sessions.mjs +46 -26
  85. package/src/tools/ho_status.mjs +251 -0
  86. package/src/tools/ho_succeed.mjs +3 -3
  87. package/src/tools/ho_workspace.mjs +146 -42
  88. package/src/tools/peer.mjs +416 -0
  89. package/src/tools/ho_brief.mjs +0 -57
  90. package/src/tools/ho_diag.mjs +0 -87
  91. package/src/tools/ho_drift.mjs +0 -41
  92. package/src/tools/ho_init.mjs +0 -82
  93. package/src/tools/ho_pack.mjs +0 -38
  94. package/src/tools/ho_phase.mjs +0 -37
  95. package/src/tools/ho_snapshot.mjs +0 -104
  96. package/src/tools/ho_tokens.mjs +0 -57
  97. package/src/tools/peer_list.mjs +0 -37
  98. package/src/tools/peer_new.mjs +0 -75
  99. package/src/tools/peer_peek.mjs +0 -41
  100. package/src/tools/peer_rename.mjs +0 -31
  101. package/src/tools/peer_send.mjs +0 -52
  102. package/src/tools/peer_status.mjs +0 -46
@@ -1,28 +1,28 @@
1
- > **用法**:这是跨会话消息的**唯一来源**,复制后填空即发。**规则**说「何时发」(见 `rules/Handover_Rules.md`、`Migration_Rules.md`),本文件只管「发什么」。行内 `|` 之后是写给人看的提示,**发送前连同竖线一起删掉**。(本行也删)
1
+ > **用法**:本文件是跨会话消息的**唯一来源**,复制后填空即可发送。**规则**说明「何时发送」(见 `rules/Handover_Rules.md`、`Migration_Rules.md`),本文件只规定「发送什么」。行内 `|` 之后为阅读提示,**发送前连同竖线一并删除**。(本行亦删除)
2
2
 
3
- # 会话消息模板
3
+ # 跨会话消息模板
4
4
 
5
5
  ## 1 共用骨架(所有消息都由它起头)
6
6
 
7
7
  ```text
8
- 你是<角色>,由全局管理对话创建并交接。
8
+ 你是<角色>,由全局管理会话创建并交接。
9
9
  第一条要读的:<绝对路径>(读毕再开始作业)。| 项目→ _Project_Meta/<项目名>/Handover.md;全局→ records/Global_Handover.md;杂项首任→ rules/Misc_Task_Standard.md
10
10
  不得每轮回执,也不发送「收到」「已完成」一类确认;全局只看文件末态。
11
- 你的 session id:<本会话 id>。确需向全局发消息时,以 `peer_send` 发至 <全局 id>。| 不得据 peer_list 推测 id
12
- 水位:≥32% 应先写毕交接、再通知全局,并提醒用户换会话;>35% 不得新开任务。
13
- 边界:只读写 <范围>。删除或覆盖前须先留快照,**删除须经用户确认**。对用户可见一律中文(含工具 description 字段)。
11
+ 你的 session id:<本会话 id>。确需向全局发消息时,以 `peer`(action="send")发至 <全局 id>。| 不得据 `peer`(action="list")推测 id
12
+ 水位:≥35% 应先写毕交接、再通知全局,并提醒当前用户换会话;≥50% 不再新开任务。
13
+ 边界:只读写 <范围>。删除或覆盖前须先留快照,**删除须经当前用户确认**。对用户可见一律中文(含工具 description 字段)。
14
14
  时间一律**带时区偏移**书写(如 2026-10-21 07:58 +0800),不写「今天、几点」这种会漂移的说法;本机时区 Asia/Shanghai(+08:00),历史记录里的 +00:00 与新记录按**绝对时刻**比较。
15
- 简单任务直接执行、直接答复;工具正常返回即予采信,不重复核验。子智能体按成本使用:单个子智能体自身亦需十余步,五个约等于另开一整个会话。仅当单块 ≥15 步且可机械验收、或确需隔离时方可派发,并发 ≤3;一文件一派、将机械批处理拆成 N 份均属反模式;可脚本批量并抽样验收者应先写脚本。判断不清者默认自行完成(Charter §十一)。
15
+ 简单任务直接执行、直接答复;工具正常返回即予采信,不重复核验。子智能体按成本使用:单个自身亦需十余步、结论还要回读;只在单块 ≥15 步或需读 ≥10 个文件、确需隔离、且结果能机械验收时才派,并发 ≤3;能写成脚本再抽检的先写脚本;同一批文件的下一道工序交回原作者续用(`send_message`),不另开。细则见 Charter §十一。
16
16
  ```
17
17
 
18
- > 7 行是**上限**,不是起点:宜少不宜多,只保留「不写就会做错」的条目。
18
+ > 现行骨架为 8 行,属**上限**而非起点:宜少不宜多,只保留「不写即会做错」的条目。
19
19
 
20
20
  ## 2 消息一 · 新会话启动
21
21
 
22
22
  ### 2.1 全局(接任或首任)
23
23
 
24
24
  ```text
25
- <骨架 6 行>
25
+ <骨架(见 §1)>
26
26
  你是第 <N> 任全局,标题「全局<N>」,链内代数第 <M> 代。
27
27
  作业顺序:读交接 → 核对 §6 的路径与命令是否仍然有效 → 不一致时先对齐再行动。
28
28
  阅读范围(按需取用,不要求预先通读):先读交接;全局流程与自己这个角色的硬边界见 Workspace_Charter.md(§7.2 会话与交接、§8 边界与铁律);**写文档时才读** user/Writing_Rules.md 与 templates/ 下对应文件。
@@ -32,23 +32,23 @@
32
32
  ### 2.2 项目(首任或接任)
33
33
 
34
34
  ```text
35
- <骨架 6 行>
36
- 你是「<项目名>」项目的执行对话,标题「<项目名><N>」。
35
+ <骨架(见 §1)>
36
+ 你是「<项目名>」项目的执行会话,标题「<项目名><N>」。
37
37
  库根:Projects/<项目名>/<项目名>库/ ;元数据:_Project_Meta/<项目名>/ ;快照:_Temp/<项目名>/Snapshots/ ;版本冻结:_Archives/<项目名>/Backups/
38
38
  开始作业前应先读:_Project_Meta/<项目名>/Handover.md → 库根 SKILL.md →(修改文档时)_Control_Center/rules/ 下对应规范。
39
39
  两件必查:库内 RULES.md 里必须有「运行期省 token」与「上下文水位自查」两条;缺者应照 Workspace_Charter.md 原文补上(唯一来源,不得自行改动数字)。
40
- 换任自办,规则见插件注入的提示段;**不得自行调用 peer_new**,也不向全局请求换任。
40
+ 换任自办,规则见插件注入的提示段;**不得自行调用 `peer`(action="new")**,也不向全局请求换任。
41
41
  ```
42
42
 
43
43
  ### 2.3 杂项(只在首任时由全局发,此后自理)
44
44
 
45
45
  ```text
46
- <骨架 6 行>
46
+ <骨架(见 §1)>
47
47
  你是杂项任务会话,标题「<任务短名>」,不编号。
48
48
  任务目录:_Misc/tasks/<任务短名>/(产物、脚本、日志都放这里)
49
49
  三件文件:Project_Overview.md(是什么/边界/验收判据)· Changelog.md(环境事实/变更/回滚,只追加)· Handover.md(在途)
50
50
  换任自办(规则见插件注入的提示段):接任者名字与会话 id 由插件写进登记表并在旧交接末尾追加登记,不通知全局。
51
- 本任务:<任务正文>| 用户原话照抄,不改写、不缩范围、不替用户补验收判据
51
+ 本任务:<任务正文>| 当前用户原话照抄,不改写、不缩范围、不替当前用户补验收判据
52
52
  ```
53
53
 
54
54
  ## 3 消息二 · 换任(已停用)
@@ -57,7 +57,7 @@
57
57
 
58
58
  ## 4 消息三 · 全局代建(仅备选)
59
59
 
60
- > 仅在自动换任失败、且用户要求时使用:全局用 `ho_sessions(action="new")` 建接任会话,标题按 `<项目名><N>`(N=本机下一个序号),启动提示必须带新会话自己的 session id、现任全局 session id 与旧会话 `Handover.md` 的绝对路径。建完请用户在旧会话里确认停止。
60
+ > 仅在自动换任失败且用户要求时使用:全局用 `ho_sessions(action="new")` 建立接任会话,标题按 `<项目名><N>`(N=本机下一个序号)。启动提示必须带新会话自身的 session id、在任全局 session id 与旧会话 `Handover.md` 的绝对路径。建立后请用户在旧会话中确认停止。
61
61
 
62
62
  ## 5 消息四 · 全局 → 项目:新任务派发
63
63
 
@@ -68,21 +68,102 @@
68
68
  约束:<本次不许碰的东西;无则删本行>
69
69
  ```
70
70
 
71
- > 派活前先查在任(`ho_office` 空参数,零成本);复用准则固定写在插件注入的提示段,本节不重复。
71
+ > 派发任务前先查在任(`ho_office` 空参数,零成本);复用准则固定写入插件注入的提示段,本节不重复。
72
72
 
73
73
  ## 6 消息五 · 迁移通知(打包前刷交接)
74
74
 
75
75
  ```text
76
- 【平台迁移通知】用户要把整个工作区搬到另一个平台,打包前需要你刷一次交接。
76
+ 【平台迁移通知】当前用户要把全部工作区搬到另一个平台,打包前需要你刷一次交接。
77
77
  只做三件事,1 分钟内完成;**不要开新任务、不要跑全量自检、不要改库内文件**:
78
78
  1) 把 _Project_Meta/<项目名>/Handover.md 的「在途、下一步、关键路径」刷成最新;
79
79
  2) 绝对路径改成 <工作区根>/... 的相对写法(新平台的根不同);
80
80
  3) 回一行:迁移交接完成|<项目名>|在途:<有/无>|<一句话>
81
- 搬库不带对话记录,Handover.md 是唯一的连续性来源。
81
+ 搬库不带会话记录,Handover.md 是唯一的连续性来源。
82
82
  ```
83
83
 
84
84
  ## 7 发送纪律
85
85
 
86
- > 汇报时机见插件注入的提示段;格式与频率纪律(不寒暄、一次一件事、并发 ≤3、未被要求勿唤醒、不转述)见 `rules/Workspace_Charter.md` §7.2.4 第 9 条,本节不重复。
86
+ > 汇报时机见插件注入的提示段。格式与频率纪律(不寒暄、一次一件事、并发 ≤3、未被要求勿唤醒、不转述)见 `rules/Workspace_Charter.md` §7.2.4 第 9 条,本节不重复。
87
87
  >
88
- > 本节只留一条**模板自身**的要求:发送前删掉所有 `|` 之后的提示与 `<>` 占位,只留实值。
88
+ > 本节只保留一条**模板自身**的要求:发送前删除所有 `|` 之后的提示与 `<>` 占位,只留实值。
89
+
90
+ ## 8 消息六 · 暂任交出与归还
91
+
92
+ > 何时暂任、如何交出与归还见 `rules/Delegation_Rules.md`;本节只规定发送内容。暂任提示词写入任务根 `Delegation_Prompt.md`,旧文件移入 `_archive/` 且不再读取;插件不检查该文件是否存在,也不检查是否归档。
93
+
94
+ ### 8.1 交出(可直接复制)
95
+
96
+ ```text
97
+ <骨架(见 §1)>
98
+ 你是「<任务名>」的暂任执行会话,由 <交出方名称(session id)> 暂时交出执行权。
99
+ 任务库:<任务库绝对路径>;交接:<交接绝对路径>;体系注册:<System.md 绝对路径>;计划:<PLAN.md 绝对路径,无则写「无」>
100
+ 暂任提示词:<Delegation_Prompt.md 绝对路径>(读毕再开始作业;与交接冲突时以交接为准)
101
+ 写入范围:仅 <任务库路径>,不得写 _Control_Center、其他项目与其他任务。
102
+ 可用工具:<ho_handover、ho_status、ho_checkpoint、ho_backup、peer 等>
103
+ 本次工序:<范围与步骤>
104
+ 验收判据:<跑什么、看到什么即算完成>
105
+ 归还:完成或终止后刷新本任务交接,并按 §8.2 回复当前用户,给出可复制文本。
106
+ ```
107
+
108
+ 交出完成后,对当前用户的回复中给出可复制文本(代码块内单独一行):
109
+
110
+ ```text
111
+ 请阅读 <Delegation_Prompt.md 绝对路径> 和 <交接绝对路径>
112
+ ```
113
+
114
+ ### 8.2 归还(可直接复制)
115
+
116
+ ```text
117
+ 【暂任归还】<任务名>|<类别>
118
+ 交接:<交接绝对路径>(已刷新)
119
+ 本次范围:<一句话>
120
+ 结果:<已完成、部分完成、未开始>
121
+ 遗留项:<逐条列出;无则写「无」>
122
+ 建议下一步:<逐条列出;无则写「无」>
123
+ 身份字段:本次暂任者为 <暂任会话名称>(<session id>)
124
+ ```
125
+
126
+ 归还完成后,对当前用户的回复中给出可复制文本(代码块内单独一行):
127
+
128
+ ```text
129
+ 请阅读 <交接绝对路径> 了解当前状态,由暂任归还给在任
130
+ ```
131
+
132
+ ### 8.3 纪律
133
+
134
+ - 交出前刷新交接并用 `ho_gate` 体检;交接不合格不开始暂任。
135
+ - 交出方保持沉默,不每轮询问进度;协同用 `peer`(`action="send"`)。
136
+ - 归还时交接的身份字段填暂任者;旧暂任提示词移入 `_archive/`,此后不读。
137
+
138
+ ## 9 两会话协作与多会话统筹
139
+
140
+ > 协作指 2 个会话并行推进同一任务的不同部分,与暂任(让出执行权)的分工见 `rules/Delegation_Rules.md` §5。本节提供 2 类可复制骨架。
141
+
142
+ ### 9.1 两会话直接协作(可直接复制)
143
+
144
+ ```text
145
+ 【协作】<任务名>|<我方会话> 与 <对方会话(session id)>
146
+ 各自范围:<我方负责 …>;<对方负责 …>
147
+ 接口:<交付物、文件名、路径、格式>
148
+ 时序:<谁先做、谁等待、何时对齐>
149
+ 通信:用 peer(action="send")直接联系 <对方 session id>;默认沉默,不每轮回执。
150
+ 冲突处理:同一文件不同时修改;先改者通知后改者;接口变更须双方确认后执行。
151
+ 验收:<合并后的判定方式>
152
+ ```
153
+
154
+ ### 9.2 多会话由全局统筹(可直接复制)
155
+
156
+ ```text
157
+ 【统筹】<任务名>|全局 <全局会话名(session id)>
158
+ 成员:<会话名(session id)> 负责 <范围>;<会话名(session id)> 负责 <范围>
159
+ 阶段:<阶段一;阶段二;收尾>
160
+ 约束:同一文件同一时间只由一个会话修改;建会话前先用 ho_office(空参数)查在任,低水位在任直接复用;并发不超过 3。
161
+ 进度:各会话只报当前阶段完成与阻塞,不每轮回执;阻塞用 peer(action="send")报全局。
162
+ 收尾:全局核对交接与验收结论,再统一归档。
163
+ ```
164
+
165
+ ### 9.3 纪律
166
+
167
+ - 未被要求不唤醒其他会话;`peer`(`action="send"`)是唯一消耗对方 token 的动作。
168
+ - 跨会话口径只认文件末态:以交接与体系注册为准,不以消息内容为准。
169
+ - 多会话共用同一任务库时,先把范围写进各自交接,避免同时修改同一文件。