@mingmaple/dsh-handover 0.9.22 → 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 (81) hide show
  1. package/README.md +117 -113
  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 +1 -1
  6. package/docs/releases/1.0.0.md +33 -0
  7. package/docs/troubleshoot.md +221 -61
  8. package/package.json +5 -2
  9. package/scripts/behavior.mjs +398 -0
  10. package/scripts/blank-dsh.mjs +12 -2
  11. package/scripts/blank-smoke.mjs +95 -44
  12. package/scripts/check-docs.mjs +7 -0
  13. package/scripts/portability.mjs +71 -0
  14. package/scripts/style-gate.mjs +571 -0
  15. package/src/client.js +1028 -994
  16. package/src/index.mjs +273 -109
  17. package/src/lib/absrefs.mjs +1 -1
  18. package/src/lib/api.mjs +9 -3
  19. package/src/lib/archive.mjs +1 -1
  20. package/src/lib/brief.mjs +8 -6
  21. package/src/lib/config.mjs +21 -6
  22. package/src/lib/docmap.mjs +5 -8
  23. package/src/lib/drift.mjs +1 -1
  24. package/src/lib/events.mjs +1 -1
  25. package/src/lib/facts.mjs +19 -12
  26. package/src/lib/gates.mjs +12 -12
  27. package/src/lib/global-task.mjs +69 -0
  28. package/src/lib/guide.mjs +80 -75
  29. package/src/lib/handover-io.mjs +69 -6
  30. package/src/lib/identity.mjs +330 -0
  31. package/src/lib/legacy.mjs +89 -0
  32. package/src/lib/lint.mjs +14 -11
  33. package/src/lib/manual.mjs +117 -80
  34. package/src/lib/mover.mjs +18 -14
  35. package/src/lib/office.mjs +42 -2
  36. package/src/lib/pack-ops.mjs +10 -10
  37. package/src/lib/pathkey.mjs +24 -0
  38. package/src/lib/phase.mjs +8 -13
  39. package/src/lib/profile.mjs +1 -1
  40. package/src/lib/reminder.mjs +110 -0
  41. package/src/lib/role.mjs +1 -1
  42. package/src/lib/scaffold.mjs +30 -10
  43. package/src/lib/schedule.mjs +5 -5
  44. package/src/lib/session-create.mjs +2 -2
  45. package/src/lib/session-ops.mjs +76 -47
  46. package/src/lib/sessions.mjs +40 -2
  47. package/src/lib/sevenzip.mjs +10 -1
  48. package/src/lib/status.mjs +337 -336
  49. package/src/lib/succession.mjs +14 -14
  50. package/src/lib/system.mjs +364 -0
  51. package/src/templates/Changelog.skeleton.md +3 -3
  52. package/src/templates/Charter.skeleton.md +13 -9
  53. package/src/templates/Handover.global.skeleton.md +20 -13
  54. package/src/templates/Handover.template.md +89 -0
  55. package/src/templates/Plan.skeleton.md +34 -0
  56. package/src/templates/Prompt_Templates.md +91 -10
  57. package/src/templates/Runtime_Manual.md +254 -139
  58. package/src/templates/System.skeleton.md +31 -0
  59. package/src/templates/Systems.global.skeleton.md +13 -0
  60. package/src/templates/rules/Delegation_Rules.md +45 -0
  61. package/src/templates/rules/Handover_Rules.md +46 -24
  62. package/src/templates/rules/Migration_Rules.md +7 -7
  63. package/src/templates/rules/Misc_Task_Standard.md +17 -10
  64. package/src/templates/rules/Writing_Rules.md +33 -16
  65. package/src/templates/standards/README.md +19 -7
  66. package/src/templates/standards//345/206/231/344/275/234/350/247/204/350/214/203/README.md +120 -0
  67. 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
  68. package/src/tools/ho_backup.mjs +8 -8
  69. package/src/tools/ho_changelog.mjs +4 -4
  70. package/src/tools/ho_charter.mjs +7 -6
  71. package/src/tools/ho_checkpoint.mjs +34 -31
  72. package/src/tools/ho_docmap.mjs +135 -49
  73. package/src/tools/ho_gate.mjs +9 -4
  74. package/src/tools/ho_handover.mjs +61 -35
  75. package/src/tools/ho_office.mjs +45 -4
  76. package/src/tools/ho_profile.mjs +3 -3
  77. package/src/tools/ho_sessions.mjs +43 -22
  78. package/src/tools/ho_status.mjs +14 -9
  79. package/src/tools/ho_succeed.mjs +3 -3
  80. package/src/tools/ho_workspace.mjs +83 -51
  81. package/src/tools/peer.mjs +219 -8
@@ -1,195 +1,310 @@
1
- # dsh-handover 运行期完整手册
1
+ # dsh-handover 运行期手册
2
2
 
3
- > 这是**按需取回**的全文:系统提示里只留短段与指针,需要细节时用 `ho_charter(doc="runtime")` 取本文。
3
+ > 本文是按需取回的手册:系统提示只保留常驻段与指针。需要细节时,用 `ho_charter(doc="runtime")` 取回全文,或用 `section` 参数按节取回。
4
4
  >
5
- > **内置即默认**:本文、Charter 骨架、交接、台账骨架、提示词模板、四份规则文档都随插件发布(`dist/templates/`)。工作区里的同名文件只是「本地化覆盖」;删掉就自动回到内置,功能不降级。`ho_workspace(action="init")` 是把默认口径写入磁盘,便于修改,**不是使用前提**。
6
- > 口径冲突时以工作区的 `_Control_Center/rules/` 为准;本文只讲「插件怎么用、角色怎么分」。
5
+ > 内置即默认:本文、Charter 骨架、体系注册模板、行动计划模板、交接与台账骨架、提示词模板与规则文档均随插件发布(`dist/templates/`)。工作区同名文件为本地化覆盖,删除后自动回到内置版本,功能不降级。`ho_workspace(action="init")` 将默认口径写入磁盘以便修改,并非使用前提。
6
+ >
7
+ > 分工:两级任务流程、纯窗口线、水位判据、压缩与换任顺序只在会话提示段维护,本文不复述。本文只写插件用法、角色、工具、路径与各类文件的格式。口径冲突时以工作区的 `_Control_Center/rules/` 与 `_Control_Center/standards/` 为准。
8
+
9
+ ## 1. 使用方式
7
10
 
8
- ## 1. 角色四档
11
+ - 按节取回:`ho_charter(doc="runtime", section="体系注册")`。不传 `section` 时只返回节标题清单,便于先看目录、再取正文。
12
+ - 规则文件取回:`ho_charter(doc="handover_rules" | "migration_rules" | "misc_standard" | "delegation_rules" | "writing_rules")`;`doc="charter"` 取工作区 Charter。
13
+ - 内置兜底:工作区没有对应规则文件时,工具返回插件内置版本并注明来源。空白机器上同样可用。
14
+ - 未接入工作区时(读不到 `_Control_Center`),插件本体仍可用;闸门、交接体检与会话水位 3 项无数据。
15
+ - 插件服务端为纯 Node 实现,Windows、macOS 与 Linux 使用同一套代码。路径比较按平台折叠大小写;归档优先使用 7-Zip,未安装时使用内置 tar.gz。
16
+
17
+ ## 2. 角色
9
18
 
10
19
  | 角色 | 判定顺序 | 交接文件 | 可见工具 |
11
20
  |---|---|---|---|
