@dsh-enhanced/lark-channel 0.1.48 → 0.1.49

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 (173) hide show
  1. package/README.md +19 -8
  2. package/docs/rsi-setup.md +123 -11
  3. package/docs/setup.md +27 -14
  4. package/docs/supervised-growth.md +2 -0
  5. package/lib/adapter.d.ts +6 -0
  6. package/lib/adapter.d.ts.map +1 -1
  7. package/lib/adapter.js +79 -8
  8. package/lib/adapter.js.map +1 -1
  9. package/lib/business-cli-install.d.ts +9 -0
  10. package/lib/business-cli-install.d.ts.map +1 -0
  11. package/lib/business-cli-install.js +367 -0
  12. package/lib/business-cli-install.js.map +1 -0
  13. package/lib/business-environment.d.ts +2 -0
  14. package/lib/business-environment.d.ts.map +1 -0
  15. package/lib/business-environment.js +16 -0
  16. package/lib/business-environment.js.map +1 -0
  17. package/lib/business-skill.d.ts +32 -0
  18. package/lib/business-skill.d.ts.map +1 -0
  19. package/lib/business-skill.js +202 -0
  20. package/lib/business-skill.js.map +1 -0
  21. package/lib/rsi-authority-config.d.ts +29 -0
  22. package/lib/rsi-authority-config.d.ts.map +1 -0
  23. package/lib/rsi-authority-config.js +233 -0
  24. package/lib/rsi-authority-config.js.map +1 -0
  25. package/lib/rsi-authority-resources.d.ts +36 -0
  26. package/lib/rsi-authority-resources.d.ts.map +1 -0
  27. package/lib/rsi-authority-resources.js +139 -0
  28. package/lib/rsi-authority-resources.js.map +1 -0
  29. package/lib/rsi-authority-runtime.d.ts +50 -0
  30. package/lib/rsi-authority-runtime.d.ts.map +1 -0
  31. package/lib/rsi-authority-runtime.js +393 -0
  32. package/lib/rsi-authority-runtime.js.map +1 -0
  33. package/lib/rsi-bootstrap-manifest.d.ts +39 -0
  34. package/lib/rsi-bootstrap-manifest.d.ts.map +1 -0
  35. package/lib/rsi-bootstrap-manifest.js +366 -0
  36. package/lib/rsi-bootstrap-manifest.js.map +1 -0
  37. package/lib/rsi-bootstrap.d.ts +30 -0
  38. package/lib/rsi-bootstrap.d.ts.map +1 -0
  39. package/lib/rsi-bootstrap.js +363 -0
  40. package/lib/rsi-bootstrap.js.map +1 -0
  41. package/lib/rsi-build.d.ts +45 -0
  42. package/lib/rsi-build.d.ts.map +1 -0
  43. package/lib/rsi-build.js +404 -0
  44. package/lib/rsi-build.js.map +1 -0
  45. package/lib/rsi-creation-build.d.ts +47 -0
  46. package/lib/rsi-creation-build.d.ts.map +1 -0
  47. package/lib/rsi-creation-build.js +333 -0
  48. package/lib/rsi-creation-build.js.map +1 -0
  49. package/lib/rsi-host-authorities.d.ts +18 -0
  50. package/lib/rsi-host-authorities.d.ts.map +1 -0
  51. package/lib/rsi-host-authorities.js +129 -0
  52. package/lib/rsi-host-authorities.js.map +1 -0
  53. package/lib/rsi-host-update.d.ts +113 -0
  54. package/lib/rsi-host-update.d.ts.map +1 -0
  55. package/lib/rsi-host-update.js +316 -0
  56. package/lib/rsi-host-update.js.map +1 -0
  57. package/lib/rsi-install-inputs.d.ts +43 -0
  58. package/lib/rsi-install-inputs.d.ts.map +1 -0
  59. package/lib/rsi-install-inputs.js +342 -0
  60. package/lib/rsi-install-inputs.js.map +1 -0
  61. package/lib/rsi-install.d.ts +54 -0
  62. package/lib/rsi-install.d.ts.map +1 -0
  63. package/lib/rsi-install.js +404 -0
  64. package/lib/rsi-install.js.map +1 -0
  65. package/lib/rsi-local-activation.d.ts +78 -0
  66. package/lib/rsi-local-activation.d.ts.map +1 -0
  67. package/lib/rsi-local-activation.js +485 -0
  68. package/lib/rsi-local-activation.js.map +1 -0
  69. package/lib/rsi-local-cohort.d.ts +70 -0
  70. package/lib/rsi-local-cohort.d.ts.map +1 -0
  71. package/lib/rsi-local-cohort.js +781 -0
  72. package/lib/rsi-local-cohort.js.map +1 -0
  73. package/lib/rsi-local-install.d.ts +40 -0
  74. package/lib/rsi-local-install.d.ts.map +1 -0
  75. package/lib/rsi-local-install.js +221 -0
  76. package/lib/rsi-local-install.js.map +1 -0
  77. package/lib/rsi-local-pair-install.d.ts +38 -0
  78. package/lib/rsi-local-pair-install.d.ts.map +1 -0
  79. package/lib/rsi-local-pair-install.js +200 -0
  80. package/lib/rsi-local-pair-install.js.map +1 -0
  81. package/lib/rsi-local-profile-update.d.ts +25 -0
  82. package/lib/rsi-local-profile-update.d.ts.map +1 -0
  83. package/lib/rsi-local-profile-update.js +226 -0
  84. package/lib/rsi-local-profile-update.js.map +1 -0
  85. package/lib/rsi-local-resources.d.ts +37 -0
  86. package/lib/rsi-local-resources.d.ts.map +1 -0
  87. package/lib/rsi-local-resources.js +184 -0
  88. package/lib/rsi-local-resources.js.map +1 -0
  89. package/lib/rsi-local-roots-extension.d.ts +11 -0
  90. package/lib/rsi-local-roots-extension.d.ts.map +1 -0
  91. package/lib/rsi-local-roots-extension.js +31 -0
  92. package/lib/rsi-local-roots-extension.js.map +1 -0
  93. package/lib/rsi-local-update-build.d.ts +18 -0
  94. package/lib/rsi-local-update-build.d.ts.map +1 -0
  95. package/lib/rsi-local-update-build.js +37 -0
  96. package/lib/rsi-local-update-build.js.map +1 -0
  97. package/lib/rsi-local-update.d.ts +39 -0
  98. package/lib/rsi-local-update.d.ts.map +1 -0
  99. package/lib/rsi-local-update.js +205 -0
  100. package/lib/rsi-local-update.js.map +1 -0
  101. package/lib/rsi-memory-learning.d.ts +22 -0
  102. package/lib/rsi-memory-learning.d.ts.map +1 -0
  103. package/lib/rsi-memory-learning.js +76 -0
  104. package/lib/rsi-memory-learning.js.map +1 -0
  105. package/lib/rsi-owner-profile.d.ts +37 -0
  106. package/lib/rsi-owner-profile.d.ts.map +1 -0
  107. package/lib/rsi-owner-profile.js +178 -0
  108. package/lib/rsi-owner-profile.js.map +1 -0
  109. package/lib/rsi-plugin-creation.d.ts +31 -0
  110. package/lib/rsi-plugin-creation.d.ts.map +1 -0
  111. package/lib/rsi-plugin-creation.js +179 -0
  112. package/lib/rsi-plugin-creation.js.map +1 -0
  113. package/lib/rsi-profile.d.ts +23 -0
  114. package/lib/rsi-profile.d.ts.map +1 -1
  115. package/lib/rsi-profile.js +154 -43
  116. package/lib/rsi-profile.js.map +1 -1
  117. package/lib/rsi-release-build.d.ts +41 -0
  118. package/lib/rsi-release-build.d.ts.map +1 -0
  119. package/lib/rsi-release-build.js +223 -0
  120. package/lib/rsi-release-build.js.map +1 -0
  121. package/lib/rsi-service-environment.d.ts +6 -0
  122. package/lib/rsi-service-environment.d.ts.map +1 -0
  123. package/lib/rsi-service-environment.js +113 -0
  124. package/lib/rsi-service-environment.js.map +1 -0
  125. package/lib/rsi-service-setup.d.ts +10 -0
  126. package/lib/rsi-service-setup.d.ts.map +1 -0
  127. package/lib/rsi-service-setup.js +34 -0
  128. package/lib/rsi-service-setup.js.map +1 -0
  129. package/lib/rsi-setup.d.ts +35 -2
  130. package/lib/rsi-setup.d.ts.map +1 -1
  131. package/lib/rsi-setup.js +459 -32
  132. package/lib/rsi-setup.js.map +1 -1
  133. package/lib/rsi-source-maintenance.d.ts +25 -0
  134. package/lib/rsi-source-maintenance.d.ts.map +1 -0
  135. package/lib/rsi-source-maintenance.js +348 -0
  136. package/lib/rsi-source-maintenance.js.map +1 -0
  137. package/lib/rsi-source-update.d.ts +26 -0
  138. package/lib/rsi-source-update.d.ts.map +1 -0
  139. package/lib/rsi-source-update.js +276 -0
  140. package/lib/rsi-source-update.js.map +1 -0
  141. package/lib/rsi-source.d.ts +34 -0
  142. package/lib/rsi-source.d.ts.map +1 -0
  143. package/lib/rsi-source.js +375 -0
  144. package/lib/rsi-source.js.map +1 -0
  145. package/lib/rsi-systemd-bootstrap.d.ts +46 -0
  146. package/lib/rsi-systemd-bootstrap.d.ts.map +1 -0
  147. package/lib/rsi-systemd-bootstrap.js +271 -0
  148. package/lib/rsi-systemd-bootstrap.js.map +1 -0
  149. package/lib/sdk.d.ts.map +1 -1
  150. package/lib/sdk.js +26 -1
  151. package/lib/sdk.js.map +1 -1
  152. package/lib/setup-business.d.ts +49 -0
  153. package/lib/setup-business.d.ts.map +1 -0
  154. package/lib/setup-business.js +335 -0
  155. package/lib/setup-business.js.map +1 -0
  156. package/lib/setup-profile.d.ts +1 -1
  157. package/lib/setup-profile.d.ts.map +1 -1
  158. package/lib/setup-profile.js +25 -2
  159. package/lib/setup-profile.js.map +1 -1
  160. package/lib/setup.d.ts +12 -1
  161. package/lib/setup.d.ts.map +1 -1
  162. package/lib/setup.js +138 -34
  163. package/lib/setup.js.map +1 -1
  164. package/lib/systemd.d.ts +10 -0
  165. package/lib/systemd.d.ts.map +1 -1
  166. package/lib/systemd.js +23 -6
  167. package/lib/systemd.js.map +1 -1
  168. package/lib/types.d.ts +7 -0
  169. package/lib/types.d.ts.map +1 -1
  170. package/lib/types.js.map +1 -1
  171. package/lib/version.d.ts +1 -1
  172. package/lib/version.js +1 -1
  173. package/package.json +32 -20
package/README.md CHANGED
@@ -23,9 +23,11 @@ revision 投递一条内容无关的状态更新;两种路径的重试、fence
23
23
  - [日常使用自迭代的双 Host 配置](docs/rsi-setup.md)
24
24
  - [进度展示、安全与权限边界](docs/progress-security.md)
25
25
 
26
+ Linux `supervised` 新安装在模型、TraeX、飞书配置与 doctor 后自动取得当前 owner、生成有限授权与 manifest,并部署目标和独立协调器两个 systemd Host。新 owner 安装接通有界新工具创建、任务派生独立验收与动态采用;旧安装重试保留原授权,不自动增加创建通道。未就绪会以非零状态停止安装完成提示;重试不续期授权。当前尚未完成真实普通任务驱动的修复、采用和观察验收,见上述配置指南。
27
+
26
28
  ## 兼容性
27
29
 
28
- - DeepSeek Harness:`>=0.1.2-rc.1 <0.2.0` 基线语义(通过 `assistant-delivery`)。
30
+ - DeepSeek Harness:`0.2.0-rc.2` 基线语义(通过 `assistant-delivery`)。
29
31
  - `@dsh-enhanced/assistant-delivery`:`>0.1.7 <0.2.0`;本包的 supervised setup 使用当前发布切片的私有 capability。
30
32
  - `@deepseek-ai/dsh-user-questions`:由 DSH `0.1.2-rc.1` 定义 Agent-scoped `user-questions/request` answerer waterfall。Web Host 通过 Remote Events 提供 scoped answerer;飞书通道要承接 `ask_user_question` 时也必须直接注册同一 scope 的 answerer。
31
33
  - `@dsh-enhanced/credentials-keychain`:handle 模式为 `>=0.1.0 <0.2.0`;env fallback 不要求其激活。
@@ -45,24 +47,27 @@ dsh plugin --profile web add @dsh-enhanced/lark-channel
45
47
  dsh --profile web --dump-config
46
48
  ```
47
49
 
48
- 推荐使用跨平台向导完成飞书应用授权、凭据保存、owner 绑定、最小 Policy 和用户级常驻服务:
50
+ 推荐使用跨平台向导完成飞书应用授权、凭据保存、owner 绑定、owner 工具策略 和用户级常驻服务:
49
51
 
50
52
  ```sh
51
53
  ~/.dsh/profiles/web/node_modules/.bin/dsh-lark-setup \
52
54
  --profile web \
53
- --create-app \
54
- --allow-agent-tools
55
+ --create-app
55
56
  ```
56
57
 
57
58
  源码工作区也可运行:
58
59
 
59
60
  ```sh
60
61
  pnpm --filter @dsh-enhanced/lark-channel build