12
- | 全局 | 角色表 → 标题含「全局」 → 全局工作区 | `_Control_Center/records/Global_Handover.md` | 14 个(全部) |
13
- | 项目 | 角色表(带项目名)→ cwd 在 `Projects/<名>/` → 首条提示含 `Projects/<名>/` | `_Project_Meta/<项目>/Handover.md` | 11 个 |
14
- | 杂项 | 角色表(带任务名)→ cwd 在 `_Misc/tasks/<任务>/` | `_Misc/tasks/<任务>/Handover.md` | 10 个 |
15
- | 普通 | 子会话,或都不中 | 无(不参与交接) | 0 个(不注入提示段) |
16
-
17
- 角色表在 `~/.dsh/storages/dsh-handover.roles.json`,是**本机状态**,不进仓库、不进迁移包。子会话默认普通;需要时由全局在角色表里指定。
18
- 设定入口:设置 → dsh-handover →「会话角色」;或对全局说「把 Demo1 设成项目角色」,它用 `ho_sessions(action="role")` 办。
19
-
20
- ## 2. 工具清单(14 个)
21
-
22
- ### 只读
23
- - `ho_status` —— 会话状态,`view` 分流:`phase`(缺省;水位、压缩次数、锁、建议动作,并列出当前授权)、`brief`(起始简报:水位、闸门、会话清点、漂移、阶段建议)、`diag`(插件自检:服务、调度器、初始化错误、角色与工具集)、`drift`(交接漂移:Δ=当前轮−交接轮,>3 需刷新)、`tokens`(token 体检,需 `sessions`)。
24
- - `ho_gate` —— 通用约束条闸门(按骨架档案的库型判定)+交接文档体检+文档定位 map 的路径检查。
25
- - `ho_sessions` —— 会话清点;也用来设定角色、建会话、出提示词、归档、解归档(`action` 分流)。
26
- - `ho_charter` —— 按节取规则正文:`doc`=`charter`(缺省)、`handover_rules`、`migration_rules`、`misc_standard`、`writing_rules`、`runtime`(本文全文);`section` 留空只列目录。**工作区没有对应规则文件时退回插件内置默认口径**(输出会注明),所以换到空白机器也不会变空壳。
27
- - `ho_office` —— 查在任:输入「全局」「全局3」「项目名」等,返回现任会话的名字与会话 id;多个名字空格分隔,留空列出全部。
28
- - `ho_docmap` —— 本会话的文档定位:`action=read|write|check`。写入范围由本会话角色决定,不接受传入项目名;写入者必须是在任会话,已交出的旧会话只读。
29
-
30
- ### 写
31
- - `ho_handover` —— 读、写、追加、归档**本会话自己的**交接(写前自动备份、写后按角色体检)。
32
- - `ho_checkpoint` —— 写交接 → 体检 → 登记压缩 → 轮末自动压缩。`resume=continue`(缺省)压缩后续跑;`resume=wait` 表示任务已收尾,压缩后不唤醒。
33
- - `ho_changelog` —— 按固定表格追加一行台账。
34
- - `ho_backup` —— `action`:`snapshot`(缺省;库快照,逐字节复制、sha256 清单、来源说明)、`check`(打包前置闸门)、`pack`(打包)、`verify`(校验包是否仍是现版)、`restore`(默认预演,覆盖前备份,从不删除目标文件)。`format=auto|7z|tar`:有 7-Zip 出 `.7z`,没有就出 `.tar.gz`(内置归档器,功能等价)。
35
- - `ho_workspace` —— `action`:`init`(首次安装:在指定目录下建整套全局文件体系,可顺带注册工作区)、`scaffold`(在已部署的全局根上补齐缺失的目录与说明文件,只新建、不覆盖)、`list`、`create`、`delete`(删除只删注册)、`move-*`(搬迁全局根目录)。
36
- - `ho_profile` —— 项目或杂项的骨架注册:由所属会话通读自己的库后写入并校验。
37
- - `ho_succeed` —— 换任:用户授权后校验交接、按记录分配编号、建立接任会话、登记在任并投递启动提示词。
38
-
39
- ### 平级会话
40
- - `peer` —— `action`:`send` 投消息(唯一消耗对方 token 的动作)、`status` 单会话详情、`list` 一览、`peek` 近期会话历史(耗本会话 token)、`rename` 只改标题、`new` 新建。`list`、`peek`、`rename` 仅全局可用;`send`、`status` 各角色可用;`new` 全局可用,杂项可建到 Misc 下。
41
-
42
- ### ho_sessions 的 action
21
+ | 全局 | 角色表 → 标题含「全局」→ 已注册的工作区 | `_Control_Center/records/Global_Handover.md` | 14 个(全部) |
22
+ | 项目 | 角色表(带项目名)→ 会话目录在 `Projects/<名>/` → 首条提示含 `Projects/<名>/` | `_Project_Meta/<项目名>/Handover.md` | 11 个 |
23
+ | 杂项 | 角色表(带任务名)→ 会话目录在 `_Misc/tasks/<任务>/` | `_Misc/tasks/<任务名>/Handover.md` | 10 个 |
24
+ | 普通 | 子会话,或以上均不命中 | 无,不参与交接 | 0 个,不注入提示段 |
25
+
26
+ - 角色表位于 `~/.dsh/storages/dsh-handover.roles.json`,属本机状态,不进仓库、不进迁移包。
27
+ - 子会话默认普通;需要时由全局在角色表中指定。
28
+ - 设定入口:设置页「会话角色」;或由全局调用 `ho_sessions(action="role")`。
29
+ - 全局选项限制:本机已有全局在任时,设置页不提供「全局」选项,`ho_sessions(action="role")` 亦拒绝将其他会话设为全局。同一会话不受此限。
30
+ - 名称注册:会话首次用 `ho_office(action="register")` 注册自身名称,此后不得自行更改。全局可沿用旧名。本机尚无全局时,才允许将当前会话设为全局。
31
+
32
+ ## 3. 工具清单
33
+
34
+ 共计 14 个入口,不新增工具;能力不足处复用已有入口的 `action` 参数。
35
+
36
+ ### 3.1 只读
37
+
38
+ - `ho_status`:会话状态,`view` 分流——`phase`(缺省;水位、压缩次数、锁、建议动作、当前授权)、`brief`(起始简报:水位、闸门、会话清点、漂移、阶段建议)、`diag`(插件自检:服务、调度器、初始化错误、角色与工具集)、`drift`(交接漂移,Δ 为当前轮减交接轮)、`tokens`(token 体检,需会话列表)。
39
+ - `ho_gate`:通用约束条同步复核、交接文档体检、体系注册路径检查,并提示待迁移项。
40
+ - `ho_sessions`:会话清点,兼作角色设定、建立会话、生成提示词、归档与解归档入口。
41
+ - `ho_charter`:按节取规则正文,见 §1。
42
+ - `ho_office`:查询在任,输入「全局」「全局3」「项目名」等,返回现任会话的名称与会话 id;空参数列出全部;`action="register"` 注册本会话名称。
43
+ - `ho_docmap`:本会话的体系注册,`action=read | write | check | plan`,见 §5。
44
+
45
+ ### 3.2 写
46
+
47
+ - `ho_handover`:读写、新建、追加、归档本会话自己的交接;整篇重写用 `new`(先归档旧交接再新建空白写入),`write` 只用于首次创建,写入后按角色体检。
48
+ - `ho_checkpoint`:写交接、体检、登记压缩、轮末自动压缩。`resume=continue`(缺省)压缩后续跑;`resume=wait` 表示任务已收尾,压缩后不唤醒。`at_risk=true` 表示关键步骤,只提醒不压缩。
49
+ - `ho_changelog`:按固定表格向台账追加一行。
50
+ - `ho_backup`:`action` 取 `snapshot`(缺省;库快照,逐字节复制、sha256 清单、来源说明)、`check`(打包前置闸门)、`pack`(打包)、`verify`(校验包是否仍为现版)、`restore`(缺省预演,覆盖前备份,从不删除目标文件)。`format=auto | 7z | tar`:本机安装 7-Zip 时生成 `.7z`,否则生成 `.tar.gz`(内置归档器,功能等价)。
51
+ - `ho_workspace`:`action` 取 `init`(首次安装,在指定目录建立全局文件体系,可同时注册工作区)、`scaffold`(在已部署的全局根上补齐缺失目录与说明文件,只新建、不覆盖)、`list`、`create`、`delete`(只删注册)、`migrate`(并入旧文档定位)、`move-probe | move | move-switch | move-cleanup`(移动全局根目录)。
52
+ - `ho_profile`:项目或杂项的骨架注册,由所属会话通读自己的库后写入并校验。
53
+ - `ho_succeed`:换任,用户授权后校验交接、按记录分配编号、建立接任会话、登记在任并投递启动提示词。
54
+
55
+ ### 3.3 平级会话
56
+
57
+ - `peer`:`action` 取 `send`(发送消息,`wait=true` 时同一轮等待回复)、`wait`(等待单个回复)、`collect`(列出多个会话,先完成者先返回)、`status`(单会话详情)、`list`(列表)、`peek`(近期会话历史)、`rename`(仅改标题)、`new`(新建)。`list`、`peek`、`rename` 仅全局可用;`send`、`wait`、`collect`、`status` 各角色可用;`new` 全局可用,杂项可建到杂项目录下。`wait` 与 `collect` 的 `timeout_ms` 由助手按任务预估设置,最低 120000。
58
+
59
+ ### 3.4 ho_sessions 的动作
60
+
43
61
  | action | 作用 | 关键参数 |
44
62
  |---|---|---|
45
63
  | `list`(缺省) | 会话清点 | `limit`、`warn`、`include_subagents` |
46
- | `role` | 设定会话角色(写角色表+当场收窄+可选投整理指令) | `session_id`、`role`、`project`、`task`、`notify` |
47
- | `new` | 建下一代会话并唤醒,自动投启动提示词(按接任者角色取**接任者自己的**交接路径) | `title`、`workspace`、`cwd`、`message`、`project`、`force` |
48
- | `order` | 远程给某个会话下指令:`order=handover` 让它写交接再换任;`order=compact` 给它排压缩(目标必须在内存、要有合格交接、未压满) | `session_id`、`order`、`resume`、`extra`、`force` |
49
- | `prompt` | 按 `templates/Prompt_Templates.md` 渲染可粘贴的启动提示词 | `kind`、`project`、`title`、`sessionId`、`globalSessionId` |
50
- | `place` | 把已存在的会话移进工作区(会话 cwd 必须正是该工作区根) | `session_id`、`workspace` |
64
+ | `role` | 设定会话角色(写角色表、即时收窄工具、可选投递归位指令) | `session_id`、`role`、`project`、`task`、`notify`、`migrate` |
65
+ | `role`+`migrate` | 身份互转方式:`auto`(缺省)先快照再移动;`direct` 不搬旧文件,按模板新建体系 | 同上 |
66
+ | `new` | 建立下一代会话并唤醒,自动投递启动提示词 | `title`、`workspace`、`cwd`、`message`、`project`、`force` |
67
+ | `order` | 远程下达指令:`order=handover` 令其写交接后换任;`order=compact` 为其安排压缩 | `session_id`、`order`、`resume`、`extra`、`force` |
68
+ | `prompt` | 按 `_Control_Center/templates/Prompt_Templates.md` 渲染可直接粘贴的启动提示词 | `kind`、`project`、`task`、`title`、`sessionId`、`globalSessionId` |
69
+ | `place` | 将已存在的会话移入工作区(会话目录须为该工作区根) | `session_id`、`workspace` |
51
70
  | `archive` | 归档会话(相当于图形界面的删除) | `session_id`、`force` |
52
71
  | `unarchive` | 解除归档 | `session_id` |
53
72
 
54
- ## 3. 水位与交接协议
73
+ ## 4. 交接路径与结构要求
55
74
 
56
- - 32% 提醒、35% 交接线、85% 硬顶;同一会话最多压缩 3 次(共 4 段使用)。数值来自 `config.mjs`,提示段与设置页由 `lib/facts.mjs` 统一渲染。
57
- - 到线流程:`ho_handover` 写交接(体检不通过就拒绝压缩)→ `ho_checkpoint` 登记(`resume=continue|wait`)→ 轮末自动压缩 → 继续时投续跑消息;收尾时不唤醒,等用户派新任务。
58
- - 第 4 段到线或压缩额度用尽:由在任会话自己换任——写交接 → 请用户在聊天框发送 `/allow-succeed` 授权 → 调 `ho_succeed`(校验交接、分配编号、建立接任会话、登记在任、投递提示词)。全局仍可用 `ho_sessions(action="new")` 手动建立会话,作为自动流程失败时的备选方式。
59
- - 关键步骤不要压:`ho_checkpoint` 传 `at_risk=true`,它只提醒不压;硬顶 85% 除外。
60
- - 压缩不可逆:历史会被摘要替换,所以「先把交接写合格」是硬前提。
61
- - 在任登记表由插件维护:`_Control_Center/records/Office.json` 记每一类会话的现任与会话 id;查现任用 `ho_office`,不起会话时用 `node scripts/office.mjs 全局 全局3`。
75
+ ### 4.1 路径
62
76
 
63
- ## 4. 交接文件的结构要求
77
+ | 角色 | 交接文件 |
78
+ |---|---|
79
+ | 全局 | `_Control_Center/records/Global_Handover.md` |
80
+ | 项目 | `_Project_Meta/<项目名>/Handover.md` |
81
+ | 杂项 | `_Misc/tasks/<任务名>/Handover.md` |
64
82
 
65
- - **全局**(`_Control_Center/records/Global_Handover.md`):必须有 §0 身份与寻址(含 7 个字段)、§1 正在做的事、§2 下一步、§3 待用户决定(早期文档沿用旧标题,亦判通过)、§4 用户要求逐条落位、§5 坑点与禁区、§6 关键路径、§7 会话 id 对照(至少一行带 session id,且不能有「待回填」);不得残留模板占位符。
66
- - **项目、杂项**:必须有「正在做的事」(空节不算,只判有无实质内容,不设字数下限)、「下一步待办」(至少一条表格行或列表项);不得残留占位符。
67
- - 体检命令即工具:`ho_gate`(全部)、`ho_handover` 写后自动体检。
68
- - **交接类文档不设体积上限**(不规定字节、行数、页数):体积由结构(只写在途与指针)、书面语与归档整篇重写控制;删减依据是「过期即删」,不是「太长就砍」。
83
+ 各类交接不得串用:项目会话读取全局交接,即把其他会话的状态当作自身状态。
69
84
 
70
- ## 5. 派发与成本纪律(判据来源 Charter §十一)
85
+ ### 4.2 结构
71
86
 