61
- pnpm --filter @dsh-enhanced/lark-channel run onboard --profile web --create-app --allow-agent-tools
62
+ pnpm --filter @dsh-enhanced/lark-channel run onboard --profile web --create-app
62
63
  ```
63
64
 
64
65
  向导不会把 App Secret 放进 argv、profile 或日志。macOS 使用 Keychain,Linux 优先 Secret Service、无桌面环境降级为严格权限的 protected-file,Windows 使用 best-effort DPAPI。完整流程、已有应用接入和平台排障见[安装文档](docs/setup.md)。
65
66
 
67
+ 向导默认还安装或复用官方 `lark-cli`,使用同一应用为绑定的 owner 申请 `--domain all` 用户授权,并生成原生 DSH 业务技能。Agent 按需读取 CLI 内嵌的最新技能说明,通过原生工具操作文档、表格、日历、任务、邮件等;已授权任务无需反复批准。重复安装验证并复用有效用户授权;明确的部分授权也可接入已获批能力,同时显示未获批权限。有完整授权结果的中断收尾可恢复,不把普通错误当作授权成功。只需消息通道时,可用 `--no-business-tools` 跳过该步骤。
68
+
69
+ 业务 CLI 使用 DSH 专用配置目录、显式 profile 和净化后的环境;Linux 另用专用数据目录保存 CLI 加密凭据,macOS/Windows 的系统钥匙环仍可能按应用/用户共享凭据。自动安装只下载并校验官方 npm 包与匹配的 GitHub release(失败时尝试官方安装器镜像,使用相同校验值),不运行 npm lifecycle 或全局安装脚本。此安装步骤需要网络和子进程权限,生成的技能位于 `$DSH_HOME/skills`;具体平台权限仍以飞书实际批准结果为准。
70
+
66
71
  ## 最小配置
67
72
 
68
73
  不使用向导时,可在 profile patch 中配置:
@@ -147,11 +152,17 @@ dsh-lark-setup --profile web --refresh-agent-policy --allow-agent-tools
147
152
 
148
153
  ## 权限与数据边界
149
154
 
150
- - `--allow-agent-tools` 是高权限显式开关:为本地 `foreground` 与精确 owner Delivery 主体建立 capability/工具可达性;不授权 `background`,也不绕过显式 deny、紧急停止、身份、预算及插件业务硬门。
151
- - `ask` 和 `auto` 中真正需要人工确认的工具调用只向 active owner 私聊发送一次性 CardKit 2.0 审批卡;卡片包含“允许一次 / 拒绝”按钮。若租户拒绝该卡片格式,只对 `format_error` 降级成同一私聊的明确文字审批;恰好一个匹配请求时,owner 回复“允许”“允许一次”或“拒绝”可恢复原调用。多请求并存不猜测,网络/连接失败也不自动放行。`full` 关闭逐次审批并放开 sandbox,应保持 owner 与应用可用范围最小。
155
+ - 首次绑定 owner 默认为本地 `foreground` 与精确 owner Delivery 主体建立已安装 capability/工具可达性,配合默认 Full access 无需逐工具确认。重复配置保留现有规则;可显式 `--allow-agent-tools` 开启、`--disable-agent-tools` 关闭向导规则,或 `--preserve-agent-tools` 连首次配置也保留现状;不授权 `background`,也不绕过显式 deny、紧急停止、身份、预算及插件业务硬门。
156
+ - `ask` 和 `auto` 中真正需要人工确认的工具调用只向 active owner 私聊发送一次性 CardKit 2.0 审批卡;卡片包含“允许一次 / 拒绝”按钮。若租户拒绝该卡片格式,只对 `format_error` 降级成同一私聊的明确文字审批;恰好一个匹配请求时,owner 回复“允许”“允许一次”或“拒绝”可恢复原调用。多请求并存不猜测,网络/连接失败也不自动放行。允许或拒绝后,原卡片立即显示终态并移除按钮;允许只表示本次授权已生效,执行结果由后续任务消息提供。取消、超时或连接结束也尝试替换原卡,更新失败不改变审批结果。异步终态更新最多等待 30 秒,关闭时最多等待 1 秒后取消。`full` 关闭逐次审批并放开 sandbox,应保持 owner 与应用可用范围最小。
152
157
  - `ask_user_question` 的卡片是另一条即时交互路径:本包有向原飞书会话发送/原位更新 CardKit 2.0 卡片、并接收 `card.action.trigger` callback 的网络权限。选项仅以签名 callback capability 提交;自由文本只接受 exact owner 对原卡的明确回复。它不把卡片点击或匹配回复写成普通 Inbox/新 turn,且问题内容会在原会话显示,群聊并不保密。
153
158
  - 行为学习审批卡会把签名覆盖的 scope、情境、guidance、版本、证据和回滚原因逐字段以纯文本展示;提案内容不会作为 Markdown 或卡片组件解释。点击后卡片只确认 Policy 决策已写入持久账本,明确不把“批准”误报成“变更已生效”。
154
- - 网络仅访问所选飞书/Lark OpenAPI、token 与 WebSocket endpoint;图片读取使用固定消息资源端点,不接受消息或模型提供的 URL,并关闭重定向。
159
+ - 消息通道运行时网络仅访问所选飞书/Lark OpenAPI、token 与 WebSocket endpoint;图片读取使用固定消息资源端点,不接受消息或模型提供的 URL,并关闭重定向。
160
+ - 安装阶段的 `dsh-rsi-setup --prepare-source` 执行 Git,在 `$DSH_HOME/rsi-sources/<profile>` 写入私有源码与 bare 发布仓库;npm 来源访问固定官方 GitHub 仓库的精确版本 tag,本地来源只复制已提交内容。支持常用代理与 CA 环境变量,不执行安装脚本;此命令不使用飞书凭据或浏览器,详见 [RSI 配置](docs/rsi-setup.md)。
161
+ - `dsh-rsi-setup --prepare-local-update` 在 Home 外准备本地上游与现有修复分支合并后的源码和 tarball,使用固定的镜像准备器及离线 bubblewrap 构建,保留原包、源码 refs 与授权。它可联网准备依赖镜像,但候选 build/pack 不带网络、凭据或原 Home;不会停服或激活更新。pre-owner 安装可使用 checkout 维护事务,已有 owner 的完整迁移仍未交付,详见 [RSI 配置](docs/rsi-setup.md)。
162
+ - checkout 的 `local-service-upgrade` 使用固定 pnpm,在停服前以无 registry 凭据的私有配置联网验证旧锁文件并预取依赖,失败保留原服务。停服副本的原生安装无网络且禁用安装脚本;新 Node 子进程沿用隔离边界,完整核验安装包文件和依赖闭包。事务会写入独立缓存及 Home 副本、切换 systemd 服务;它不启用 owner scheduler 或扩大授权。用法与恢复见[安装器指南](../../scripts/install/README.md#checkout-内的-pre-owner-冻结源码维护)。
163
+ - Linux 安装的 `--prepare-build` 还自动准备私有授权运行时和本地发布资源,也可单独执行 `--prepare-authorities`:从同版本已安装 Control Plane 复制官方程序及模块、固定独立 Node,运行副本做版本/模块检查,并生成 14 个独立 Ed25519 身份和本地 registry/catalog。共享契约从 Control Plane 声明的依赖解析,只接受包内依赖边或同一 pnpm 虚拟包目录内的相邻依赖边;祖先或 profile 顶层的同名包不能替代它。目录和密钥仅当前用户可读写;重复执行核验固定内容并保留发布/状态进展。此步骤需要文件写入与子进程权限,不需要网络、浏览器或飞书凭据,不执行 npm lifecycle,不签发 owner grant 或启动 Host。
164
+ - `dsh-rsi-setup --prepare-build` 还会执行摘要固定的构建脚本和 Dockerfile,用空 Docker 配置准备联网下载依赖的镜像,保存不可变 image ID 与私有构建回执。随后候选检查使用离线完整仓库 sandbox;安装期间不会读取主机 Docker registry 凭据或启动候选 Host。当前 runtime 支持与资源上限见 [RSI 配置](docs/rsi-setup.md)。
165
+ - 新 `--install-owner` 从已批准的源码镜像准备独立行为镜像;首次构建允许访问 Debian 包源,使用空 Docker 配置和固定 worker/launcher,不读取 owner 凭据、浏览器或候选期望行为,不运行 npm lifecycle。资源与摘要位于 `$DSH_HOME/rsi-creation-builds/<profile>`,创建验收和采用使用既有独立签名身份及私有 runner 账本;重试验证实际镜像,不重建缺失资源或重置额度。
155
166
  - `requestTimeoutMs`(默认 30 秒)为常规 OpenAPI 请求设置硬 deadline,`imageDownloadTimeoutMs` 独立限制图片下载。SDK 会把可下传的 AbortSignal 交给底层 HTTP;若调用已经被服务端接收后超时,最终消息保留 Delivery 的 `unknown_after_send` 语义,绝不自动重发或假称未发送。
156
167
  - App Secret 不写 Delivery 数据库、工具参数、health、route、日志或异常;Linux protected-file 没有额外静态加密,同 UID、root 和可读备份仍能取得内容。
157
168
  - Delivery SQLite 保存标准化文本、路由 id 和最多 10 个受限附件描述符;不保存 raw 事件、token 或下载 URL。图片字节只交给 AttachmentStore。
package/docs/rsi-setup.md CHANGED
@@ -1,12 +1,58 @@
1
1
  # 日常使用自迭代的双 Host 配置
2
2
 
3
- `dsh-rsi-setup` 将已配置的 Lark owner 目标 profile 和独立采用协调器接入原生 Automations。目标 Host 从真实任务反馈形成源码修复,协调器在目标重启期间继续有限交接;目标恢复后重验当前 owner 和反馈,再完成采用。后续任务进入观察与回滚流程。
3
+ `dsh-rsi-setup` 将已配置的 Lark owner 目标 profile 和独立采用协调器接入原生 Automations。目标 Host 从普通任务学习持久事实与经验,并从真实任务反馈形成源码修复,协调器在目标重启期间继续有限交接;目标恢复后重验当前 owner 和反馈,再完成采用。后续任务进入观察与回滚流程。
4
4
 
5
- 当前入口要求 Linux、可用的 systemd user session、两个已安装的 profile,以及已配置的有限授权器和 release/Host adapters。它负责核对授权与配置、成对写入和启动服务;完整生产部署还需要独立行为观测与实际使用验收。源码发布轨使用授权的本地 registry,仓库公共 npm 发版仍走仓库发布流程。
5
+ Linux `supervised` 新安装在最终模型、TraeX、Lark 配置和 doctor 完成后自动运行 `dsh-rsi-setup --install-owner`。它使用当前 active owner,准备独立协调器、有限授权与发布/Host 配置,成对应用并启动两个 systemd user Host。需要可用的 systemd user session、完整离线构建资源和同批已安装插件;缺少构建前置条件会返回 `not-ready` 和退出码 3,安装流程不打印完成。完整生产部署仍需实际使用验收。源码发布轨使用授权的本地 registry,仓库公共 npm 发版仍走仓库发布流程。
6
6
 
7
- ## 1. 准备两个 profile
7
+ 开发版 Linux 默认安装(包括 checkout 内 shell 的 auto/`--yes`)选择此完整场景;显式轻量场景、shell 的 `--mode standard`、`--lark skip` 或 `--no-service` 不隐式开启后台学习。必要配置优先从当前可信 owner 和已配置模型自动取得,缺少身份时使用安装向导的首次私聊配对,不把任意首条消息当主人。路径、独立授权身份及有限预算自动生成;没有全部前提仍报告未就绪。裸插件安装保持 fail-closed,旧安装不自动续期、补签或修改 paused 任务。
8
8
 
9
- 目标先完成 [Lark 配对](setup.md)与 [supervised 安装](supervised-growth.md),已有唯一 active owner DM 和有效 owner route。为目标补装同一构建的 Growth Driver、Goals、Skills、Verifier 与 Control Plane。开发版应使用本地构建的包;仅有相同版本号不能证明含有这些新增 API。
9
+ ## 1. 准备源码、构建环境与两个 profile
10
+
11
+ 新安装的 `supervised` 场景会自动准备私有源码仓库,并安装下述目标依赖。源码放在 `$DSH_HOME/rsi-sources/<profile>/`:`checkout` 为独立工作树,`release.git` 为本地 bare 发布仓库,`bootstrap.json` 保存来源与初始提交。npm 安装读取本工具版本对应的官方 `v<version>` tag;本地安装只复制 checkout 已提交的 HEAD,保留原工作区的未提交修改。
12
+
13
+ 已有安装可单独运行:
14
+
15
+ ```sh
16
+ ~/.dsh/profiles/web/node_modules/.bin/dsh-rsi-setup \
17
+ --prepare-source --profile web --dsh-home "$HOME/.dsh"
18
+ # 本地开发安装额外传 --source-repository /absolute/path/to/dsh-enhanced
19
+ ```
20
+
21
+ 输出 JSON 的 `repository` 与 `baseline` 可直接用于 `sourceJobs`;Growth 与相关授权须引用同一仓库。初始发布分支为 `repairs`,受管基准为 `refs/dsh-source/repairs`。重复执行会复用并核对已保存的来源和版本,保留已推进的发布分支及基准;它不会把日常修复回退到安装版本。不同版本或来源不能覆盖已有目录,须先完成部署迁移。准备过程需要 Git,官方来源还需要访问 GitHub;失败或中断不会被当成完成。
22
+
23
+ Linux 上的新安装还会自动准备授权工具与本地发布资源,无需手工复制程序、生成密钥或创建 registry。`--prepare-build` 在构建准备前执行此步骤,因此 Docker 不可用时也能保留它们。已有安装可独立运行,不需要 Git、Docker、源码 checkout 或 owner manifest:
24
+
25
+ ```sh
26
+ ~/.dsh/profiles/web/node_modules/.bin/dsh-rsi-setup \
27
+ --prepare-authorities --profile web --dsh-home "$HOME/.dsh"
28
+ ```
29
+
30
+ 输出的 `authorityRuntime` 包含 `$DSH_HOME/rsi-authority-runtimes/<profile>` 内独立 Node、官方 Control Plane CLI、运行模块及摘要。八个发布阶段各有独立程序文件,脚本固定使用私有 Node;不依赖 profile 后续替换的程序。只复制当前同版本安装包的文件及其本地已安装的非激活 Growth 共享合同库,逐文件保留摘要;私有目录不依赖 workspace 或 profile 的依赖链接。执行版本和模块加载检查,不执行 npm 安装脚本。再次准备会核验源包与已部署字节,版本或内容漂移会停止,不能用重装静默改换已固定的运行时。
31
+
32
+ `authorityResources` 包含 `$DSH_HOME/rsi-authorities/<profile>` 内 14 个独立 Ed25519 身份的公钥与私钥路径、安装/账本标识、私有 `file:` registry、catalog、配置及状态目录。私钥正文不出现在输出中。重复执行复用相同身份并保留已发布内容、catalog 条目及授权状态;缺失、损坏或权限漂移不会触发密钥重建或存储清空。失败只清理本次创建的目录;崩溃留下不完整目录时拒绝覆盖,需要先检查残留。独立的 `--prepare-authorities` 只准备资源;自动 `--install-owner` 后续才生成 owner 配置并启动服务。
33
+
34
+ 新 owner 安装同时配置普通失败任务驱动的有界新工具创建:Growth 可创建 owner 命名空间内插件,Verifier 从真实任务/反馈独立产生验收用例,Control Plane 消费签名凭证并动态注册隔离工具。`pluginCreation` manifest 绑定同一 owner、命名空间、期限及有限额度,并镜像到 `sourceJobs.creation`、`creationVerifications`、`creationCapabilities` 和 Verifier `creationReviews`;字段不完整或不一致时拒绝部署。验收和采用分别使用现有 `review`、`adoption` 身份,沿独立协议签名,不新增或重建既有身份。复跑旧 manifest 保持原授权范围,不自动打开创建通道或更新期限。
35
+
36
+ 完整 `pluginCreation` 通过校验后,配置器同时为当前 owner 的 preset、工作区和 principal 添加前台外部任务的工具执行 Policy 规则,仅匹配本安装 `evolved_owner_<安装ID前8位>_*` 别名。缺少创建配置时不生成该规则;显式 deny 仍优先。Policy 只允许该命名空间的调用路径,不能证明工具已通过独立验收或仍可使用;动态采用器在每次调用时继续核对当前 owner、来源、期限及剩余额度,原有授权期限和计数不会因配置重跑而延长或重置。
37
+
38
+ 新生成的创建采用授权显式包含 `creationCapabilities.retention.maximumLifetimeMs: 2592000000`(最多 30 天)。首次采用仍要求原创建作业和计划有效期内的新鲜独立证书;采用后可以跨单个作业、计划及证书的截止,在原使用授权和 runner 截止前复用精确版本。默认安装的创建与使用授权仍共用原年度截止,此模式不跨该授权期限。重启保留原采用时间、截止和调用额度,反馈纠正、撤回或 owner 变化仍阻断使用。旧 manifest 缺少此字段时保持证书窗口内的原语义;重跑安装不补签,不向已有账本自动增加此授权。该期限不证明真实任务收益或版本替换回退已经验收。
39
+
40
+ 安装器从已批准的源码构建镜像准备独立行为镜像,资源保存在 `$DSH_HOME/rsi-creation-builds/<profile>`。临时上下文只含固定受信任 worker/launcher、Dockerfile、清单和锁文件,不复制候选、owner 凭据或期望行为。首次镜像准备可能访问 Debian 包源;运行候选时禁用网络。重复安装核验原始回执、输入摘要、Docker 可执行文件和实际不可变镜像 ID;镜像缺失或输入漂移不会触发重建。验收与调用使用独立私有 runner 账本,额度和 unknown 不因重启重置。该安装配置本身不证明普通任务收益或完整自迭代闭环。
41
+
42
+ 新安装还会尝试准备离线构建镜像。当前完整仓库检查沿用已验证的 Linux x64、Docker Server `29.4.1/linux/amd64` 与嵌套 sandbox 配置;不满足这些前置条件时,安装器保留源码并报告 `buildUnavailable`,普通 Agent 安装继续,但不声称源码修复构建已经可用。实际镜像构建失败或已有资源不一致会停止安装。
43
+
44
+ 支持的环境可单独运行严格构建准备:
45
+
46
+ ```sh
47
+ ~/.dsh/profiles/web/node_modules/.bin/dsh-rsi-setup \
48
+ --prepare-build --profile web --dsh-home "$HOME/.dsh"
49
+ ```
50
+
51
+ 输出中的 `sourceBuild` 可用于 Control Plane manifest。安装器还自动从同一不可变镜像导出原生 Node、pnpm、离线 store 和供应链策略缓存,输出 `releaseBuild` 可直接用于本地发布 adapter 的 `build` 配置;无需手填工具链路径和摘要。资源保存在 `$DSH_HOME/rsi-release-builds/<profile>`,回执固定所有文件内容与模式。导出只创建未启动的容器,复制固定路径后删除容器,不执行其中的源码。发布仍使用本机 `/usr/bin/bwrap` 和 `/usr/bin/tar`;`--optional-build` 在缺少这些前置条件时报告 `releaseBuildUnavailable`,保留已准备的源码验证镜像。实际复制、工具链版本校验或已有回执漂移失败仍会停止安装。配置使用不可变镜像 ID,并将私有回执与 seccomp 保存到 `$DSH_HOME/rsi-builds/<profile>`。重新执行会核对来源、构建输入与本地镜像;不会静默换镜像或重新构建丢失的已登记镜像。Docker 构建脚本、Dockerfile 与 seccomp 必须匹配安装包内登记的摘要,只把 lock、workspace 配置及包清单放入构建上下文;不复制源码、主机包缓存或凭据。首次镜像准备需要网络,随后候选构建离线运行。
52
+
53
+ 自动配置沿用完整仓库检查的 30 分钟、16 GiB 内存、8 CPU、1024 PID、4 GiB 工作区和 2 GiB 临时目录上限;宿主需提供相应资源。嵌套 sandbox 的系统路径与 seccomp 边界见[构建镜像指南](../../../scripts/isolation/README.md#nested-sandbox-profile)。准备资源只完成安装前置步骤;`--install-owner` 会核对已安装 Host、owner 和最终配置后再应用。
54
+
55
+ 目标先完成 [Lark 配对](setup.md)与 [supervised 安装](../../../scripts/install/README.md),已有唯一 active owner DM。无需先激活固定 Recovery runbook;缺失的 owner route 在成对配置事务内生成,既有唯一精确路由(包括 `supervised-growth-owner`)沿用原 ID 和 minimum generation。路由冲突或重复会拒绝,不覆盖其他授权。新安装自动补齐目标依赖;旧安装若缺依赖,为目标补装同一构建的 Growth Driver、Goals、Skills、Verifier、Memory Learning 与 Control Plane。Memory 由 Personal Assistant 内嵌提供,不再添加独立 Memory bundle。开发版应使用本地构建的包;仅有相同版本号不能证明含有这些新增 API。
10
56
 
11
57
  ```sh
12
58
  dsh plugin --profile web add \
@@ -14,6 +60,7 @@ dsh plugin --profile web add \
14
60
  @dsh-enhanced/assistant-goals \
15
61
  @dsh-enhanced/assistant-skills \
16
62
  @dsh-enhanced/assistant-verifier \
63
+ @dsh-enhanced/assistant-memory-learning \
17
64
  @dsh-enhanced/plugin-control-plane
18
65
 
19
66
  dsh plugin --profile rsi-coordinator add \
@@ -22,12 +69,16 @@ dsh plugin --profile rsi-coordinator add \
22
69
  @dsh-enhanced/plugin-control-plane
23
70
  ```
24
71
 
25
- 协调器使用新的自定义 profile,默认从 DSH base 创建。勿从 `web` 模板复制:协调器不需要 Web 服务或第二个 Lark 入口。目标和协调器的 Policy/Automations 状态分开;协调器 Control Plane 的主库独立,专用采用连接按目标 trust 中的精确路径读取共享交接账本。
72
+ 自动安装从 DSH base 创建确定性命名的独立协调器 profile,并安装同版本 Policy、Automations、Control Plane;base 由当前受信任 DSH Host 的安装目录提供,不要求协调器 profile 自行安装。中断后的部分安装仅凭本次私有登记及停机状态修复。手动配置也须使用新的自定义 profile,勿从 `web` 模板复制:协调器不需要 Web 服务或第二个 Lark 入口。目标和协调器的 Policy/Automations 状态分开;协调器 Control Plane 的主库独立,专用采用连接按目标 trust 中的精确路径读取共享交接账本。
26
73
 
27
74
  ## 2. 准备一次性有限授权 manifest
28
75
 
29
76
  manifest 是 owner 私有的 JSON(`chmod 600`),路径须 canonical,不含 symlink。它引用已存在的私有授权器配置、key、trust、catalog 和控制账本。配置器读取并验证这些文件,不生成授权或签名回执。
30
77
 
78
+ 自动入口调用 `lib/rsi-bootstrap-manifest.js` 的 `createRsiBootstrapManifest`,从有效目标配置、真实 active owner DM、已准备资源及声明的插件/Host 文件范围生成完整 manifest;`lib/rsi-authority-config.js` 的 `compileRsiAuthorityConfigs` 生成 schema4 trust、五份有限授权、八个发布 adapter、公钥文件和 Host resolver/wrapper。安装器核对实际 DSH/Git/systemctl 与构建资源的 pins、最终 unit 属性,以及 Loader 条目的 observer 摘要;这些声明文件并非完整的传递性 JS 模块证明。默认模型继承原任务,已有显式 Growth 模型覆盖会保留。observer 不观察 Control Plane 自身,避免摘要自引用;Delivery、Growth Driver 与 Verifier 按最终生成的配置摘要观察,Lark 按原始 Loader 配置摘要观察;输入仍核对原始配置。安装器把 `!!js` 标量按 Loader 原始值处理,不执行该表达式。
79
+
80
+ `--install-owner` 在 home lifecycle lock 下调用 `prepareRsiOwnerConfiguration`,重新核对已准备的程序和身份,创建真实 Control Plane 账本和 observer 密钥,将配置写到私有目录,并执行 profile、授权和八阶段 adapter 配置预检。重复调用核对配置、密钥和 owner,保留已用账本与状态;重试复用原安装授权的起点及到期时间,不自动续期或增额。首次准备发现未登记的配置/账本则拒绝覆盖。`--local` 的 supervised 新安装固定源码 checkout 的已提交 HEAD,构建并保存独立 tarball;目标与协调器安装后都核对运行依赖闭包的文件清单和摘要。未提交修改不进入这批制品。安装接线已实现,真实普通任务闭环尚未验收。
81
+
31
82
  | 字段 | 要求 |
32
83
  | --- | --- |
33
84
  | `schemaVersion` | `1` |
@@ -35,15 +86,68 @@ manifest 是 owner 私有的 JSON(`chmod 600`),路径须 canonical,不
35
86
  | `controlPlane` | 目标的完整 Control Plane config;必需 `sourceBuild`、`sourceJobs`、`sourceApprovals`、`sourceReleases`、`sourceReleaseExecution`、`sourceAdoptions.handoff`、`runtimeObserver`、`foregroundDeployments`、`taskObservations` |
36
87
  | `growthDriver` | 完整 Growth config;`enabled: true`、`intervalMs: 0`、启用 `usageLearning` 与 durable `pluginSourceProposals`,绑定同一 owner/workspace/preset/repository |
37
88
  | `sourceReviews` | 有限独立审查授权;owner 精确匹配当前 Delivery 记录,decisionRoot 与发布轨一致 |
89
+ | `pluginCreation` | 可选完整创建/独立验收/采用链;新 owner 安装生成,旧 manifest 缺席时保持旧能力边界 |
90
+ | `memoryLearning` | 新自动安装必含 `{ learning, reviews, adoption, limits: { extractions, scans } }`;三份准确 owner 绑定的有限配置,旧手动 manifest 可省略以保留原行为。见下文。 |
38
91
  | `coordinator` | `{ "budgetId": "rsi-adoption", "budgetAmount": 1, "timeoutMs": 900000 }`,按实际约束设置 |
39
92
  | `limits` | 例如 `{ "periodMs": 86400000, "reviews": 5, "discovery": 1440, "source": 1440, "observations": 1440, "coordinator": 1440 }`;均为显式有限额度 |
93
+ | `serviceEnvironment` | 可选 `{ "target": { ... }, "coordinator": { ... } }`,显式替换两个服务的配置路径绑定;通常无需填写,见下文 |
40
94
 
41
95
  具体配置契约见 [Control Plane](../../plugin-control-plane/README.md)、[Growth Driver](../../assistant-growth-driver/README.md)、[Verifier](../../assistant-verifier/README.md)。四份签名授权必须使用相同 owner、目标 ledger 与插件白名单,并与 trust 登记的公钥一致。采用授权绑定 executor、profile、handoff;观察授权绑定包名单和观察策略。所有授权须在有效期内。
42
96
 
97
+ ### 普通任务的自动记忆学习
98
+
99
+ 自动 manifest 为提取、独立审查、采用分别生成不同授权 ID,并绑定 Delivery 当前七字段 owner。默认各有 1,000 次生命周期 admission/mutation 上限,采用总内容上限 4,096,000 字节、记录 TTL 最多 30 天;提取队列最多 100 项、来源窗口 30 天。模型默认继承来源任务,单轮输入最多 65,536 字节、输出最多 2,048 token、期限 120 秒。只学习明确 owner 事实和可信客观结果绑定的经验。
100
+
101
+ `learning` 使用 [Memory Learning 配置](../../assistant-memory-learning/README.md),`reviews` 写入 Verifier 的 `memoryReviews`,`adoption` 写入 Personal Assistant 内嵌的 `personalMemory.automaticLearning`。review/adoption 摘要从验证后的配置生成,跨 owner、摘要漂移或过期都会拒绝。三份 grant 和学习数据库均保持原期限、额度与已消耗状态,重复安装不续期、不清空历史;已有 owner manifest 缺此组不能靠重跑安装静默补签,仍需显式迁移。
102
+
103
+ 原生调度的默认提取预算为每工作区每日 7 次,扫描预算为该扫描任务每日 1,440 次;每次 reservation 为 1。不同学习 job 共用工作区提取计数。Policy 按 scope/metric/period 共用计数,预算 ID 不隔离相同计数池;同 scope/metric/period 的其他工作区预算会拒绝,即使额度相同,避免静默共用;不覆盖额度。提取、审查、采用及调度规则均限定 owner/workspace,不开启 unbudgeted execution。
104
+
105
+ 学习插件安装 patch 默认禁用且无配置。安装器核对其 profile-local 同批制品,并确认它与 Personal Assistant 解析同一物理 Memory provider;Memory 的 manifest、patch 与入口也进入声明文件 pins,这不是完整传递 JS 模块证明。配置器先验证整组配置,随后启用准确行;已启用行只允许完全相同的重试配置。最终 observer 同时核对 Personal Assistant 的 Policy/调度/Memory 配置、Verifier 及学习插件配置与服务实例。就绪使用本次 Host 的 PID/InvocationID 与 observer,扫描定义可复用原持久记录,但必须匹配 owner、executor、catalog、配置摘要与预算,不能用旧记录时间戳冒充失败或新激活。
106
+
107
+ 这完成安装接线。临时 Home 的真实 DSH 配置导出和工程 fixture 不证明生产双 Host 已启动、真实模型学习效果或后续任务收益;这些仍按当前状态验收。
108
+
109
+ 所有 owner 字段中的 `authorityId` 使用有效 Delivery 路由的 ID,即 `sourceJobs.ownerRouteId`。`sourceJobs.authorityId` 是源码作业的独立期限与额度标识,不能用作 owner 路由身份。
110
+
43
111
  不填 Growth `provider/model` 和 Verifier `sourceReviews.model` 时继承来源任务的实际模型。需要固定修复或审查供应时显式配置;历史任务已冻结的模型不会跟随之后的会话切换。
44
112
 
113
+ 配置器自动保存 trust 所选择的标准 adapter 配置路径:`DSH_SYSTEMD_HOST_ATTESTOR_CONFIG` 和 `DSH_RELEASE_{PR,REVIEW,MERGE,BUILD,SIGN,PUBLISH,REGISTRY_VERIFY,CATALOG_ADMISSION}_CONFIG`。首次配置从当前进程读取;之后优先复用 `$DSH_HOME/rsi-service-environments/<profile>.json`,重装服务或退出 shell 后无需重新 export。目标接收所选发布与 Host 路径,协调器只接收相同的 Host 路径。若要替换已有路径,可在 `serviceEnvironment` 明确给出两个映射;字段集合须与 trust 所选标准变量一致。引用的配置必须是当前用户私有、canonical、单链接普通文件,且位于 `profiles/` 之外。这里只保存配置路径,不复制 token、私钥或任意 shell 环境变量。
114
+
45
115
  扫描、源码作业、观察与协调器使用 `subject` scope 的 `automation-runs` budget;模型复盘使用 `global` scope 汇总。Policy 按 scope、metric、period 计量,改 budget ID 不会隔离同一计数池。源码额度按每个原生 automation identity 计量,总作业数另由有限 `sourceJobs.maxSubmissions` 限制。空扫描也消耗配置额度;额度应覆盖所需扫描频率。已有同周期全局规则的额度必须兼容。配置器不会打开 `allowUnbudgetedExecution`。
46
116
 
117
+ ## 自动安装与就绪判断
118
+
119
+ 正常新装无需手填 manifest。`supervised` 安装完成模型、TraeX、Lark 与 doctor 后,调用当前 profile 内的 `dsh-rsi-setup --install-owner --profile <name> --dsh-home <absolute>`;本地源码安装再传 `--source-repository`。仅 Linux systemd user services 支持此入口。构建前置条件缺失,或旧的本地目录链接使必需包实体位于 profile 外时,返回 `{"mode":"not-ready",...}` 和退出码 3;旧链接在停服、创建协调器和签发授权前被拒绝。其他预检或部署失败也使安装命令非零退出,不显示“安装流程完成”。前序已安装的普通 Agent 与资源保留供修复后重试。
120
+
121
+ 本地 supervised 新安装先运行 `--install-local-cohort`:在私有临时 checkout 中按冻结 lockfile 构建,将选定插件、协调器及其内部运行依赖打包到 `$DSH_HOME/rsi-local-cohorts/<profile>/`。bootstrap 构建复用本机 pnpm 缓存;这不是候选代码的隔离构建。冻结源码的 `allowBuilds` 布尔清单随 receipt 保存并在安装前合并,保留已有配置;同一依赖存在相反决定时停止,不自动扩大安装脚本权限。安装通过原生 DSH `plugin list/add` 完成,本地 supervised profile 使用 pnpm `nodeLinker: isolated`,防止 hoisted 布局把同版本 registry peer 混入本地运行依赖。依赖覆盖限定精确父包:运行依赖固定到本批制品;内部 peer 仅在其 provider 已属于当前 profile 的运行依赖闭包时固定到同一制品,不通过 peer 扩大安装集合。目标和协调器分别计算闭包,缺席的可选 peer 不自动安装。仅选定根包成为直接 bundle;每条内部运行依赖、已提供的 peer 和实际安装文件均须匹配制品,同名内部包必须解析到同一真实目录,防止同版本 npm/file 副本产生不同模块状态。重试复用 receipt 并核对原始提交、包选择与摘要,不自动改为新的 HEAD。构建发生在停服前;若后续包安装或文件核验失败,保留固定制品与覆盖配置,Host 保持停机,修复后以相同输入重试。若 pnpm 普通安装保留了缺失、已知文件内容不符或模块目录分裂的包,安装器会重验冻结制品和配置,再强制重装一次并核验结果。协调器的完整包名/版本不会掩盖文件缺失。额外文件、配置冲突及未知状态不会触发此自动修复;重验仍失败时保持停机,不自动删除用户的 profile。
122
+
123
+ 既有冻结安装可重跑原 `--install-local-cohort` 命令修复同批 peer 解析;必须保持原 profile、源码路径和 bundle 选择。预检拒绝未知内部 override、改变的固定路径或制品;随后持生命周期锁停服,重新安装原 tarball 并核验,成功后恢复原服务。此修复不更新源码提交、冻结收据或业务状态;不是升级到当前开发 HEAD。
124
+
125
+ 开发版提供本地更新候选的准备入口:
126
+
127
+ ```sh
128
+ dsh-rsi-setup --prepare-local-update --profile web --dsh-home "$HOME/.dsh"
129
+ ```
130
+
131
+ 尚未安装 RSI owner 权限的旧冻结 profile 若缺少 Memory Learning,可在已审核并构建的 checkout 中显式追加 `--add-memory-learning`。它只允许这一根包扩展,生成独立 schema 2 候选;准备前后检查真实 pre-owner 权限与签名历史。后续 checkout 维护事务核验精确新增的默认 disabled、无 config 行及全部原配置,仍不启用 scheduler 或学习。原 schema 1 更新保持原 roots;已有 owner/coordinator 不支持这条扩展。具体命令与恢复边界见[安装器指南](../../../scripts/install/README.md#checkout-内的-pre-owner-冻结源码维护)。
132
+
133
+ 它从既有冻结收据读取源码路径,固定上游已提交 HEAD 和当前修复分支;两条修复 ref 必须已对齐。可直接快进时复用提交,分叉时在私有新仓库合并;冲突会停止准备并保留原始分支。上游的精确包版本可以不同于已安装版本,未提交修改不进入候选。源码、tarball 及准备收据保存在 Home 同级的私有 `.dsh-rsi-local-updates-<home-hash>/` 内;相同原始制品、上游和修复提交会复用已核验的准备结果,变化则使用另一目录。准备期间上游、原始收据或已安装包变化时不返回成功。
134
+
135
+ 更新构建先用已固定摘要的 manifest-only Docker 构建器准备依赖镜像,再导出独立 Node/pnpm/store/cache。候选的 build/pack 脚本在现有 release adapter 的离线 bubblewrap 环境内运行,只挂载构建副本、输出及只读工具链/依赖,不提供原 Home、原 Git 仓库、凭据或环境变量。此步骤需要与首次构建准备相同的 Linux x64、Docker 和 bubblewrap 支持;没有宿主机直接构建的回退路径。输出 `mode: prepared` 只表示源码和制品已准备,尚未迁移签名源码历史、构建/授权配置或切换服务;当前普通 upgrade 仍拒绝冻结本地安装。尚无 owner/coordinator 的安装可显式使用[本地 checkout 维护事务](../../../scripts/install/README.md#checkout-内的-pre-owner-冻结源码维护);已配置 owner 的冻结安装尚不支持完整升级。激活须由停机事务重新核对当前状态,不能把准备收据当作激活授权。
136
+
137
+ 安装事务可通过只读候选检查重新验证源提交、原安装、tarball、固定构建器和导出的工具链;它不会执行 Docker 或候选脚本,也不会补建丢失的资源。这里的构建资源检查证明本地记录和文件仍匹配,不证明 Docker 镜像当前可运行。源码维护 helper 在独立 Home 副本中导入新提交、更新受管 refs,并保留最初 bootstrap、Git 对象及 `baseline.initialCommit`;既有 Host 密钥签名的 `maintenance.json` 使后续源码读取和候选准备解析到新版本。Control Plane schema 28 将该维护记录与旧 release 收据一起校验,拒绝未结源码任务、断链、旧 tip 或不匹配的 Host 身份。它是完整升级事务的内部接口,尚未开放为直接替换运行中 Agent 的命令;协议边界见[兼容性说明](../../../docs/compatibility.md#本地源码维护历史control-plane-schema-28)。
138
+
139
+ 内部激活准备已包含停服账本预检、维护签名生成和三类资源副本迁移。预检不会创建或迁移账本;非空 WAL/回滚日志、未结源码工作或冲突的部署观察须先在原 Host 对账。签名绑定原始与副本一致的部署及 readiness。资源迁移只重定位副本中的 tarball、构建器和发布工具链收据,并保留原安装与候选;替换或验证失败时尝试恢复副本原资源;已验证后的备份清理失败及进程崩溃由外层事务恢复或丢弃副本。成对包安装另由内部 `stageRsiLocalPairPackages` 处理:先核对两个 profile 的原制品文件、直接依赖、原生 Loader bundle 集合及固定 overrides,只替换原 cohort 拥有的精确依赖边;保留 profile 配置与注释,拒绝候选更改既有 build-script 决定或新增允许。两边安装和文件核验全部成功后才推进协调器登记,同版本源码更新也按制品字节核验。调用方须持有生命周期锁,并在隔离环境把可丢弃的已停写 Home 副本映射到原逻辑路径,准备相符的独立 pnpm store/cache;pnpm 会沿旧 `node_modules/.modules.yaml` 读取 store,且安装需要原 profile 的 lockfile 策略校验缓存和依赖包,仅复制源码构建缓存不足以离线安装。组件不自行建立这些边界,也不会放宽已有 lockfile 或脚本策略。安装中断或失败保留副本供外层恢复或丢弃,不宣称双方原子回滚。已配置 owner 的冻结安装仍需接入完整 owner 配置迁移、观察中的部署/回退证明、服务切换与崩溃恢复,因此这些成对内部组件不能当作升级成功。
140
+
141
+ 尚未配置 owner 自动迭代的冻结安装另有显式内部 `maintenanceMode: 'pre-owner'`,不会因账本缺失自动启用。只读 `assertRsiPreOwnerInstallation` 核对原 Home/副本的初始授权资源、全部身份、bootstrap 与签名源码链,拒绝协调器、安装 journal、已配置 owner 或不明配置层;读取 Git 时禁用可选写锁。该模式保留初始身份与历史,以 `host:null` 签署连续维护记录,不创建控制账本。对应的 `stageRsiLocalSinglePackages` 只迁移单 profile,拒绝任何协调器残留,仍核验同版本的实际包字节。外层必须另外检查所有 profile 的有效插件图与真实启动参数,并负责停服、副本、切换和恢复;这些内部组件本身不负责服务切换。开发 checkout 已提供显式 `local-service-upgrade` / `local-service-recover`,复用 Home 锁、systemd 收容、完整 Home 副本及切换/恢复;预检的原生配置导出仅在私有副本运行,恢复前重验源码、安装模块和全部配置。激活预览使用额外可丢弃 Home 副本,其队列、数据库及会话写入不会进入正式安装。用法和未发布边界见[安装器指南](../../../scripts/install/README.md#checkout-内的-pre-owner-冻结源码维护)。
142
+
143
+ 该 checkout 维护入口在停服前,以私有 profile 和全新缓存按原有效 pnpm 策略验证原锁文件并预取依赖,再用一次性同级 profile 的完整原生在线 `add --force --ignore-scripts` 补齐可选依赖的完整 registry 元数据、包及安装时短暂请求的 peer 包;这些临时包不一定进入最终锁图,不能仅靠锁解析和 fetch 准备。另一份原元数据、没有预热 node_modules 的完整离线安装复演必须得到同一依赖图,并保留原 registry 包与可选边;两份安装禁用脚本和 pnpmfile,完成后整个 profile 丢弃,不启动 Host。可选解析失败、未知跳过或验证输出截断不能因退出 0 被忽略。原锁随后重新验证,无软链的 registry 镜像摘要随准备绑定并在复制后核对;正式安装仍从原锁及候选制品在无网络副本中执行原生 DSH 包安装。锁文件、配置、程序、元数据镜像或验证标记漂移时拒绝继续;不关闭供应链检查、不扩大安装脚本权限。准备缓存覆盖原依赖图,不是部署完成、新候选外部依赖可离线安装或候选行为验收。
144
+
145
+ 自动入口只收集已启用且可修复的 `@dsh-enhanced/*` 条目,核对同批包名、版本、patch、入口及声明的 Host 文件;最终 Delivery、Growth Driver、Verifier、Personal Assistant(含 Memory/Policy/调度)、Memory Learning 配置及原始 Lark Loader 配置都进入目标 observer。停机后临时加载最终计划的 systemd unit,以真实 `systemctl show` 捕获授权所需属性,再恢复原 unit;捕获期间不启动服务。随后成对应用 patch、环境绑定和 unit,先启动协调器再启动目标。就绪判断要求两个 PID、InvocationID 与重启计数连续 12 秒稳定,目标 observer 与实际进程和配置摘要一致,并读到本次启动后持久登记的、绑定当前 owner scope 的协调器原生 Automation。它证明这次部署的有限启动状态,不证明普通任务已产生候选、通过独立验收或完成采用/回滚。
146
+
147
+ 崩溃留下的 `prepared` journal 会先在两个 Host 停机后回滚;若回滚确认成功,先恢复原来运行的服务,再继续新预检。应用前失败仅在原 patch、journal、unit 均可核对时恢复原服务;未知状态保持停机供对账。已应用后的启动或就绪失败保留 applied journal 和配置,供停止服务、排查后重试或显式回滚。自动重试沿用原有限授权起点、期限和额度。
148
+
149
+ 自动安装和手动 `--apply` 都会检查两个 Host 的原 Automation 数据库,以及最终使用的数据库(协调器改用私有库)。关闭的 scheduler 将被开启、或启用另一数据库时,若原库或目标库存在 active 或 paused 定义,必须显式传入 `--ack-existing-automations`;没有固定 Recovery/Heartbeat 豁免;paused 也需确认,因为已有 Growth shadow/canary 作业仍可能被调度。数据库未知或检查失败会停止。自动入口停机后再核对同一库存;手动入口在写入前重查,发生变化即拒绝。该标志仅适用于 `--install-owner` 或 `--apply`,不续期授权、不重置次数,也不重放 unknown 动作。
150
+
47
151
  ## 3. 校验、应用、启动
48
152
 
49
153
  ```sh
@@ -51,7 +155,7 @@ manifest 是 owner 私有的 JSON(`chmod 600`),路径须 canonical,不
51
155
  --manifest /private/owner/rsi.json
52
156
  ```
53
157
 
54
- 默认只读组合 profile、核对当前 owner 与有限授权,不修改 profile 或启动服务。`DSH_HOME` 可由环境变量或 `--dsh-home /absolute/path` 指定。
158
+ 此手动 manifest 命令默认只读组合 profile、核对当前 owner 与有限授权,不修改 profile 或启动服务。`DSH_HOME` 可由环境变量或 `--dsh-home /absolute/path` 指定。
55
159
 
56
160
  应用前停止两个 Host(包括手工启动的进程),并确认没有其他 writer。命令同时检查对应 systemd unit 处于 stopped 状态;系统服务状态不能证明手工进程已停止。
57
161
 
@@ -61,19 +165,27 @@ systemctl --user stop dsh-profile-web.service dsh-profile-rsi-coordinator.servic
61
165
  --manifest /private/owner/rsi.json --apply --confirm-hosts-stopped --start
62
166
  ```
63
167
 
64
- 使用同一 DSH_HOME lifecycle lock;写入前重查 manifest、owner snapshot 和两个原始 patch,保留有效配置中的其他字段与 `!!js`。成对写入后再次运行 `dsh --dump-config` 检查。`--start` 复用已有常驻服务安装器,先启动协调器,再启动目标;省略该参数只保存配置。
168
+ 使用同一 DSH_HOME lifecycle lock;写入前重查 manifest、owner snapshot、两个原始 patch 以及服务绑定和 unit,保留有效配置中的其他字段与 `!!js`。成对写入后再次运行 `dsh --dump-config` 检查。存在受管服务环境时,同一事务保存两个绑定和 systemd unit,并执行 `daemon-reload`;schema4 Host grant 中的 `template.unitProperties.Environment` 必须与目标 unit 的实际 `systemctl show` 输出一致,否则自动恢复。准备 grant 时应使用最终计划的服务环境。`--start` 复用已有常驻服务安装器,先启动协调器,再启动目标;省略该参数仍保存并加载服务定义,但不启动服务。
65
169
 
66
170
  ## 恢复与停止
67
171
 
68
- 配置 journal 存在 `DSH_HOME/.rsi-setup-journal.json`,为私有文件,含上次变更前后的两个 patch。写入或最终组合失败时自动恢复;崩溃留下 prepared journal 时先执行回滚。重复应用相同配置不会覆盖原回滚点。只有最近一次变更可由此入口恢复。
172
+ 配置 journal 存在 `DSH_HOME/.rsi-setup-journal.json`,为私有文件,含上次变更前后的两个 patch。新 schema2 还保存两个环境绑定和 unit 的原始及新内容,原先不存在的文件回滚时删除;仍支持旧 schema1 journal。写入、最终组合或服务环境读回失败时自动恢复;崩溃留下 prepared journal 时先执行回滚。重复应用相同配置不会覆盖原回滚点。只有最近一次变更可由此入口恢复。
69
173
 
70
174
  ```sh
71
175
  ~/.dsh/profiles/web/node_modules/.bin/dsh-rsi-setup \
72
176
  --manifest /private/owner/rsi.json --rollback --confirm-hosts-stopped
73
177
  ```
74
178
 
75
- 回滚前仍须停止两个 Host。恢复不要求前向授权仍未过期;若任一 patch 被外部改过,会保留 journal 并拒绝覆盖。服务启动失败时保留已应用配置,先排查/停止服务再决定恢复,避免改写活跃 Host。
179
+ 回滚前仍须停止两个 Host。恢复不要求前向授权仍未过期;若任一 patch、服务绑定或 unit 被外部改过,会保留 journal 并在恢复任何文件前拒绝覆盖。服务启动失败时保留已应用配置,先排查/停止服务再决定恢复,避免改写活跃 Host。受管升级会同时校验绑定、unit 与有效环境,并在复制、切换和恢复时检查绑定内容未漂移。
180
+
181
+ 成功采用后的同版本 Host 重启会自动申请新的运行实例证明,使用现有协调器的每分钟调度,无需用户逐次配置。签署和应用前的会话仍可执行,但这些任务不计入部署效果归因;新证明通过后恢复后续任务观察。旧签名、原授权期限和 reload 累计次数保持不变。见 [运行实例证明](../../../docs/systemd-host-attestor.md#runtime-continuity-after-restart)。
182
+
183
+ 暂停自迭代可停止协调器及目标的相关 Automations,或撤销有限授权;重启不重置额度,也不重放 unknown 外部动作。授权续期需要新的合法授权标识与配置。配置 journal 恢复 profile 及上述服务配置;已发布或已采用能力的回退仍由 Control Plane 的签名恢复链负责。
184
+
185
+ 此 CLI 读取 owner 数据库与私有配置;默认检查也会使用本地 lifecycle 锁和临时 WAL 快照,但不改变 profile 或业务状态。显式应用写两个 profile patch、受管服务绑定/unit 和 journal;校验会执行本地 `dsh --dump-config`、`systemctl show`,服务定义变更会执行 `daemon-reload`,显式启动会安装/启用/restart 用户级服务。它不向其他人发送消息。原始授权、私钥、数据库、journal 与运行日志留本地,不提交 GitHub。
186
+
187
+ ## 使用普通任务资格合同
76
188
 
77
- 暂停自迭代可停止协调器及目标的相关 Automations,或撤销有限授权;重启不重置额度,也不重放 unknown 外部动作。授权续期需要新的合法授权标识与配置。配置 journal 只恢复 profile;已发布或已采用能力的回退仍由 Control Plane 的签名恢复链负责。
189
+ 可按[有限试用采用指南](../../../docs/bounded-live-adoption.md)配置 `sourceAdoptions.liveQualification` 与 `controlPlane.liveQualification`,并设置 `limits.qualification` 和独立预算 ID。配置器核对第五份独立签名授权及公钥,生成资格扫描的原生 Policy/Automations 规则。该模式以限时真实 owner 任务替代严格 replay/shadow 等验收合同,不声称这些严格阶段已通过;已有未配置此模式的 manifest 保持原行为。实际部署端到端验收仍见当前状态。
78
190
 
79
- 此 CLI 读取 owner 数据库与私有配置;默认检查也会使用本地 lifecycle 锁和临时 WAL 快照,但不改变 profile 或业务状态。显式应用写两个 profile patch 和 journal;校验会执行本地 `dsh --dump-config`、`systemctl show`,显式启动会安装/启用/restart 用户级服务。它不向其他人发送消息。原始授权、私钥、数据库、journal 与运行日志留本地,不提交 GitHub。
191
+ Host 可通过 [systemd schema4](../../../docs/systemd-host-attestor.md#automatic-authorization-within-an-installation-grant) 自动解析已批准操作的逐次授权。配置器核对 `sourceAdoptions.hostDeploymentInputs` 与采用授权的同名列表;当 trust 选择 `DSH_SYSTEMD_HOST_ATTESTOR_CONFIG` 时,还读取已解析的服务绑定所指向的私有配置,预检 schema4 wrapper、resolver/config 摘要、固定解释器及 Host 签名身份,并核对 owner、ledger、目标 profile、协调器 handoff 和有限试用条款。预检仅执行已固定 attestor 的版本查询和已选官方 resolver 的语法检查,不签发逐次授权或重启服务。Host 授权配置与原始/候选 observer 仍须预先准备,配置器不会生成它们;路径的持久传递由上述服务绑定负责。预检通过不等于实际 reload/readiness 已验收。
package/docs/setup.md CHANGED
@@ -15,13 +15,12 @@ dsh --profile web --dump-config
15
15
 
16
16
  ## 推荐:setup wizard
17
17
 
18
- 安装完成后,让向导配置 Keychain、owner 身份、最小 Policy、Web profile 和用户级常驻服务:
18
+ 安装完成后,让向导配置 Keychain、owner 身份、owner 工具策略、Web profile 和用户级常驻服务:
19
19
 
20
20
  ```sh
21
21
  ~/.dsh/profiles/web/node_modules/.bin/dsh-lark-setup \
22
22
  --profile web \
23
- --create-app \
24
- --allow-agent-tools
23
+ --create-app
25
24
  ```
26
25
 
27
26
  源码工作区可运行:
@@ -29,7 +28,7 @@ dsh --profile web --dump-config
29
28
  ```sh
30
29
  cd /path/to/dsh-enhanced
31
30
  pnpm --filter @dsh-enhanced/lark-channel build
32
- pnpm --filter @dsh-enhanced/lark-channel run onboard --profile web --create-app --allow-agent-tools
31
+ pnpm --filter @dsh-enhanced/lark-channel run onboard --profile web --create-app
33
32
  ```
34
33
 
35
34
  向导依次完成:
@@ -40,16 +39,17 @@ pnpm --filter @dsh-enhanced/lark-channel run onboard --profile web --create-app
40
39
  4. 使用真实凭据建立一次临时长连接;
41
40
  5. 显示一次性 `DSH-CONNECT-...` 短语,并等待你私聊机器人原样发送;
42
41
  6. 从单聊取得应用作用域内准确的 `open_id`,只把该身份配置为 owner;
43
- 7. 更新 `web/cordis.patch.yml`,启用 channel 并添加精确 ingress/reply/credential 规则;传入 `--allow-agent-tools` 时,还会创建本地 foreground 与精确 Delivery 主体的 capability/工具规则;随后运行 `dsh --profile web --dump-config` 自检;
44
- 8. 安装并启动该 profile 的用户级常驻服务:macOS 使用 launchd,Linux 使用 systemd,Windows 使用 best-effort Task Scheduler;命令均为 `dsh --profile web --no-open`。
42
+ 7. 更新 `web/cordis.patch.yml`,启用 channel 并添加精确 ingress/reply/credential 规则;首次绑定 owner 默认创建本地 foreground 与精确 Delivery 主体的 capability/工具规则;随后运行 `dsh --profile web --dump-config` 自检;
43
+ 8. 安装并启动该 profile 的用户级常驻服务:macOS 使用 launchd,Linux 使用 systemd,Windows 使用 best-effort Task Scheduler;命令均为 `dsh --profile web --no-open`;
44
+ 9. 将同一应用以 stdin 凭据接入官方 `lark-cli` 的 DSH 专用配置,申请其全部业务域用户授权,核对服务端返回的用户身份与刚绑定的 owner 一致,再生成可动态读取 CLI 技能的原生 DSH 技能。
45
45
 
46
- 飞书授权只建立应用凭据和 owner 绑定。插件仍运行在 DSH Host 内;安装到 `web` profile 时,向导默认让该 profile 在后台常驻,不需要保持浏览器打开,也不需要另行运行 `dsh web`。
46
+ 应用授权与用户业务授权在安装流程中完成。插件仍运行在 DSH Host 内;安装到 `web` profile 时,向导默认让该 profile 在后台常驻,不需要保持浏览器打开,也不需要另行运行 `dsh web`。
47
47
 
48
48
  ### 官方一键授权的范围
49
49
 
50
50
  一键模式使用 OAuth 2.0 Device Authorization Grant。只传 `--create-app` 时,确认页同时提供“选择已有应用”和“创建新应用”;同时传 `--app-id` 时,只更新该已有应用。两种方式都会先显示权限、事件与回调增量,确认后才生效。
51
51
 
52
- 向导不传 `createOnly`,并使用 `addons.preset: false`,不会采用官方默认智能体模板中与本 channel 无关的文档、Wiki、群管理和批量消息权限。确认页只申请:
52
+ 向导不传 `createOnly`,默认使用官方智能体应用权限模板(`addons.preset: true`),并增量补齐下列消息通道权限。传 `--no-business-tools` 则保留仅消息通道的 `preset: false`:
53
53
 
54
54
  - `application:bot.basic_info:read`:连接时取得机器人身份;
55
55
  - `im:message.p2p_msg:readonly`、`im:message.group_at_msg:readonly`:接收私聊和群内 @ 消息;
@@ -59,7 +59,17 @@ pnpm --filter @dsh-enhanced/lark-channel run onboard --profile web --create-app
59
59
  - `im.message.receive_v1`:消息事件;
60
60
  - `card.action.trigger`:审批卡片、模型级联选择和最终确认按钮。
61
61
 
62
- Calendar 不在默认范围内。只有需要精确日历变更触发器时,才用 `--create-app --calendar-readonly` 更新应用,确认新增的 `calendar:calendar:readonly` 并发布版本;随后在 Lark Channel profile 配置的 `allowedCalendarIds` 填入已授权的 exact Calendar ID。此范围只允许读取,且不会让机器人自动枚举用户日历或让任意 Host 调用 Calendar API。
62
+ 消息通道自身的精确日历触发器仍需 `--create-app --calendar-readonly` 和 `allowedCalendarIds`;这与业务 CLI 在用户实际授权下提供的日历功能是两条独立路径。应用模板和 `auth login --domain all` 都不代表租户已经批准平台上的所有权限;后者申请 CLI 当前已知的业务域用户 scopes,平台限制和 CLI 的批量授权排除项仍然适用。
63
+
64
+ ### 自动业务工具接入
65
+
66
+ 安装器优先复用满足契约的本机 CLI,缺失时下载官方 npm `latest` 对应的精确稳定版本到 `$DSH_HOME/.dsh-enhanced/tools/lark-cli`。优先下载 GitHub release,失败时尝试官方安装器使用的镜像;两条路径都验证 npm SHA512 与包内记录的 release SHA256,不执行 npm 安装脚本或修改全局 npm。已验证的受管 CLI 可在后续安装中复用。
67
+
68
+ 每个 DSH profile/account 的配置与授权记录保存在 `$DSH_HOME/lark-business`;App Secret 仅通过 stdin 交给 CLI。每次 CLI 调用都固定绝对命令、named profile、配置目录,并清除会抢占身份的外部 Agent/CLI 环境变量。Linux 凭据数据也存入专用目录;macOS/Windows 使用 CLI 的原生系统钥匙环,同一应用/用户的条目可能与其它 CLI 实例共享,不能视为独立凭据隔离。
69
+
70
+ 首次用户授权会展示链接与二维码。授权完成后同时检查 CLI 授权结果、已验证状态,以及只读 `user_info` 的服务端 `open_id`;只接受绑定的 owner。CLI 明确报告登录完成但部分 scope 未获批时,向导保存申请、已授予和缺失清单,展示缺失权限并接入实际已授权的业务工具;非零退出码本身不等于登录失败,也不能单独证明登录成功。若身份读回或技能发布中断,只有已持久化完整授权结果的 pending 记录可在重跑时复查身份并续接,不再次请求扫码。已有有效授权在重装时更新应用凭据并重新核对身份;旧记录缺少权限清单时明确标为未知,不推断全部获批。认证未完成、CLI 返回不明错误或范围证据丢失时不启用新的业务技能,已经提交的消息通道配置会保留。同一 owner/app 的授权更新失败保留原有技能;更换 owner、app 或 account,以及显式关闭业务工具时,会在通道 owner 交接前撤下旧受管技能入口。撤下入口不代表撤销平台 token,原凭据配置仍保留。若后续通道配置事务失败并回滚,旧技能不会自动重新发布;按原绑定重跑向导并核对身份后可恢复入口。
71
+
72
+ 生成的 `$DSH_HOME/skills/lark-business-*/SKILL.md` 由 DSH 原生文件系统技能提供者发现,按需读取当前 CLI 的 `skills list/read` 与 `schema`,无需复制一份易过期的 API 指南。技能明确记录适用的 profile/account/app/owner,不携带凭据,也不新增 Agent 循环。DSH 的用户技能目录对同一 DSH_HOME 的 profile 可见;这属于同一操作系统用户的 Full access 信任范围,不提供跨 profile 的凭据隔离。官方业务能力与权限机制参考 [larksuite/cli](https://github.com/larksuite/cli)。
63
73
 
64
74
  事件与回调由官方流程预置为 WebSocket 长连接,不需要公网 callback URL。实现依据见飞书的[一键创建智能体应用](https://open.larkoffice.com/document/mcp_open_tools/integrating-agents-with-feishu/overview)和 Node SDK 的 [`registerApp` 文档](https://github.com/larksuite/node-sdk/blob/main/README.zh.md#%E4%B8%80%E9%94%AE%E5%88%9B%E5%BB%BA%E5%BA%94%E7%94%A8)。
65
75
 
@@ -80,13 +90,14 @@ Calendar 不在默认范围内。只有需要精确日历变更触发器时,
80
90
 
81
91
  单独使用 `--app-id` 时,向导通过当前系统的安全输入读取 App Secret,适合已经自行配置控制台的应用。省略 `--create-app` 和 `--app-id` 时,向导会询问 App ID;直接回车进入一键选择/创建。
82
92
 
83
- 重复执行会更新同一 account 的受管配置,不会重复添加规则或 handle。Agent 能力策略是显式三态:
93
+ 重复执行会更新同一 account 的受管配置,不会重复添加规则或 handle。首次绑定 owner 默认开放已安装的 Agent 工具能力;已有应用或 owner 配置保留现状,不会因重装重新开启已关闭的工具:
84
94
 
85
- - 不传参数:保留现状;
95
+ - 不传参数:首次配置默认开放,已有配置保留现状;
96
+ - `--preserve-agent-tools`:始终保留现有规则,首次配置也不新增通用工具授权;
86
97
  - `--allow-agent-tools`:写入本地 foreground 与精确 Delivery 主体的通用 capability 可达性规则,并保留外部主体工具级 allow/deny;
87
98
  - `--disable-agent-tools`:删除向导为该 account 管理的这些规则。
88
99
 
89
- 普通重跑不会意外授权或撤权。profile 校验失败时会在进程内恢复原内容,不保留备份文件。
100
+ 本地工具授权不等于取得全部飞书平台权限;当前 channel 的业务接口仍限于其已实现能力,应用和用户授权以飞书平台结果为准。普通重跑不会意外授权或撤权。profile 校验失败时会在进程内恢复原内容,不保留备份文件。
90
101
 
91
102
  ## 只刷新 Agent Policy
92
103
 
@@ -167,6 +178,8 @@ systemctl --user restart dsh-profile-web.service
167
178
 
168
179
  若自行管理进程,在首次向导中加入 `--no-service`,然后用 supervisor 运行 `dsh --profile web --no-open`。不要同时启动前台与系统服务的两个相同 profile,否则 Web 端口和飞书长连接会竞争。
169
180
 
181
+ 同一个 Delivery 数据库也不能由不同 profile 的消息调度器同时消费。即使另一个 profile 已关闭 Lark,只要其 Delivery 调度器仍启用,就可能抢到消息并按另一套 Policy 拒绝处理。向导会检查其他已配置 profile 的有效 Delivery 路径与调度状态;不能仅凭另一个服务暂时停止判断没有冲突。请在旧 profile 的完整 Delivery 配置中关闭 `schedulerEnabled`,或为独立部署配置不同数据库;保留其余配置字段。向导不会替你关闭其他服务、清空队列或撤销旧任务。
182
+
170
183
  ### macOS
171
184
 
172
185
  向导创建 `~/Library/LaunchAgents/ai.deepseek.dsh.profile.web.plist`,登录后自动启动并在异常退出后拉起。配置只包含 `DSH_HOME` 与不含相对目录的 `PATH`,不会复制当前 shell 的 token、password 或其他环境变量。
@@ -181,7 +194,7 @@ launchctl bootout gui/$(id -u)/ai.deepseek.dsh.profile.web
181
194
 
182
195
  ### Linux
183
196
 
184
- 向导创建私有的 `~/.config/systemd/user/dsh-profile-web.service`,只配置 DSH 所需路径及 Secret Service 可能需要的用户 D-Bus/XDG 定位。OAuth 前会检查 systemd user manager,并尝试为当前用户启用 linger,以便 SSH 注销后继续运行。若系统需要管理员授权,向导会在修改飞书应用前停止,并显示唯一需要执行的命令:
197
+ 向导创建私有的 `~/.config/systemd/user/dsh-profile-web.service`,配置 DSH 所需路径及 Secret Service 可能需要的用户 D-Bus/XDG 定位。若已通过 [RSI 配置器](rsi-setup.md)登记发布/Host 配置路径,安装或重装服务会自动加载这些持久绑定;不会复制任意 shell 环境或 Secret。OAuth 前会检查 systemd user manager,并尝试为当前用户启用 linger,以便 SSH 注销后继续运行。若系统需要管理员授权,向导会在修改飞书应用前停止,并显示唯一需要执行的命令:
185
198
 
186
199
  ```sh