72
- 1. **先核算成本**:每个子智能体都是一个完整会话——自带系统提示与任务提示,自身亦需十余步,结论还须回主会话再审读一遍。实测一次「分模块清理注释」派 5 个,各自占用 16%–20% 上下文,合计约等于另开一整个会话。
73
- 2. **三条判据全部满足方可派发**:① 单块 ≥15 步或需读 ≥10 个文件;② 确需隔离或并行等待;③ 结果可机械验收(能以一句「通过、不通过」判定)。任缺其一即应自行完成;判断不清者亦自行完成。
74
- 3. **反模式(禁止)**:一文件、一模块、一函数一子智能体;将机械批处理拆成 N 份(注释清理、逐文件润色、重命名、格式统一、补全文档);先派发再拟定验收标准;同一任务并发超过 3。
75
- 4. **优先「脚本 + 抽检」**:可脚本批量处理、再抽 3 个样本目视检查者,一律先写脚本。子智能体仅用于无法脚本化的判断。
76
- 5. **派发前先报预算**:以「拟派 N 个子智能体,每个 ≤M 步」的形式告知用户;N>3 或合计超过一个会话的量时,须先征得用户同意。
77
- 6. **续用优先:工序延续不另行建立会话**。子智能体完成后仅转入静止状态(inactive),其对话、已读文件与既定选择均予保留,一次 `send_message` 即可继续。因此**同一批文件的下一道工序**——改尺寸、换文案、出占位版、补变体、修一处细节——必须交回**原作者**,不得另行建立子智能体。另行建立等于令新会话重读同一批文件、重新推断结构,无异于将上一轮的上下文再购置一遍。
78
- - 检索既有子智能体:以 `list_agents`(仅列直接子项)确认其状态为 inactive,并对照其上一轮交付的文件清单决定派发对象。
79
- - 续用消息宜简:说明工序、给出脚本或约束、列出文件清单即可,不必重述背景——对方保有原上下文。
80
- - 仅在三种情形下方可另行建立:原作者上下文将满;新工序与其产物无关;需要**独立复核**其结论(此时应刻意改派他人,并声明属复核)。
87
+ - 全局交接应有 8 节:§0 身份与寻址(含 7 个字段)、§1 正在做的事、§2 下一步、§3 待用户决定、§4 用户要求逐条落位、§5 风险与禁区、§6 关键路径、§7 会话 id 对照。§7 至少一行带 session id,且不得残留「待回填」。
88
+ - 项目与杂项交接应含「正在做的事」(须有实质内容)与「下一步待办」(至少一条表格行或列表项)。
89
+ - 不得残留模板占位符。
90
+ - 交接类文档不设体积上限:不规定字节、行数、页数。体积由结构(只写在途与指针)、书面语与通篇归档重写控制。删减依据为「过期即删」,不以篇幅过长作为删减依据。
91
+ - 体检命令即工具:`ho_gate`(全部)、`ho_handover` 写后自动体检。结论取「通过」「缺节」「不合格」;「缺节」允许压缩,「不合格」须补完再压缩。
81
92
 
82
- ## 6. 给项目会话发提示词的硬要求
93
+ ### 4.3 固定流程
83
94
 
84
- - 必须以 `_Control_Center/templates/Prompt_Templates.md` §1 共用骨架起头,保留「默认沉默·三种时机」那一行。
85
- - **不要索要回执、不要写「每轮报告」**;写完即为完成,证据看文件末态。
86
- - 换任提示词必须带:新会话自己的 session id、现任全局 session id、它自己的交接绝对路径。
95
+ 交接一律重写,不在旧文件上续写。4 步按顺序执行:
87
96
 
88
- ## 7. 闸门口径
97
+ 1. 读上一份交接:`ho_handover(action="read")`。
98
+ 2. 归档上一份交接:`ho_handover(action="archive")`。
99
+ 3. 读模板:`_Control_Center/templates/Handover.md`。
100
+ 4. 新建空白文件并写入:`ho_handover(action="new", text=…)`。
89
101
 
90
- - 通用约束条只在骨架档案标为 `library` 形态的项目库里强制:逐行落进该库 `RULES.md`,并有「上下文水位自查」;构建型、动画型等项目可设 `gate.libraryBlock=false`,不再套用。
91
- - 骨架档案由各项目会话自己通读本库后注册(`ho_profile(action=register)`);未注册时按默认骨架运行,`ho_gate` 标「待注册」,不判红。
92
- - 有缺只**派发**给该项目会话,全局**不代写**项目库内文件。
102
+ 已有交接不得用 `action="write"` 改写,该动作只用于首次创建;`action="append"` 只用于会话中途补一行推进状态。模板写明总则、逐节写法与自检,见 `_Control_Center/templates/Handover.md`。
93
103
 
94
- ## 8. 迁移与恢复
104
+ ## 5. 体系注册
95
105
 
96
- 1. `ho_backup({action:"check", items:[...]})` 先过前置闸门(会话静止、交接到位)。
97
- 2. `ho_backup({action:"pack", kind:"project"|"task"|"global", name:"…"})` 出包,含 manifest、CHECKSUMS、MIGRATION.md 与绝对路径体检。
98
- 3. 换机:解压包 → 装插件 → `ho_backup({action:"verify", pack:"<包>"})` 看是否仍是现版。
99
- 4. `ho_backup({action:"restore", pack:"<包>", dry_run:true})` 预演,确认后 `apply=true`。
100
- 5. **会话本身不迁移**:跨机连续性只靠交接文档。
106
+ ### 5.1 路径
101
107
 
102
- ## 9. 设置页与搬迁
108
+ | 类别 | 注册文件 |
109
+ |---|---|
110
+ | 全局总注册 | `_Control_Center/records/systems.md`,只列各任务体系文件的路径 |
111
+ | 全局任务 | `_Control_Center/tasks/<任务名>/System.md` |
112
+ | 项目 | `_Project_Meta/<项目名>/System.md` |
113
+ | 杂项 | `_Misc/tasks/<任务名>/System.md` |
103
114
 
104
- - 设置页数据走**宿主认证的 `/api` 载体**(`/api/dsh-handover`),旧 HTTP 路由只作回退;页面里裸 fetch 在本机 GUI 上会被 403 挡掉。
105
- - 换盘四步:`ho_workspace(action="move-probe", to=…)` → `action="move"`(复制并逐文件 sha256 校验)→ `action="move-switch"`(派后台助手,退出 DSH 后自动完成改名与建链接;也可双击生成的 `dsh-handover.move.cmd`)→ `action="move-cleanup", confirm=true`。
106
- - 切换后原路径成为指向新位置的链接(Windows 为 junction,Linux、macOS 为符号链接),注册表、profile 与会话工作目录均无需修改;回退方式为删除链接、并将 `.old-*` 改回原名。
107
- - 切换必须在 DSH 退出后执行:源目录在 DSH 运行期间被占用,目录改名与建立链接均会失败。
115
+ 每个任务一份体系注册,随任务库独立;全局总注册只列路径,不承载各任务正文。
108
116
 
109
- ## 10. 硬规定
117
+ ### 5.2 任务级格式
110
118
 