187
200
  sudo loginctl enable-linger "$(id -u)"
@@ -254,7 +267,7 @@ OAuth 前的 canary 不读取、写入或显示 App Secret。出现钥匙环解
254
267
 
255
268
  ## 手工配置飞书应用
256
269
 
257
- 这一流程只适用于手工输入 `--app-id` 的路径;官方一键路径会预置机器人、最小权限、消息事件和卡片回调。选择已有应用时只增量添加配置,不删除现有权限。
270
+ 这一流程只适用于手工输入 `--app-id` 的路径;官方一键路径会预置机器人、所选应用权限模板、消息事件和卡片回调。选择已有应用时只增量添加配置,不删除现有权限。
258
271
 
259
272
  1. 在[飞书开放平台](https://open.feishu.cn/app)创建“企业自建应用”,复制 `App ID` 与 `App Secret`;
260
273
  2. 在“添加应用能力”中开启“机器人”;
@@ -1,5 +1,7 @@
1
1
  # 分级自治成长激活器
2
2
 
3
+ 这是显式选择的固定 Recovery runbook。普通 `supervised` 安装直接使用[日常使用自迭代配置](rsi-setup.md),不再自动调用本激活器;以下 preview、健康门与回滚合同继续适用于显式激活。
4
+
3
5
  `dsh-supervised-growth-setup --profile web` 在完成 Lark owner onboarding 后,把
4
6
  `supervised-growth/v2` 作为无模型的 `assistant-recovery` Host runbook 激活。它不把恢复步骤、
5
7
  目标 scope、owner route 或 Policy 参数交给模型选择。另有独立、受限的 adoption analyst;它不参与
package/lib/adapter.d.ts CHANGED
@@ -109,6 +109,9 @@ export declare class LarkDeliveryAdapter implements DeliveryAdapter {
109
109
  private readonly pendingUserQuestions;
110
110
  private readonly userQuestionAnswerEvents;
111
111
  private readonly toolApprovalTombstones;
112
+ private readonly toolApprovalUpdates;
113
+ private closing;
114
+ private presentationGeneration;
112
115
  private readonly modelSelectionUpdates;
113
116
  private state;
114
117
  private gapGeneration;
@@ -140,6 +143,9 @@ export declare class LarkDeliveryAdapter implements DeliveryAdapter {
140
143
  private tryAnswerToolApproval;
141
144
  private armToolApprovalTombstone;
142
145
  private deleteToolApprovalTombstone;
146
+ private toolApprovalResult;
147
+ private updateToolApprovalResult;
148
+ private drainToolApprovalUpdates;
143
149
  private settleToolApproval;
144
150
  private cancelPendingToolApprovals;
145
151
  private addReaction;
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EACjB,6BAA6B,EAC7B,eAAe,EACf,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,2BAA2B,EAC3B,2BAA2B,EAC3B,2BAA2B,EAC3B,2BAA2B,EAE3B,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,oBAAoB,EACpB,6BAA6B,EAC7B,4BAA4B,EAC5B,cAAc,EACd,qBAAqB,EACtB,MAAM,kCAAkC,CAAA;AAuCzC,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EAEtB,KAAK,aAAa,EACnB,MAAM,YAAY,CAAA;AAEnB,MAAM,WAAW,2BAA2B;IAC1C,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,cAAc,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IAC7E,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,EAAE,MAAM,CAAA;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,UAAU,GAAG,UAAU,CAAA;IACjC,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;IAClB,6EAA6E;IAC7E,WAAW,CAAC,IAAI,IAAI,CAAA;IACpB,+EAA+E;IAC/E,cAAc,CAAC,IAAI,IAAI,CAAA;IACvB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,eAAe,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAA;IAClC,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,cAAc,CAAC,CAAC,KAAK,EAAE,2BAA2B,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC/E,yBAAyB,CAAC,CAAC,KAAK,EAAE,2BAA2B,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;IAClH,oBAAoB,CAAC,CAAC,KAAK,EAAE,6BAA6B,GAAG,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAA;IACjH,mBAAmB,CAAC,CAClB,KAAK,EAAE,6BAA6B,EACpC,MAAM,EAAE,WAAW,GAClB,4BAA4B,GAAG,SAAS,GAAG,OAAO,CAAC,4BAA4B,GAAG,SAAS,CAAC,CAAA;IAC/F,yBAAyB,CAAC,CAAC,KAAK,EAAE;QAChC,WAAW,EAAE,MAAM,CAAA;QACnB,eAAe,EAAE,MAAM,CAAA;QACvB,cAAc,EAAE,MAAM,CAAA;QACtB,aAAa,EAAE,MAAM,CAAA;QACrB,SAAS,EAAE,MAAM,CAAA;QACjB,cAAc,EAAE,MAAM,CAAA;QACtB,SAAS,EAAE,MAAM,CAAA;QACjB,SAAS,EAAE;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAA;QAC7E,QAAQ,EAAE,MAAM,CAAA;QAChB,SAAS,EAAE,MAAM,CAAA;QACjB,iBAAiB,EAAE,MAAM,CAAA;QACzB,oBAAoB,EAAE,MAAM,CAAA;QAC5B,WAAW,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAA;KACrC,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC9B,eAAe,CAAC,CAAC,KAAK,EAAE;QACtB,WAAW,EAAE,MAAM,CAAA;QACnB,cAAc,EAAE,MAAM,CAAA;QACtB,aAAa,EAAE,MAAM,CAAA;QACrB,SAAS,EAAE,MAAM,CAAA;QACjB,SAAS,EAAE;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAA;KAC9E,GAAG,iBAAiB,GAAG,SAAS,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAAA;IAC1E,kBAAkB,CAAC,CAAC,KAAK,EAAE;QACzB,WAAW,EAAE,MAAM,CAAA;QACnB,cAAc,EAAE,MAAM,CAAA;QACtB,aAAa,EAAE,MAAM,CAAA;QACrB,SAAS,EAAE,MAAM,CAAA;QACjB,SAAS,EAAE;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAA;QAC7E,QAAQ,EAAE,gBAAgB,CAAA;QAC1B,IAAI,EAAE,aAAa,CAAA;KACpB,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,gBAAgB,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,gBAAgB,CAAA;KAAE,CAAC,CAAA;CAC3G;AA4XD,qBAAa,mBAAoB,YAAW,eAAe;IAgCvD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAhC5B,QAAQ,CAAC,OAAO,UAAS;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,YAAY,EAAE,eAAe,CAAC,cAAc,CAAC,CAAA;IAEtD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAc;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmC;IAC/D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAsC;IACrE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAoB;IACnD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAsC;IACrE,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAiD;IAC3F,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA4C;IACjF,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA2C;IAC/E,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAiD;IAC3F,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAuC;IACvE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA0C;IAC7E,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAQ;IAC1C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAuB;IACzD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAyC;IAC9E,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAyC;IAC9E,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAmD;IAC5F,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAA2C;IAClF,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAkE;IACtG,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,sBAAsB,CAAI;IAClC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAiD;IACvF,OAAO,CAAC,KAAK,CAA6C;IAC1D,OAAO,CAAC,aAAa,CAAI;IACzB,OAAO,CAAC,aAAa,CAAoC;gBAGtC,MAAM,EAAE,iBAAiB,EACzB,SAAS,EAAE,aAAa,EACzC,OAAO,GAAE,kBAAuB;IAoC5B,KAAK,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAkF1E,MAAM,IAAI,iBAAiB;IAQ3B,OAAO,CAAC,cAAc;IAMhB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,sBAAsB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjE,mBAAmB,CACvB,KAAK,EAAE,QAAQ,CAAC,2BAA2B,CAAC,EAC5C,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,2BAA2B,CAAC;IAyIjC,mBAAmB,CACvB,KAAK,EAAE,QAAQ,CAAC,2BAA2B,CAAC,EAC5C,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,2BAA2B,CAAC;IAkHjC,gBAAgB,CACpB,KAAK,EAAE,QAAQ,CAAC,qBAAqB,CAAC,EACtC,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,6BAA6B,CAAC;IAgDnC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAuIvF,kBAAkB,CACtB,iBAAiB,EAAE,MAAM,EACzB,YAAY,EAAE,QAAQ,CAAC,oBAAoB,CAAC,EAC5C,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,IAAI,CAAC;IA4BhB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,gBAAgB;IAkDxB,OAAO,CAAC,yBAAyB;IAMjC,OAAO,CAAC,uBAAuB;YAYjB,uBAAuB;IAuCrC,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,wBAAwB;IAehC,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,qBAAqB;IAwB7B,OAAO,CAAC,0BAA0B;IAMlC,OAAO,CAAC,wBAAwB;IAchC,OAAO,CAAC,+BAA+B;IASvC,OAAO,CAAC,6BAA6B;YAKvB,qBAAqB;IA0CnC,OAAO,CAAC,qBAAqB;IA8B7B,OAAO,CAAC,wBAAwB;IAgChC,OAAO,CAAC,2BAA2B;IAOnC,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,wBAAwB;YA+BlB,wBAAwB;IAYtC,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,0BAA0B;YAapB,WAAW;IAQzB,OAAO,CAAC,yBAAyB;IAIjC,OAAO,CAAC,2BAA2B;IASnC,OAAO,CAAC,8BAA8B;YAoDxB,gBAAgB;YA+FhB,4BAA4B;IA8C1C,OAAO,CAAC,wBAAwB;YAsClB,wBAAwB;YAiGxB,uBAAuB;CA+JtC"}