111
- - 对用户可见的一切一律中文(工具 description、选项、清单、表格状态词都算)。
112
- - 时间一律带偏移书写:`2026-10-23 21:40 +0800`。
113
- - 不虚构、不越权、不擅自删除;项目库内文件只由该项目会话自己改。
119
+ 一级标题写 `# 体系注册(项目「<名>」)`;下设 3 个二级节,标题依次为 `## 目录结构`、`## 规范文件`、`## 计划`。各节内容如下:
120
+
121
+ ```text
122
+ | 路径 | 用途 |
123
+ |---|---|
124
+ | `Projects/<名>/` | 库根 |
125
+
126
+ | 路径 | 用途 | 何时读 |
127
+ |---|---|---|
128
+ | `_Project_Meta/<名>/Handover.md` | 交接 | 开轮前 |
129
+
130
+ - `PLAN.md`:当前行动计划;没有则不写本行。
131
+ ```
132
+
133
+ 骨架全文见 `_Control_Center/templates/System.skeleton.md`。杂项与全局任务同构,只替换标题中的类别、目录结构与规范文件路径;交接行按 §4.1 填写。
134
+
135
+ ### 5.3 全局总注册格式
136
+
137
+ 一级标题写 `# 体系注册(全局)`,下设一张 3 列表格:任务、类别、体系文件。示例:
138
+
139
+ ```text
140
+ | 任务 | 类别 | 体系文件 |
141
+ |---|---|---|
142
+ | Mingent | 项目 | `_Project_Meta/Mingent/System.md` |
143
+ ```
144
+
145
+ ### 5.4 写入与生效
146
+
147
+ - `read`:读本会话所属注册;全局读 `systems.md`。
148
+ - `write`:全文替换本注册,逐条校验路径存在;全局写总注册(条目为任务体系文件的路径)。写前留 `.bak`,写后重装本会话提示段。
149
+ - `check`:校验本会话注册(全局校验全部任务注册),返回失效路径与缺失注册。
150
+ - `plan`:`mode=read | write | archive`。`write` 写任务根 `PLAN.md`,旧计划先移到 `_archive/PLAN_<YYYYMMDD_HHMMSS>.md` 再写;`archive` 只归档;`read` 返回正文。计划写入后,确保注册文件「计划」行指向它。
151
+ - 权限:只有本类别在任会话可写;全局不代写项目与杂项的注册;全局总注册仅全局可写。
152
+ - 热更新:提示段装配时以注册文件的 `mtime+size` 为签名,签名变化即重装该会话提示段;写入后立即重装。
153
+ - 注入:全局注入 `systems.md` 内容;项目与杂项注入本注册全文。
154
+
155
+ ## 6. 行动计划
156
+
157
+ - 位置:任务根 `PLAN.md`。项目为 `Projects/<名>/<名库>/PLAN.md`,杂项为 `_Misc/tasks/<任务>/PLAN.md`,全局任务为 `_Control_Center/tasks/<任务>/PLAN.md`。
158
+ - 判据:层级二一律编写计划。纯窗口是否超过 40% 决定计划内是否拆分派子智能体。超过则在计划中安排拆分,未超过则按本会话完成编写。子智能体细则见 §12.4。
159
+ - 模板:`src/templates/Plan.skeleton.md`,含目标、步骤、验收、风险、状态 5 节。
160
+ - 建新计划前把旧计划归档到任务根 `_archive/`,归档后不读旧计划。
161
+ - 收尾或换任时计划随任务归档;续跑提示写明「先读交接、再读计划、后执行」。
162
+ - 工具:`ho_docmap(action="plan", mode=…)`;也可用 `ho_sessions(action="prompt")` 生成带计划的启动提示词。
163
+
164
+ ## 7. 暂任与协作
165
+
166
+ ### 7.1 暂任提示词文件
167
+
168
+ - 位置:任务库根的 `Delegation_Prompt.md`(项目为 `Projects/<名>/<名库>/`,杂项为 `_Misc/tasks/<任务>/`,全局任务为 `_Control_Center/tasks/<任务>/`)。
169
+ - 旧提示词移入任务根 `_archive/`,此后不再读旧文件。
170
+ - 插件不检查该文件是否存在,也不检查是否已归档;文件由会话自己维护。
171
+
172
+ ### 7.2 交出与归还
173
+
174
+ - 交出前先刷新交接。交出方仍为该任务的在任者,暂任不改变交接归属。
175
+ - 交出方把暂任提示词写入 `Delegation_Prompt.md`,并在回复中给出可直接复制的文本,由用户转交暂任方。
176
+ - 归还时再次刷新交接,交接的身份字段填暂任者,回复中同样给出可复制文本。
177
+ - 暂任方只写本任务库,不得写 `_Control_Center`、其他项目与其他任务。
178
+
179
+ ### 7.3 协作
180
+
181
+ - 两会话可直接用 `peer`(`action="send"`)协作,不必经全局转述。
182
+ - 多会话协作:协调者先用 `peer(action="collab", sessions=[…])` 注册协作,再逐个派发任务,用 `collect` 列出待等待的会话。先完成者先返回,同时完成则一并返回。协作期间,被交办方不得向交办者或同组成员发送明文消息,工具端会拒绝。DeepSeek Harness(DSH)自带的 `send_message` 亦由插件守卫拦截。普通对话无需注册。`collect` 取回全部结果后,限制自动解除。
183
+ - 多会话由全局统筹:全局按任务分派、查询在任、协调时序;各会话默认沉默,不每轮回执。
184
+ - 协作提示词模板见 `_Control_Center/templates/Prompt_Templates.md` §8 与 §9。
185
+
186
+ ## 8. 身份、名称与首轮
187
+
188
+ - 冻结名:会话自行注册一次,此后不得自行更改。全局可沿用旧名。本机无全局时,才允许将当前会话设为全局。
189
+ - 名称注册:`ho_office(action="register")`,已有同类在任他人时拒绝;同名重复注册直接拒绝。
190
+ - 首轮指令:普通会话被设为项目或杂项后,插件投递一次性消息。该指令要求先了解既有产出与任务,读取体系模板并初拟体系。随后二选一:全权建立并注册,或与用户讨论定稿后建立并注册。名称须经用户认可,注册后不得自行更改。
191
+ - 身份互转:`ho_sessions(action="role", migrate=auto | direct)`。`auto` 先快照再移动;`direct` 不搬旧文件,按模板新建体系。
192
+ - 快照:源库全库打包(无 7-Zip 时用 tar.gz),存放于 `_Archives/_Global/Backups/身份迁移_<YYYYMMDD_HHMMSS>/`。
193
+ - 项目转杂项:`Projects/<名>/`(含子库)移入 `_Misc/tasks/<名>/`;交接、骨架档案、注册随之改位置。
194
+ - 杂项转项目:`_Misc/tasks/<名>/` 移入 `Projects/<名>/<名库>/`;注册与交接改位置,`Registry.md` 增行。
195
+ - `Office.json` 的类别键改为新类别,旧条目保留在历史中;写前备份 `Office.json`。
196
+ - 互转首轮指令为二选一:迁移,或直接建立。
197
+
198
+ ## 9. 迁移与恢复
199
+
200
+ 1. `ho_backup({action:"check", items:[…]})` 先过前置闸门:会话静止、交接到位。
201
+ 2. `ho_backup({action:"pack", kind:"project" | "task" | "global", name:"…"})` 生成迁移包,含 manifest、CHECKSUMS、MIGRATION.md 与绝对路径体检。
202
+ 3. 更换机器:解压包、安装插件、`ho_backup({action:"verify", pack:"<包>"})` 核验包是否仍为现版。
203
+ 4. `ho_backup({action:"restore", pack:"<包>", dry_run:true})` 预演,确认后传 `apply=true`。
204
+ 5. 会话本身不迁移:跨机连续性仅由交接文档承载。
205
+ 6. 旧版文档定位迁移:`ho_workspace(action="migrate")` 检测 `_Control_Center/records/docmap/`,把 `global.md`、`project-<名>.md`、`misc-<任务>.md` 的条目并入对应体系注册;旧目录全部移入 `_Archives/_Global/Backups/1.0-docmap_<YYYYMMDD_HHMMSS>/`,不删除。`ho_gate` 与 `ho_status` 在检测到旧目录时提示「待迁移」。
206
+
207
+ ## 10. 设置页与搬迁
208
+
209
+ - 阈值文案为 35% 与 50%,不出现其他提醒阈值。
210
+ - 角色卡:修改角色需再次确认;已有全局在任时,下拉不出现「全局」。
211
+ - 不设文件体系卡,不显示计划与暂任状态;迁移卡不变。
212
+ - 使用说明与工具明细按 1.0 重写,保留 14 个工具。
213
+ - 设置页数据经宿主认证的 `/api` 载体(`/api/dsh-handover`)传输,旧 HTTP 路由仅作回退。页面内直接调用 `fetch` 在本机图形界面会返回 403。
214
+ - 移动全局根目录分 4 步:`ho_workspace(action="move-probe", to=…)` → `action="move"`(复制并逐文件校验 sha256)→ `action="move-switch"`(启动后台助手,退出 DSH 后自动完成改名与建链接;也可双击生成的 `dsh-handover.move.cmd`)→ `action="move-cleanup", confirm=true`。
215
+ - 切换后,原路径成为指向新位置的链接(Windows 为 junction,Linux 与 macOS 为符号链接)。注册表、profile 与会话目录均无需修改。回退方式为删除链接,并将 `.old-*` 改回原名。
216
+ - 切换须在 DSH 退出后执行:源目录在 DSH 运行期间被占用,目录改名与建立链接均会失败。
114
217
 
115
218
  ## 11. 首次安装与工作区
116
219
 
117
- - 两个入口**等价**:设置页「首次安装」(粘贴已存在目录 → 建立全局文件体系 → 注册为工作区);或在会话里执行 `ho_workspace(action="init", parent=…, register=true)`。
118
- - 未接入工作区时,闸门、交接体检、会话水位三项无数据;插件本体仍可用。
119
- - 注册工作区亦可单独执行 `ho_workspace(action="create", path=…, title=…)`;删除只删注册,目录与日志不动。
120
- - 已部署的工作区在插件新增目录之后,用 `ho_workspace(action="scaffold")` 一次补齐:只建缺失项,已有文件不覆盖、内容一字不改。
121
- - 项目与杂项接入后先读自己的库,再写 `project.profile.json`、`task.profile.json` 并 `ho_profile(action=register)` 注册骨架。
122
- - 会话标题规范(全局、项目、杂项)见工作区 Charter §6.2;新建会话必须当场给标题。
220
+ - 2 个入口等价。其一为设置页「首次安装」,可粘贴已存在目录、建立全局文件体系并注册为工作区。其二为在会话中执行 `ho_workspace(action="init", parent=…, register=true)`。
221
+ - 未接入工作区时,闸门、交接体检、会话水位 3 项无数据;插件本体仍可用。
222
+ - 注册工作区亦可单独执行 `ho_workspace(action="create", path=…, title=…)`;删除操作仅移除注册,目录与日志不变。
223
+ - 已部署的工作区在插件新增目录之后,用 `ho_workspace(action="scaffold")` 一次补齐:仅新建缺失项,已有文件不覆盖、内容不改。
224
+ - 首次安装建立的目录为 `_Control_Center/{records,rules,standards,user,templates,tools}`、`Projects`、`_Project_Meta`、`_Misc/tasks`、`_Archives/_Global/Backups`、`_Temp`。
225
+ - 项目与杂项接入后,先读自己的库,再写 `project.profile.json` 或 `task.profile.json`,并用 `ho_profile(action="register")` 注册骨架。
226
+ - 会话标题规范见工作区 Charter;新建会话须当场给出标题。
123
227
 
124
228
  ## 12. 提示词预算与增删规则
125
229
 
126
- ### 12.1 分层(谁在每轮付费)
230
+ ### 12.1 分层(每轮成本归属)
127
231
 
128
232
  | 层 | 内容 | 何时进入上下文 | 实测参考(加权 token) |
129
233
  |---|---|---|---|
130
- | L0 常驻 | 角色段(全局五节;项目、杂项各节) | **每一轮** | 全局约 526;项目与杂项约 514;长路径与迁移提示档约 576、563(参考值,不设上限) |
131
- | L0 用户内容 | 全局前置提示词(用户开关,默认关闭) | 开启且非空时每轮 | 由用户自管,不计入本插件预算 |
132
- | L1 手册 | 本文件 | 按需取回,可**按节**取 | 不设上限(不进每轮) |
133
- | L2 规则文档 | 工作区 `_Control_Center/rules/` | 按需 | 由工作区自管 |
234
+ | L0 常驻 | 角色段(全局段与项目、杂项段) | 每一轮 | 由冒烟打印实测值,不设上限 |
235
+ | L0 用户内容 | 全局前置提示词(用户开关,默认关闭) | 开启且非空时每轮 | 由用户自管,不计入插件预算 |
236
+ | L1 手册 | 本文件 | 按需取回,可按节取回 | 不设上限,不进每轮 |
237
+ | L2 规则与规范 | 工作区 `_Control_Center/rules/`、`_Control_Center/standards/` | 按需 | 由工作区自管 |
134
238
 
135
- > 加权 token 的算法:CJK 与全角标点每字符 1 token,其余每 4 字符 1 token。实测常量在 `lib/facts.mjs` 的 `TOKEN_BUDGET`,冒烟只打印实测值,**不设上限**,也不用于拒绝或截断。
239
+ > 加权 token 算法:CJK 与全角标点每字符 1 token,其余每 4 字符 1 token。实测常量在 `lib/facts.mjs` 的 `TOKEN_BUDGET`;冒烟只打印实测值,不设上限,也不用于拒绝或截断。
136
240
  >
137
- > L0 是成本主体:它按轮次乘算,所以只放「每轮都要用到的判定」。任何「一个会话生命周期里只用几次」的流程,一律以指针落到 L1。
138
-
139
- ### 12.2 布局(改动必须落在既有骨架内)
241
+ > L0 是成本主体:按轮次乘算,只放每轮都要用到的判定。一个会话生命周期内只用几次的流程,一律以指针指向 L1。
242
+ >
243
+ > 同一内容只注入一份;流程规范全文进提示段,不设简版与详版。
140
244
 
141
- - **全局段**:五节固定——身份、权限、节奏、交接、按需取用。
142
- - **项目、杂项段**:十一行固定(含标题行)——写入范围、库根、骨架、临时与归档、交接、水位与压缩、对外通信、流程指针、通用规范指针、通用规范写入范围;有迁移时另加一行。
143
- - **普通段**:不注册任何提示段。
144
- - 新增内容先在既有节内找位置;找不到位置,说明该内容属于 L1,而不是新增一节。
245
+ ### 12.2 布局
145
246
 
146
- ### 12.3 准入四条(进 L0 的门槛)
247
+ - 全局段 6 节:身份、权限、任务流程、上下文与压缩、交接与体系、按需取用。
248
+ - 项目与杂项段:写入范围、库根或任务目录、骨架、临时与归档、交接、固定流程、流程文本、体系注册内容、通用规范与写作规范指针、暂任与协作指针、会话间通信。具体行数以实际骨架为准,改动须落在既有行内。
249
+ - 普通会话:不注册任何提示段。
250
+ - 新增内容先在既有节内找位置;找不到位置,说明该内容属于 L1,不新增一节。
251
+ - 选填内容(授权提示、迁移提示行)按需追加,不占位。
147
252
 
148
- 1. **每轮都要用到的判定**才可进 L0;有明确触发时机的一次性流程,一律写指针。
149
- 2. 同一规则**只写一处**;由所在节表达作用域,不靠重复强调。
150
- 3. 进 L0 必须指明所属节;无法归属则不进。
151
- 4. 每句都须回答:能否换成指针?不能替代的理由是什么(写入 CHANGELOG)。
253
+ ### 12.3 准入 4 条
152
254
 
153
- ### 12.4 增删流程
255
+ 1. 每轮都要用到的判定才可进 L0;有明确触发时机的一次性流程,一律写指针。
256
+ 2. 同一规则只写一处;由所在节表达作用域,不以重复强调实现。
257
+ 3. 进 L0 须指明所属节;无法归属则不进。
258
+ 4. 每句都须回答:能否换成指针;不能替代的理由写入 `CHANGELOG`。
154
259
 
155
- - **增**:判定是否每轮需要 → 若否,写进 L1 并在「按需取用」加一行指针 → 若必须进 L0,指明节次 → 跑 `blank-smoke`(体积与结构断言)→ CHANGELOG 记「加了什么、为什么不能是指针、体积变化」。
156
- - **删**:先查引用(冒烟断言、手册同项、其他角色段)→ 同步删除 L1 与 L0 的重复表述,避免「常驻删了、文档没补」→ 再跑冒烟。
157
- - **改**:一次改一件事;改完对比体积并记录参考值,不设上限(提示词效果优先)。
260
+ ### 12.4 子智能体成本与续用
158
261
 
159
- ### 12.5 检查清单(每次动提示词后照着过)
262
+ - 先核算成本:每个子智能体是一个独立会话,自带系统提示与任务提示,自身亦需十余步,结论还须回主会话审读。实测一次分模块作业派出 5 个,各自占用 16% 至 20% 上下文,合计约等于另建一个会话。
263
+ - 派发须 3 条判据全部通过:单块 ≥15 步或需读 ≥10 个文件、确需隔离、结果可机械验收。可由脚本批量处理再抽检者,先编写脚本。子智能体数量与单个步数上限写入 `PLAN.md`,随计划一并请用户确认;难以判定时由本会话自行完成。
264
+ - 续用优先:工序延续不另行建立会话。子智能体完成后转入静止状态(inactive),其对话、已读文件与既定选择均保留,一次 `send_message` 即可继续。同一批文件的下一道工序须交回原作者,不得另行建立。检索既有子智能体用 `list_agents` 确认状态,并对照其上一轮交付的文件清单决定派发对象。
265
+ - 仅在 3 种情形下另行建立:原作者上下文将满;新工序与其产物无关;需要独立复核其结论(此时刻意改派他人,并声明属复核)。
160
266
 
161
- 1. 体积:只记录实测参考值(全局与项目段各约 400 上下),不判上限。
162
- 2. 结构:全局五节、项目十一行各出现一次,顺序不变。
163
- 3. 一处一规则:会话间通信规则、压缩授权、交接线各只出现一次。
164
- 4. 禁止回灌:工作流细节(`ho_backup`、`move-probe`、具体命令步骤)不得出现在 L0。
165
- 5. 手册同步:凡 L0 指向的 section 必须在本文中存在且标题可匹配。
267
+ ### 12.5 增删流程
166
268
 
167
- > 结构护栏由测试执行(节次齐全、只出现一次),不靠自觉;体积只测量、不判失败。
269
+ - 增:判定是否每轮需要。若否,写入 L1 并在「按需取用」增加一行指针。若须进入 L0,指明节次。随后运行 `blank-smoke`(体积与结构断言),并在 `CHANGELOG` 记录新增内容、不能改为指针的理由与体积变化。
270
+ - 删:先查引用(冒烟断言、手册同项、其他角色段)。随后同步删除 L1 与 L0 的重复表述,避免常驻段已删除而文档未同步。最后运行冒烟。
271
+ - 改:一次只改一处;修改后记录体积参考值,不设上限(提示词效果优先)。
168
272
 
169
- ## 13. 文档定位与授权提示
273
+ ### 12.6 检查清单
170
274
 
171
- ### 13.1 文档定位(docmap)
275
+ 1. 体积:只记录实测参考值,不判上限。
276
+ 2. 结构:全局段 6 节、项目与杂项各项各出现一次,顺序不变。
277
+ 3. 一处一规则:会话间通信、压缩授权、交接线各只出现一次。
278
+ 4. 禁止回灌:工作流细节(`ho_backup`、`move-probe`、具体命令步骤)不得出现在 L0。
279
+ 5. 手册同步:凡 L0 指向的节须在本文中存在,且标题可匹配。
172
280
 
173
- - 每个会话(全局、每个项目、每个杂项任务)一份文件:`_Control_Center/records/docmap/global.md`、`project-<项目名>.md`、`misc-<任务名>.md`,随工作区迁移。
174
- - 三列:路径(工作区相对路径)、一句话介绍、什么时候该读。只指路,读不读由会话自己判断,不要求通读。
175
- - 写:`ho_docmap(action="write", entries=[…])` 整份替换,逐条校验路径存在,缺项整条拒绝;写入者必须是在任会话(以 `Office.json` 为准),已交出的旧会话只读;全局不代写项目与杂项的 map。
176
- - 生效:写盘后当场重装该会话提示段,下一轮即注入;空 map 不注入;不设字数上限。
177
- - 闸门:`ho_gate` 检查所有 map 的路径存在性,失效即报,由对应会话的在任者更新。
178
- - 外部承接:`_Control_Center/templates/External_Takeover_Prompt.md` 生成提示词时,把本项目 map 的表格原样嵌入「文件地图」之后并保留判定句;没有 map 则省略这一段,不得编造。
281
+ > 结构护栏由测试执行(节次齐全、只出现一次),不依赖人工自查;体积只测量,不判失败。
179
282
 
180
- ### 13.2 授权提示(压缩、换任)
283
+ ## 13. 授权提示与状态
181
284
 
182
- - 授权由用户产生,写入 `~/.dsh/storages/dsh-handover.consent.json`,5 分钟、一次性、按会话。
183
- - 授权一到,目标会话的提示段立刻多一行:「用户已授权<压缩|换任>,至 <时刻>(一次性,用后失效)」;过期或用掉后消失,不占位。
184
- - `ho_status(view="phase")` 与 `view="brief"` 的输出里有一行「授权」,写明剩余分钟与到期时刻;向用户索要授权后先查它,再等回话。
185
- - 两种授权可以并存,各占一行。
285
+ - 授权由用户产生,写入 `~/.dsh/storages/dsh-handover.consent.json`,5 分钟有效、一次性、按会话计。
286
+ - 授权生效后,目标会话的提示段即增加一行:「用户已授权压缩,至 <时刻>(一次性,用后失效)」,或「用户已授权换任,至 <时刻>(一次性,用后失效)」。该行在过期或使用后消失,不占位。
287
+ - 2 种授权可并存,各占一行。
288
+ - `ho_status(view="phase")` 与 `view="brief"` 都有一行「授权」,写明剩余分钟与到期时刻;向用户索要授权后,先查该项,再等待回复。
289
+ - 一次性后台提醒:为每个全局、项目、杂项会话各投一次 35% 与 50% 提醒。投递方式为尾注入:插件工具返回结果时,在结果文本末尾追加一条 `[System Note: …]`,模型下一步立即读到;不改系统提示词(不改写前缀缓存)、不拆回合、不另起消息、不打断工具。模型整轮不调用插件工具时没有注入点,此时助手可用 `ho_status` 读取水位。状态存 `~/.dsh/storages/dsh-handover.reminders.json`。
290
+ - 压缩后的第一次判定跳过:此时投影缓存仍为压缩前的旧水位,以免据虚高读数误投。
291
+ - 不向会话日志写入 developer/message 通知:宿主强校验这类事件必须恰好匹配已打开的轮与步,写入会使会话落入 SessionFormatError 状态。
186
292
 
187
- ## 14. 通用规范库
293
+ ## 14. 通用规范与写作规范
188
294
 
189
- - 位置 `_Control_Center/standards/`:一条规范一个子目录,目录名即规范名;正文入口为子目录内的 `README.md`;规范自带的脚本与附件放在同一子目录,不混入 `_Control_Center/tools/`。
295
+ - 位置:`_Control_Center/standards/`。一条规范一个子目录,目录名即规范名,正文入口为子目录内的 `README.md`。规范自带的脚本与附件放在同一子目录,不混入 `_Control_Center/tools/`。
190
296
  - 作用域:任何角色的会话都可读;新增与改写由全局会话执行,项目与杂项只读。
191
- - 写入范围:用户提到「把某某写成规范」时,未指明范围的写本库(本会话所在的工作区);说「写入通用规范库」「写成通用规范」「写成共用规范」的才写本目录,项目与杂项不得写本目录、报全局。
192
- - 引用:用户提到「按某某规范进行」一类要求时,先看本库有无同名规范,再看本目录;两处都有时按本库那份执行,本目录那份作为通用版本。三档角色的常驻段各有一行指针,细节在本节。
193
- - 与相邻位置的分工:`_Control_Center/rules/` 是工作区自身的运行规则,`_Control_Center/user/` 是用户内容与写作规范,本目录是可复用的做法,按名字被引用。
297
+ - 写入范围:用户提到「把某某写成规范」时,未指明范围即写本会话所在的工作区。仅当用户说「写入通用规范库」「写成通用规范」或「写成共用规范」时,才写本目录。
298
+ - 查找范围:先看本库有无同名规范,再看本目录。2 处都有时按本库那份执行,本目录那份作为通用版本。
299
+ - 写作规范固定存放于 `_Control_Center/standards/写作规范/README.md`(W-01 至 W-42),研究依据在同目录 `依据_论文.md`(只作追溯,不注入提示段)。提示段只放一行指针,不注入条款正文。
300
+ - 与相邻位置的分工:`_Control_Center/rules/` 是工作区自身的运行规则,`_Control_Center/user/` 存放用户内容与写作规则。本目录存放可复用的做法,按名称被引用。
194
301
  - 补齐:插件新增目录后,已部署的工作区执行 `ho_workspace(action="scaffold")`;该动作只建缺失项,已有文件不覆盖。
195
302
  - 正文只写做法、判据与验收条件,不记某次作业的进度;进度归交接与台账。
303
+
304
+ ## 15. 硬规定
305
+
306
+ - 对用户可见的一切一律使用中文,含工具 `description`、选项、清单、表格状态词。
307
+ - 时间一律带偏移书写:`2026-10-23 21:40 +0800`。
308
+ - 不虚构、不越权、不擅自删除;项目库内文件只由该项目会话自己修改。
309
+ - 界面动作写「点击」,不写其他同义单字。
310
+ - 不设发布动作:版本与发布由用户明确要求后另行处理。
@@ -0,0 +1,31 @@
1
+ # 体系注册(项目「<名>」)
2
+
3
+ > 本文件是任务的体系注册,随任务库独立。建立方式:按本骨架填入实际值,用 `ho_docmap(action="write", entries=…)` 或对应入口写入,逐条校验路径存在。全局总注册只列本文件路径,不承载正文。
4
+ >
5
+ > 类别与路径:项目标题写「项目「<名>」」、路径取 `_Project_Meta/<名>/System.md`;杂项标题写「杂项「<任务名>」」、路径取 `_Misc/tasks/<任务>/System.md`;全局任务标题写「全局任务「<任务名>」」、路径取 `_Control_Center/tasks/<任务>/System.md`。目录结构与规范文件按各自实际填写。
6
+ >
7
+ > 「计划」一行指向任务根 `PLAN.md`;计划归档后删除本行。路径一律写工作区相对路径,须真实存在;写入时逐条校验,任一项失效即拒绝写入。
8
+
9
+ ## 目录结构
10
+
11
+ | 路径 | 用途 |
12
+ |---|---|
13
+ | `Projects/<名>/` | 库根 |
14
+ | `Projects/<名>/<名库>/` | 代码与文档主体 |
15
+ | `_Temp/<名>/Snapshots/` | 覆盖前快照 |
16
+ | `_Archives/<名>/` | 归档 |
17
+
18
+ ## 规范文件
19
+
20
+ | 路径 | 用途 | 何时读 |
21
+ |---|---|---|
22
+ | `_Project_Meta/<名>/Handover.md` | 交接 | 开轮前 |
23
+ | `_Project_Meta/<名>/System.md` | 本注册 | 开轮前 |
24
+ | `Projects/<名>/<名库>/RULES.md` | 库内规则 | 作业前 |
25
+ | `_Control_Center/rules/Handover_Rules.md` | 交接规范 | 写交接前 |
26
+ | `_Control_Center/standards/写作规范/README.md` | 写作规范 | 写文档前 |
27
+ | `_Control_Center/templates/Prompt_Templates.md` | 会话提示词模板 | 建立会话或暂任前 |
28
+
29
+ ## 计划
30
+
31
+ - `PLAN.md`:当前行动计划;没有则不写本行。
@@ -0,0 +1,13 @@
1
+ # 体系注册(全局)
2
+
3
+ > 本文件是全局总注册,位于 `_Control_Center/records/systems.md`,只列各任务体系文件的路径,不承载各任务体系正文。由全局会话维护,项目与杂项不得写入。
4
+ >
5
+ > 新增任务时增加一行;任务改名或体系文件迁移时同步修改本行。类别取「全局任务」「项目」「杂项」三者之一。
6
+ >
7
+ > 体系文件路径:全局任务 `_Control_Center/tasks/<任务名>/System.md`;项目 `_Project_Meta/<项目名>/System.md`;杂项 `_Misc/tasks/<任务名>/System.md`。路径须真实存在;写入时逐条校验,任一项失效即拒绝写入。
8
+ >
9
+ > 写入后立即重装提示段;签名取文件 `mtime+size`,变化即重装。本文件没有任务时保留标题与表头,不写空行。
10
+
11
+ | 任务 | 类别 | 体系文件 |
12
+ |---|---|---|
13
+ | <任务名> | <项目、杂项、全局任务> | `<工作区相对路径>` |
@@ -0,0 +1,45 @@
1
+ # 暂任规范(插件自带默认口径)
2
+
3
+ > 暂任指将某任务的执行权临时交由另一会话承担,交出方仍为在任者。暂任不改变交接归属,不换任、不归档。
4
+ > 插件不检查暂任提示词文件是否存在,也不检查是否已归档;本规范只约束会话行为。
5
+
6
+ ## 1 适用与边界
7
+
8
+ - 适用:需要并行推进、跨会话接力,或暂由全局或其他会话承接一段工序。
9
+ - 不适用:正式换任用 `ho_succeed`,任务移交按归档与接任流程办理。
10
+ - 暂任方只写本任务库,不得写 `_Control_Center`、其他项目与其他任务。
11
+ - 暂任期间交接由交出方维护;归还时交接的身份字段填暂任者。
12
+
13
+ ## 2 文件位置
14
+
15
+ | 类别 | 暂任提示词 | 任务内归档 |
16
+ |---|---|---|
17
+ | 项目 | `Projects/<名>/<名库>/Delegation_Prompt.md` | `Projects/<名>/<名库>/_archive/` |
18
+ | 杂项 | `_Misc/tasks/<任务>/Delegation_Prompt.md` | `_Misc/tasks/<任务>/_archive/` |
19
+ | 全局任务 | `_Control_Center/tasks/<任务>/Delegation_Prompt.md` | `_Control_Center/tasks/<任务>/_archive/` |
20
+
21
+ ## 3 交出流程
22
+
23
+ 1. 刷新交接:写清在途步骤、下一步、风险与禁区、关键路径,并用 `ho_gate` 体检至「通过」或「缺节」。
24
+ 2. 拟提示词:写入 `Delegation_Prompt.md`;旧文件移入 `_archive/`,此后不读旧文件。
25
+ 3. 提示词应含:任务名与类别、交接绝对路径、体系注册路径、写入范围、可用工具、验收判据、归还要求。可复制骨架见 `_Control_Center/templates/Prompt_Templates.md` §8。
26
+ 4. 回复当前用户:给出可直接复制的文本,并说明暂任范围与期限。
27
+ 5. 交出方保持沉默,不每轮询问进度;需要协同用 `peer`(`action="send"`)。
28
+
29
+ ## 4 归还流程
30
+
31
+ 1. 暂任方按提示词完成或终止工序,返回结果与遗留项。
32
+ 2. 交出方刷新交接;身份字段填暂任者,写清本次暂任的范围、结果与遗留项。
33
+ 3. 回复当前用户:给出可直接复制的归还文本。
34
+ 4. 旧的暂任提示词移入 `_archive/`。
35
+
36
+ ## 5 与协作的分工
37
+
38
+ - 暂任:同一任务在同一时间只有一个执行方,交出方让出执行权。
39
+ - 协作:2 个会话并行推进同一任务的不同部分,用 `peer` 直接通信;多会话由全局统筹。模板见 `Prompt_Templates.md` §9。
40
+ - 两者都以刷新交接为前置;交接不合格时不得开始暂任或协作。
41
+
42
+ ## 6 体检与风险
43
+
44
+ - 暂任前用 `ho_gate` 体检交接;体检未通过时不得开始。
45
+ - 主要风险:暂任方越界写其他目录、提示词与交接不一致、归还时未填身份字段。防护分别为:限定写入范围、以交接为唯一事实来源、归还前逐项核对。