personal-bot 0.2.5 → 0.2.8

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 (69) hide show
  1. package/README.md +48 -14
  2. package/README.zh-CN.md +47 -13
  3. package/docs/README.md +4 -2
  4. package/docs/agent-collaboration.md +4 -4
  5. package/docs/capability-design.md +12 -6
  6. package/docs/dsh-implementation-plan.md +10 -8
  7. package/docs/dsh-support-proposal.md +6 -22
  8. package/docs/dsh.en.md +333 -0
  9. package/docs/dsh.md +346 -48
  10. package/docs/file-storage.md +1 -1
  11. package/docs/history.md +2 -0
  12. package/docs/installation-design.md +7 -4
  13. package/docs/model-context.md +60 -0
  14. package/docs/model-instruction-guidelines.md +51 -0
  15. package/docs/release.md +10 -6
  16. package/docs/subagent-upgrade-proposal.md +4 -4
  17. package/docs/technical-design.md +21 -15
  18. package/docs/validation.md +74 -7
  19. package/lib/dsh.js +4 -0
  20. package/lib/extension/dsh/agent-events.js +1 -1
  21. package/lib/extension/dsh/agent-runtime.js +8 -5
  22. package/lib/integrations/dsh/resources.d.ts +1 -1
  23. package/lib/integrations/dsh/resources.js +14 -14
  24. package/lib/integrations/dsh/session.js +1 -0
  25. package/lib/integrations/installation/pi-bridge.js +9 -9
  26. package/lib/integrations/team-context.js +7 -3
  27. package/lib/services/agents/agent-notices.js +2 -2
  28. package/lib/services/agents/team-service.js +1 -1
  29. package/lib/tools/agents/contract.d.ts +1 -1
  30. package/lib/tools/agents/contract.js +7 -7
  31. package/lib/tools/agents/dsh-contract.js +4 -4
  32. package/lib/tools/history/contract.d.ts +1 -1
  33. package/lib/tools/history/contract.js +2 -2
  34. package/lib/tools/teams/contract.d.ts +2 -2
  35. package/lib/tools/teams/contract.js +11 -11
  36. package/npm-shrinkwrap.json +96 -71
  37. package/package.json +35 -31
  38. package/python/README.md +1 -1
  39. package/resources/agents/coordinator.md +5 -33
  40. package/resources/agents/general-purpose.md +3 -15
  41. package/resources/prompts/history-summary.md +1 -1
  42. package/resources/prompts/team-member.md +7 -0
  43. package/resources/prompts/workspace.md +13 -24
  44. package/resources/references/compute-finance.md +22 -0
  45. package/resources/references/compute.md +11 -88
  46. package/resources/references/task-conductor.md +20 -15
  47. package/resources/skills/project-maintenance/SKILL.md +9 -11
  48. package/resources/skills/provider-connections/SKILL.md +7 -7
  49. package/scripts/README.md +1 -1
  50. package/src/dsh.ts +4 -0
  51. package/src/extension/agent-events.ts +17 -4
  52. package/src/extension/command.ts +1 -1
  53. package/src/extension/dsh/agent-events.ts +1 -1
  54. package/src/extension/dsh/agent-runtime.ts +7 -6
  55. package/src/extension/events.ts +14 -9
  56. package/src/extension/subagent-entry.ts +24 -16
  57. package/src/integrations/dsh/resources.ts +17 -14
  58. package/src/integrations/dsh/session.ts +2 -0
  59. package/src/integrations/installation/pi-bridge.ts +9 -7
  60. package/src/integrations/pi/agent-context.ts +1 -1
  61. package/src/integrations/team-context.ts +7 -3
  62. package/src/services/agents/agent-notices.ts +2 -2
  63. package/src/services/agents/team-service.ts +1 -1
  64. package/src/tools/agents/contract.ts +7 -7
  65. package/src/tools/agents/dsh-contract.ts +4 -4
  66. package/src/tools/history/contract.ts +2 -2
  67. package/src/tools/register.ts +1 -7
  68. package/src/tools/teams/contract.ts +11 -11
  69. package/resources/prompts/tool-guidelines.md +0 -3
package/README.md CHANGED
@@ -4,7 +4,7 @@ English | [简体中文](README.zh-CN.md)
4
4
 
5
5
  **A personal assistant connecting knowledge, research, and action.**
6
6
 
7
- Personal Bot provides a workspace-scoped [Pi](https://pi.dev) extension and a native Web integration for a fixed dsh release. It supports learning, project work, research, decision support, investment analysis, and explicitly authorized operations. See the [dsh guide](docs/dsh.md) for its usage and acceptance limits.
7
+ Personal Bot provides a workspace-scoped [Pi](https://pi.dev) extension and a native dsh Web integration. It supports learning, project work, research, decision support, investment analysis, and explicitly authorized operations. See the [dsh guide](docs/dsh.en.md) for installation, commands, and acceptance limits.
8
8
 
9
9
  The model handles analysis, coordination, and native tools. Personal Bot adds workspace materials, specialist collaboration, and Python environment preparation. It does not create a second main agent or start tasks or trades automatically.
10
10
 
@@ -31,7 +31,7 @@ pbot setup
31
31
 
32
32
  This global npm installation provides the command; it does not register a global Pi extension. `pbot setup` uses the globally installed installer version. Update it with npm, or use `npx personal-bot@latest setup` for the latest installer. The npx command does not install itself globally.
33
33
 
34
- A core failure stops startup. An optional plugin failure allows the other plugins to proceed and is reported before you choose whether to start Pi. Completed steps remain in place; fix the cause and rerun setup. There is no automatic rollback across package managers. See the [installation design](docs/installation-design.md) for scope and recovery rules.
34
+ A core failure stops startup. If a configured Git or local directory source is missing or has no identifiable package name, setup stops and asks you to repair the source through Pi; it preserves the declaration. Existing standalone extension files remain supported. An optional plugin failure allows the other plugins to proceed and is reported before you choose whether to start Pi. Completed steps remain in place; fix the cause and rerun setup. There is no automatic rollback across package managers. See the [installation design](docs/installation-design.md) for scope and recovery rules.
35
35
 
36
36
  ### Install directly with Pi
37
37
 
@@ -44,7 +44,7 @@ pi
44
44
 
45
45
  `--local` saves the package declaration in the project's `.pi/settings.json`. Review and grant project trust when Pi prompts you, and start Pi from the workspace root. Loading Personal Bot enables its roles, skills, tools, and shared Python environment preparation. There is no separate activation switch.
46
46
 
47
- Use `pi install` without `--local` only when you want the extension in every Pi session. Use Pi package management or `pi config` to adjust an existing installation's scope. Do not load both the npm and source installations. The existing development and test baseline is Pi 1.4.0; installer acceptance limits are recorded in [validation](docs/validation.md).
47
+ Use `pi install` without `--local` only when you want the extension in every Pi session. Use Pi package management or `pi config` to adjust an existing installation's scope. Do not load both the npm and source installations. The development and test baseline is Pi 1.5.0; installer acceptance limits are recorded in [validation](docs/validation.md).
48
48
 
49
49
  ### Install from source
50
50
 
@@ -70,35 +70,69 @@ Replace the example paths with your actual paths. A local installation loads the
70
70
 
71
71
  ### Use with dsh
72
72
 
73
- The integration targets `@deepseek-ai/dsh@0.2.2-rc.1` and requires Node.js 24.9+. Build a tarball from the current source with normal `npm pack`, create a separate `pbot` Web profile, and install it with `dsh plugin --profile pbot add <tarball>`. Follow the [dsh guide](docs/dsh.md); `pbot setup` remains the Pi installer.
73
+ Use the latest dsh release with Node.js 24.9+ (or the newer minimum declared by that release), npm, pnpm, and Python 3.11+. `pbot setup` installs for Pi; dsh uses its native profiles and plugin manager. Run in a terminal:
74
74
 
75
- The bare `/pbot` action opens workspace, specialist, team, and history management. Specialists use native Agent/Session instances in the server process. Refreshing a page does not stop accepted work. Both hosts query the saved history archives while each maintains its own source. Models, authentication, and MCP remain under native host configuration. Real model workflows and the latest Linux checks remain subject to the [validation record](docs/validation.md).
75
+ ```bash
76
+ npm install -g @deepseek-ai/dsh@latest pnpm@latest
77
+ dsh --version
78
+ pnpm --version
79
+ # First creation only: this replaces an existing profile of the same name.
80
+ dsh --profile pbot --from-default-profile web --dump-config
81
+ dsh plugin --profile pbot add personal-bot@latest
82
+ dsh --profile pbot
83
+ ```
84
+
85
+ The last command starts the Web server and normally opens a browser. Select your workspace and main session there, then configure models and authentication in dsh's native settings. In the chat input, use `/pbot` to open the workspace, specialist, team, and history tabs; `/pbot status` checks the workspace and Python environment; `/pbot init` optionally creates missing material directories. Loading the plugin and these checks do not call a model.
86
+
87
+ For subsequent starts, run `dsh --profile pbot`. After stopping active specialists and the server, update the host and plugin separately:
88
+
89
+ ```bash
90
+ npm install -g @deepseek-ai/dsh@latest
91
+ dsh plugin --profile pbot update personal-bot --latest
92
+ dsh plugin --profile pbot list personal-bot --depth 0
93
+ dsh --profile pbot
94
+ ```
95
+
96
+ Do not repeat `--from-default-profile` during updates. For the desktop application, install and manage `personal-bot@latest` through its native Plugins page; the npm CLI's `pbot` profile and the application's `desktop` profile are separate.
97
+
98
+ The [full English guide](docs/dsh.en.md) ([中文](docs/dsh.md)) covers launcher options, plugin inspection and removal, source tarballs, every `/pbot` subcommand, JSON parameters, and examples. Specialists use native Agent/Session instances in the server process; refreshing a page does not stop accepted work. Pi and dsh query shared history archives while owning their own sessions, models, authentication, and MCP configuration. The tested dsh baseline is `0.2.2-rc.1`; `latest` can change and does not imply that future releases have passed acceptance. See the [validation record](docs/validation.md).
76
99
 
77
100
  ### Optional: Task Conductor
78
101
 
79
- For scheduled tasks, recurring workflows, or DAGs, install `task-conductor-plugin`. This integration package is distinct from the `task-conductor` service and is not required for Personal Bot. It requires Pi 1.4.0+ with native MCP support and npm.
102
+ For scheduled tasks, recurring workflows, or DAGs, use the optional `task-conductor-plugin` and its shared `using-task-conductor` skill. The plugin and the `task-conductor` service are installed separately. Follow the [upstream integration guide](https://github.com/realqiyan/task-conductor/blob/master/docs/host-integrations.md) for service setup, connection settings, and updates.
80
103
 
81
- Check `pi list` first. If the package is already installed but its skill is missing, check resource configuration and reload rather than installing it again. Review the [upstream integration guide](https://github.com/realqiyan/task-conductor/blob/master/docs/host-integrations.md), then run from the workspace root:
104
+ **Pi:** Check `pi list` for an existing installation and its resource settings. For the published Pi integration, run from the workspace root:
82
105
 
83
106
  ```bash
84
107
  pi install --local npm:task-conductor-plugin
85
108
  ```
86
109
 
87
- In Pi, run `/reload`, then `/skill:using-task-conductor`. With your confirmation, the skill guides service installation, `task-conductor setup`, and native MCP configuration. Installing the plugin alone does not install the service. Keep credentials in your terminal or private files, not in chat.
110
+ For unreleased plugin changes, use `pi install --local /absolute/path/to/task-conductor/plugin` instead. Keep one source enabled. Run `/reload` in Pi, then `/skill:using-task-conductor`. The skill covers service installation, `task-conductor setup`, and Pi's native MCP registration. `--local` limits plugin loading; choose MCP scope separately and reuse existing connections.
111
+
112
+ **dsh:** The native Host integration is included in the unpublished Task Conductor `0.1.6` release candidate. Until publication, build the plugin and matching service from that source, then install the plugin tarball into your existing Web profile:
113
+
114
+ ```bash
115
+ cd /absolute/path/to/task-conductor
116
+ npm run pack:plugin
117
+ dsh plugin --profile pbot add /absolute/path/to/task-conductor/task-conductor-plugin-<version>.tgz
118
+ dsh plugin --profile pbot list task-conductor-plugin --depth 0
119
+ ```
120
+
121
+ Use the actual tarball path printed by the packaging command. Restart `dsh --profile pbot`, open the main session, and invoke `/using-task-conductor`. The plugin provides the shared skill through native filesystem discovery and creates a native MCP connection for each root main session, using that session's working directory. Tools retain names such as `mcp__task-conductor__executor_list`; avoid adding a duplicate manual connection. The desktop application's native Plugins page accepts the same local tarball; its profile is separate. See the [dsh Task Conductor guide](docs/dsh.md#task-conductor) for the matching local service build and setup.
88
122
 
89
- For an older integration package, check its source and scope with `pi list`, review upstream upgrade instructions, and explicitly remove the old declaration before installing its replacement. Update the plugin and service separately. Before a service upgrade, check active tasks, stop the service, and back up its data. Follow upstream MCP instructions; do not automatically migrate configuration or delete history.
123
+ The service keeps its own coordinator model configuration and `pi-durable` runtime. Using dsh as the host does not require the interactive Pi CLI. To also run task nodes with dsh, register the canonical absolute dsh executable through Task Conductor's admin CLI or Web interface as custom executor `dsh-acp`, with arguments `["--profile", "acp"]`. Follow the upstream skill's [custom ACP instructions](https://github.com/realqiyan/task-conductor/blob/master/plugin/skills/using-task-conductor/references/custom-acp.md); `dsh` is not a built-in executor ID. Nodes use their own dsh profile, authentication, tools, and environment.
90
124
 
91
- `--local` limits plugin loading, not service data access. Choose MCP configuration scope separately, and keep existing connections without duplicate registration. Use `/mcp` or `pi mcp list` to check actual tools, then follow the skill's read-only validation steps. Do not create model tasks just to test installation. A working connection does not prove model authentication or task delivery.
125
+ Notifications return to the originating persistent host session; resume that session to receive pending events. Closing Pi or dsh does not stop service tasks. Update the plugin and service separately, following upstream instructions to check active work, stop the service, and back up its data. Keep credentials in your terminal or private files. Use the skill's native tool discovery and read-only connection checks; these do not establish successful model execution or task delivery.
92
126
 
93
127
  ## Optional workspace preparation
94
128
 
95
- Personal Bot works without initialization. Run `/pbot init` only if you want the standard material layout. It creates missing material directories and a missing root `AGENTS.md`; it does not overwrite files or start model tasks. Activation does not depend on confirmation or reload after initialization.
129
+ Personal Bot works without initialization. Run `/pbot init` only if you want the standard material layout. It creates missing material directories and a missing root `AGENTS.md`; it does not overwrite files or start model tasks. In Pi, the new `AGENTS.md` enters native context after `/reload` or the next startup. The bundled directory guide is available from the first task.
96
130
 
97
131
  Keep goals, markets, preferences, and working agreements in ordinary documents. Ask the assistant to organize them as needed. For external tools, provide the CLI/MCP name, purpose, official documentation, or configuration location—not credential values.
98
132
 
99
133
  ## Daily use
100
134
 
101
- Describe the task directly: organize project materials, compare research findings, delegate an independent review, or run calculations. No fixed workflow is required. The command table and process details below describe Pi; see the [dsh guide](docs/dsh.md) for its Web interface and commands.
135
+ Describe the task directly: organize project materials, compare research findings, delegate an independent review, or run calculations. No fixed workflow is required. The command table and process details below describe Pi; see the [dsh guide](docs/dsh.en.md) for its Web interface and commands.
102
136
 
103
137
  | Command | Purpose |
104
138
  | --- | --- |
@@ -116,7 +150,7 @@ Describe the task directly: organize project materials, compare research finding
116
150
  - **Research and analysis:** Ask the assistant to synthesize evidence, explain conflicts, check calculations and definitions, or identify assumptions to validate first.
117
151
  - **Independent sub-sessions:** Personal Bot supports tmux and independent Pi sessions; install tmux on the system to use them. `pbot_agent start` returns immediately; without a message, prompts, or files it creates an idle process without calling a model. Task completion produces a notification. Options cover models, directories, files, tools, and resources. Operations include send, follow-up, rename, status, read, stop, and explicit resume; there is no foreground/background flag or wait operation. `/pbot agents` shows active agents and can open their TUI. Main-session reload preserves running agents; exit or session switching stops them and retains history. Sub-sessions use native CLI/MCP within their delegated scope. See [specialist collaboration](docs/agent-collaboration.md).
118
152
  - **Teams:** `pbot_team` groups existing agents for `roundRobin` discussion or `parallel` rounds. Members exchange original messages through `pbot_team_message`; ordinary posts do not wake models. A running team reserves its members. Pause and drain in-flight work before private messages; reload pauses teams without replaying requests. The first release uses fixed membership and bounded rounds, not dynamic ask/reply wake-ups. See [specialist collaboration](docs/agent-collaboration.md).
119
- - **Scheduled and durable tasks:** The main session uses optional Task Conductor directly through native MCP, its `using-task-conductor` skill, and actual tool contracts. Without it, ordinary Personal Bot features still work, but scheduling is unavailable. Personal Bot adds no durable task scheduler or forwarding layer. Query and stop external tasks separately from sub-sessions. Cancelling the current run does not stop future recurrences, and closing Pi does not imply that external tasks stopped.
153
+ - **Scheduled and durable tasks:** The main session uses optional Task Conductor directly through native MCP, its `using-task-conductor` skill, and actual tool contracts. Without it, ordinary Personal Bot features still work, but scheduling is unavailable. Personal Bot adds no durable task scheduler or forwarding layer. Query and stop external tasks separately from sub-sessions. Cancelling the current run does not stop future recurrences, and closing Pi or dsh does not imply that external tasks stopped.
120
154
  - **Python:** All workspaces share one dedicated venv for the current user. Loading Personal Bot creates or updates it with locked dependencies and activates it in the current Pi process. Main and specialist sessions use `python` or `python3` through Bash. Failures are reported; fix the cause and retry with `/pbot python setup`. System Python, external terminals, existing scripts, and historical results are not changed. Shared dependency updates affect other workspaces, so stop relevant scripts before changing plugin versions or retrying setup. See the [Python guide](python/README.md) and [computation reference](resources/references/compute.md).
121
155
  - **Material maintenance:** Ask to organize project materials, reproduce a report using its previous definitions, or review delivery and close a task. The [project maintenance skill](resources/skills/project-maintenance/SKILL.md) updates the current task and affected materials within your requested scope. Current guidance is consolidated by topic, with reusable methods and analysis definitions extracted from project conclusions. Sources and important decisions remain traceable. Cleanup removes unnecessary temporary outputs within scope, not formal materials, history, or backups.
122
156
 
@@ -142,7 +176,7 @@ Personal Bot stores no private activation state in the workspace. Pi owns its co
142
176
 
143
177
  ## Updates and historical data
144
178
 
145
- Current release: **0.2.5**. Personal Bot maintains no workspace format, initialization state, or workspace upgrade mechanism. Update the plugin through its native host package manager. For a local Pi installation, update the source, run `npm ci --ignore-scripts` if dependencies changed, then reload or restart Pi.
179
+ Current release: **0.2.8**. Personal Bot maintains no workspace format, initialization state, or workspace upgrade mechanism. Update the plugin through its native host package manager. For a local Pi installation, update the source, run `npm ci --ignore-scripts` if dependencies changed, then reload or restart Pi.
146
180
 
147
181
  Stop active sub-sessions before changing versions. Sub-session compatibility follows the minor version before 1.0 and the major version from 1.0 onward. Sessions from another compatibility line cannot be resumed directly.
148
182
 
package/README.zh-CN.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  **个人助手,连接知识、研究与行动。**
6
6
 
7
- 提供 Pi 工作区扩展和固定版 dsh 原生 Web 接入,用于学习、项目推进、研究与决策支持,也支持投资分析与已授权业务。dsh 的使用和当前验收范围见[专门说明](docs/dsh.md)。
7
+ 提供 Pi 工作区扩展和 dsh 原生 Web 接入,用于学习、项目推进、研究与决策支持,也支持投资分析与已授权业务。dsh 的安装、命令和当前验收范围见[专门说明](docs/dsh.md)。
8
8
 
9
9
  定位为可信模型驱动的个人助手。模型负责分析、协调与原生工具使用;pbot 提供资料入口、专家协作和 Python 环境准备。不另建主 Agent,不自动开展任务或交易。
10
10
 
@@ -31,7 +31,7 @@ pbot setup
31
31
 
32
32
  这里的全局 npm 安装只提供 `pbot` 命令,不向 Pi 注册全局扩展。`pbot setup` 使用全局安装的安装器版本;用 npm 更新它,或继续使用 `npx personal-bot@latest setup` 获取最新安装器。安装器不自动全局安装自己。
33
33
 
34
- 核心步骤失败时停止启动,可选插件失败时继续处理其他项并汇总。成功步骤保留,修复后重跑同一命令;不自动整体回滚。工作区作用域、版本选择和边界见[安装与升级](docs/installation-design.md)。
34
+ 核心步骤失败时停止启动。已配置的 Git 或本地目录来源缺失、或无法识别包名时,setup 保留声明并停止,须先通过 Pi 修复来源;已有独立单文件扩展仍可使用。可选插件失败时继续处理其他项并汇总。成功步骤保留,修复后重跑同一命令;不自动整体回滚。工作区作用域、版本选择和边界见[安装与升级](docs/installation-design.md)。
35
35
 
36
36
  ### 直接使用 Pi 安装
37
37
 
@@ -42,7 +42,7 @@ pi install --local npm:personal-bot
42
42
  pi
43
43
  ```
44
44
 
45
- `--local` 将包声明保存在项目 `.pi/settings.json`。按 Pi 提示确认项目信任,每次从工作区根目录启动。Pi 加载 Personal Bot 就会启用角色、技能、工具及共享 Python 环境准备;没有第二个启用开关。除非希望所有 Pi 会话都启用 Personal Bot,否则不要用省略 `--local` 的 `pi install` 注册全局扩展。已有全局安装请用 Pi 原生包管理或 `pi config` 调整加载范围。开发与原有测试基线为 Pi 1.4.0,安装器验收范围见[验证](docs/validation.md)。
45
+ `--local` 将包声明保存在项目 `.pi/settings.json`。按 Pi 提示确认项目信任,每次从工作区根目录启动。Pi 加载 Personal Bot 就会启用角色、技能、工具及共享 Python 环境准备;没有第二个启用开关。除非希望所有 Pi 会话都启用 Personal Bot,否则不要用省略 `--local` 的 `pi install` 注册全局扩展。已有全局安装请用 Pi 原生包管理或 `pi config` 调整加载范围。开发与测试基线为 Pi 1.5.0,安装器验收范围见[验证](docs/validation.md)。
46
46
 
47
47
  ### 从源码安装
48
48
 
@@ -68,29 +68,63 @@ pi
68
68
 
69
69
  ### 使用 dsh
70
70
 
71
- dsh 接入固定为 `@deepseek-ai/dsh@0.2.2-rc.1`,使用 Node.js 24.9+。从当前源码正常 `npm pack` 后,按[dsh 使用说明](docs/dsh.md)建立独立 `pbot` Web profile,并通过 `dsh plugin --profile pbot add <tarball>` 安装。`pbot setup` 不配置 dsh。
71
+ 使用最新版 dsh,需要 Node.js 24.9+(若新版声明更高要求,以新版为准)、npm、pnpm 和 Python 3.11+。`pbot setup` 面向 Pi,dsh 使用原生 profile 和插件管理。在终端执行:
72
72
 
73
- Web 的裸 `/pbot` 打开工作区、专家、团队和历史管理页。专家使用同进程的原生 Agent/Session;页面刷新不停止已接纳工作。两种宿主共同读取历史归档,各自维护自己的来源,模型、认证和 MCP 配置分别由原生宿主管理。真实模型与最新 Linux 验收仍见[验证记录](docs/validation.md)。
73
+ ```bash
74
+ npm install -g @deepseek-ai/dsh@latest pnpm@latest
75
+ dsh --version
76
+ pnpm --version
77
+ # 仅首次创建:此命令会覆盖已有同名 profile。
78
+ dsh --profile pbot --from-default-profile web --dump-config
79
+ dsh plugin --profile pbot add personal-bot@latest
80
+ dsh --profile pbot
81
+ ```
82
+
83
+ 最后一条命令启动 Web 服务,通常会自动打开浏览器。在页面中选择工作区和主会话,通过 dsh 原生设置配置模型与认证。在聊天输入框执行 `/pbot` 打开工作区、专家、团队和历史四页;`/pbot status` 检查工作区与 Python 环境;`/pbot init` 可选地补建缺失资料目录。加载插件和这些检查不调用模型。
84
+
85
+ 以后启动只需 `dsh --profile pbot`。停止活动专家和服务后,分别更新宿主与插件:
86
+
87
+ ```bash
88
+ npm install -g @deepseek-ai/dsh@latest
89
+ dsh plugin --profile pbot update personal-bot --latest
90
+ dsh plugin --profile pbot list personal-bot --depth 0
91
+ dsh --profile pbot
92
+ ```
93
+
94
+ 更新时不要重复 `--from-default-profile`。使用桌面应用时,在原生“插件”页面安装和管理 `personal-bot@latest`;npm CLI 的 `pbot` profile 与应用的 `desktop` profile 分开。
95
+
96
+ [完整中文指南](docs/dsh.md)([English](docs/dsh.en.md))包含启动参数、插件查询与移除、源码打包、全部 `/pbot` 子命令、JSON 参数及示例。专家使用同进程的原生 Agent/Session,页面刷新不停止已接纳工作。Pi 和 dsh 共同查询历史归档,各自管理会话、模型、认证与 MCP。已验证的 dsh 基线为 `0.2.2-rc.1`;`latest` 会变化,不代表未来版本已经通过验收,详见[验证记录](docs/validation.md)。
74
97
 
75
98
  ### 可选安装 Task Conductor
76
99
 
77
- 需要周期任务、重复流程或 DAG 时,安装接入包 `task-conductor-plugin`。它不是服务包 `task-conductor`,也不是启用 pbot 的前提。该接入方式需要 Pi 1.4.0+ 的原生 MCP 和 npm。
100
+ 需要周期任务、重复流程或 DAG 时,使用可选接入包 `task-conductor-plugin` 及其共享的 `using-task-conductor` 技能。插件与 `task-conductor` 服务分别安装;服务初始化、连接设置和更新按[上游接入说明](https://github.com/realqiyan/task-conductor/blob/master/docs/host-integrations.md)操作。
78
101
 
79
- 先用 `pi list` 检查是否已经安装;已安装但技能不可见时,检查资源是否启用并重载,不要重复安装。新安装请审阅[官方接入说明](https://github.com/realqiyan/task-conductor/blob/master/docs/host-integrations.md),从工作区根目录执行:
102
+ **Pi:** 先用 `pi list` 检查已有安装及资源设置。使用已发布的 Pi 接入时,从工作区根目录执行:
80
103
 
81
104
  ```bash
82
105
  pi install --local npm:task-conductor-plugin
83
106
  ```
84
107
 
85
- 然后在 Pi 中执行 `/reload`,再调用 `/skill:using-task-conductor`。插件自带技能会在你确认后引导服务安装、`task-conductor setup` 和原生 MCP 接入;插件安装本身不安装服务。凭据留在自己的终端或私有文件中,不发到聊天里。
108
+ 使用未发布插件改动时,改为 `pi install --local /absolute/path/to/task-conductor/plugin`,只启用一个来源。在 Pi 内执行 `/reload`,再调用 `/skill:using-task-conductor`。技能提供服务安装、`task-conductor setup` 和 Pi 原生 MCP 注册方法。`--local` 限定插件加载范围;MCP 作用域另行选择,复用已有连接。
109
+
110
+ **dsh:** 原生 Host 接入包含于尚未发布的 Task Conductor `0.1.6` 候选版本。发布前从该源码构建插件和配套服务,再将插件 tarball 安装到已有 Web profile:
111
+
112
+ ```bash
113
+ cd /absolute/path/to/task-conductor
114
+ npm run pack:plugin
115
+ dsh plugin --profile pbot add /absolute/path/to/task-conductor/task-conductor-plugin-<version>.tgz
116
+ dsh plugin --profile pbot list task-conductor-plugin --depth 0
117
+ ```
118
+
119
+ 使用打包命令输出的实际 tarball 路径。重启 `dsh --profile pbot`,打开主会话并调用 `/using-task-conductor`。插件通过原生文件系统技能发现提供共享技能,为每个根主会话创建使用该会话工作目录的原生 MCP 连接。工具保留 `mcp__task-conductor__executor_list` 等名称,避免另加重复的手工连接。桌面应用在原生“插件”页安装同一 tarball,profile 与 CLI 分开。配套本地服务的构建和设置见 [dsh Task Conductor 指南](docs/dsh.md#task-conductor)。
86
120
 
87
- 已有旧版接入包时,先用 `pi list` 核对来源和作用域,审阅官方升级说明后显式移除旧包声明,再安装新包,不同时加载两份。接入包与服务分别更新;服务升级前核对活动任务、停服并备份,按上游说明处理原生 MCP 连接,不自动迁移配置或删除历史数据。
121
+ 服务仍使用独立的协调模型配置及 `pi-durable` 运行时,以 dsh 为宿主不需要安装 Pi 交互 CLI。需要同时用 dsh 执行任务节点时,通过 Task Conductor 管理员 CLI 或 Web,将 dsh 的规范绝对可执行路径注册为自定义执行端 `dsh-acp`,参数为 `["--profile", "acp"]`。具体操作见上游技能的[自定义 ACP 说明](https://github.com/realqiyan/task-conductor/blob/master/plugin/skills/using-task-conductor/references/custom-acp.md);`dsh` 不是内置执行端 ID。节点使用自己的 dsh profile、认证、工具和环境。
88
122
 
89
- `--local` 只限定插件的加载范围,不隔离服务数据;MCP 注册范围另行选择,保留已有连接,不重复注册。连接完成后用 `/mcp` 或 `pi mcp list` 检查实际工具,并按技能执行只读验证,不为安装验收创建模型任务。连接成功不证明模型认证或业务交付成功。
123
+ 通知回到提交任务的持久宿主会话;恢复原会话可接收待处理事件。关闭 Pi 或 dsh 不停止服务任务。插件与服务分别更新,按上游说明检查活动工作、停服并备份数据。凭据留在终端或私有文件中。连接检查沿用技能的原生工具发现与只读调用;它们不证明模型执行或任务交付已经成功。
90
124
 
91
125
  ## 可选资料准备
92
126
 
93
- 加载 Personal Bot 后可直接使用,无需初始化。需要标准资料布局时执行 `/pbot init`:只创建缺失的资料目录和根 `AGENTS.md`,不覆盖已有文件,不触发模型任务,也不要求完成确认或重载才能启用。
127
+ 加载 Personal Bot 后可直接使用,无需初始化。需要标准资料布局时执行 `/pbot init`:只创建缺失的资料目录和根 `AGENTS.md`,不覆盖已有文件,不触发模型任务。在 Pi 中,新建的 `AGENTS.md` 经 `/reload` 或下次启动后进入原生上下文;包内目录用途说明在首次任务即可使用。
94
128
 
95
129
  目标、市场、偏好和工作约定保存在普通资料中,可直接请助手整理。需要接入外部工具时提供 CLI/MCP 名称、用途、官方文档或配置位置,不提供凭据值。
96
130
 
@@ -114,7 +148,7 @@ pi install --local npm:task-conductor-plugin
114
148
  - **研究与分析**:可要求“综合这些资料并说明证据冲突”“核验这份分析的口径与计算”或“找出先要验证的关键假设”。
115
149
  - **独立子会话**:包内提供 tmux 与独立 Pi 会话,需系统安装 tmux。`pbot_agent start` 立即返回;省略 message/prompts/files 时只创建待命进程,不调用模型。工作完成后自动通知。支持模型/目录/文件/工具与资源选项、send、follow-up、rename、status、read、stop 和显式 resume,没有前后台参数或 wait。`/pbot agents` 展示正在工作的 agent,可进入子 TUI。主 reload 保持运行,退出或切换会话停止并保留历史。子会话也使用原生 CLI/MCP,按委派范围工作。详见[专家协作](docs/agent-collaboration.md)。
116
150
  - **团队协作**:`pbot_team` 将已有 agent 组成固定团队,支持 roundRobin 轮流讨论和 parallel 并行轮次。成员通过 `pbot_team_message` 直接交换原文,普通 post 不唤醒模型。运行中的团队占用成员;先暂停并收尾,再切换私人工作。reload 暂停团队,不重放旧请求。首版不包含动态 ask/返回唤醒,详见[专家协作](docs/agent-collaboration.md)。
117
- - **周期与持久任务**:主会话通过原生 MCP 直接使用可选的 Task Conductor,处理周期、重复流程和 DAG;使用其 `using-task-conductor` 技能与实际工具契约。安装与接入见[可选安装引导](#可选安装-task-conductor)。缺失不影响普通 pbot 功能,但不能执行调度。pbot 不另建持久任务调度器或转发层。外部任务与子会话分别查询和停止,取消本轮不等于停止未来周期,关闭 Pi 也不代表外部任务已停止。
151
+ - **周期与持久任务**:主会话通过原生 MCP 直接使用可选的 Task Conductor,处理周期、重复流程和 DAG;使用其 `using-task-conductor` 技能与实际工具契约。安装与接入见[可选安装引导](#可选安装-task-conductor)。缺失不影响普通 pbot 功能,但不能执行调度。pbot 不另建持久任务调度器或转发层。外部任务与子会话分别查询和停止,取消本轮不等于停止未来周期,关闭 Pi 或 dsh 也不代表外部任务已停止。
118
152
  - **Python 环境**:所有工作区共用当前用户的独立 venv。Personal Bot 加载后自动创建环境或安装锁定依赖,成功后在当前 Pi 进程激活;主会话与专家通过 Bash 使用 `python` 或 `python3`。环境异常时提醒,修复后用 `/pbot python setup` 重试。系统 Python、外部终端、已有脚本和历史结果不变。共享依赖更新会影响其他工作区;更换插件版本或手工重试前应停止相关脚本。详见 [Python 说明](python/README.md)与[计算参考](resources/references/compute.md)。
119
153
  - **资料维护**:可要求“整理当前项目资料”“按上次口径重做报告”或“检查交付并结项”。助手按[项目整理与维护技能](resources/skills/project-maintenance/SKILL.md)更新当前任务及实际受影响的资料;整体整理按用户指定范围进行。当前说明按主题合并更新,从项目结论中提炼可复用的方法与口径;来源与重要决策保持可追溯。整理或结项时归集成果并清理范围内无用的临时产物,保留正式资料、历史记录与备份。
120
154
 
@@ -140,7 +174,7 @@ Personal Bot 不在工作区内保存私有启用状态。Pi 配置仍由 Pi 管
140
174
 
141
175
  ## 更新与历史数据
142
176
 
143
- 当前版本为 **0.2.5**。不维护工作区格式、初始化状态或升级机制。插件更新使用对应宿主的原生包管理;Pi 本地安装则更新来源源码,依赖变化后执行 `npm ci --ignore-scripts`,再重载或重启 Pi。更换版本前先停止活动子会话;不同兼容线的子会话不能直接恢复。
177
+ 当前版本为 **0.2.8**。不维护工作区格式、初始化状态或升级机制。插件更新使用对应宿主的原生包管理;Pi 本地安装则更新来源源码,依赖变化后执行 `npm ci --ignore-scripts`,再重载或重启 Pi。更换版本前先停止活动子会话;不同兼容线的子会话不能直接恢复。
144
178
 
145
179
  子会话 JSONL 由 Pi 保存在原生 sessions 目录或原生配置指定的位置;`pbot/subagents/` 只保存控制记录与会话引用,团队公共记录保存在 `pbot/teams/`。0.2.0 不兼容旧会话位置,不迁移或删除 0.1.x 历史;旧记录不进入当前列表或后台调度。先在旧版停止活动成员,更新后重新创建 agent。共享 Python 环境使用用户级 `pbot/python/.venv`,具体系统路径见 [Python 说明](python/README.md)。不自动导入其他应用的会话、配置或环境,也不修改其数据。MCP 连接与 CLI 环境按原生方式显式配置;用户资料、历史证据和备份原样保留。
146
180
 
package/docs/README.md CHANGED
@@ -6,8 +6,10 @@
6
6
  | --- | --- |
7
7
  | [架构原则](architecture-guidelines.md) | 模块划分、依赖和开发方法 |
8
8
  | [技术设计](technical-design.md) | 系统组成、生命周期与资源加载 |
9
+ | [模型指令编写原则](model-instruction-guidelines.md) | 提示、角色、技能与工具说明的取舍、表达、加载和验证要求 |
10
+ | [模型上下文](model-context.md) | 主会话、专家与摘要入口的内容、加载时机和验证边界 |
9
11
  | [界面设计](interaction-design.md) | Pi TUI 与 dsh GUI |
10
- | [dsh 使用](dsh.md) | 固定版本、原生 profile 安装、Web 管理与宿主差异 |
12
+ | [dsh 使用(中文)](dsh.md) / [English](dsh.en.md) | 安装、更新、原生 profile、完整命令与 Web 管理 |
11
13
  | [工具与执行](capability-design.md) | CLI/MCP 接入、授权和结果核验 |
12
14
  | [专家协作](agent-collaboration.md) | 子会话工具、通信、通知和生命周期 |
13
15
  | [历史对话](history.md) | 自动收录、连续摘要树、全文查询与原文展开 |
@@ -20,4 +22,4 @@
20
22
 
21
23
  Python 环境与库许可见 [python/README.md](../python/README.md)。模型使用的方法维护在 resources/skills,运行时职责维护在 resources/agents。
22
24
 
23
- 每个主题维护一份当前说明,总览通过链接引用。版本以 package.json 为准;历史设计查 Git 记录,临时排查过程不进入设计文档。
25
+ 每个主题维护当前说明,总览通过链接引用;提供中英文版本时同步维护命令、参数和限制。版本以 package.json 为准;历史设计查 Git 记录,临时排查过程不进入设计文档。
@@ -24,7 +24,7 @@ Pi 的 start 支持 noExtensions、noSkills、noPromptTemplates 和 noContextFil
24
24
 
25
25
  ## dsh 专家
26
26
 
27
- dsh 使用原生 provider/model/reasoning effort,拒绝 Pi 专属扩展、提示模板和上下文文件开关。tools 使用原生能力名,noSkills 控制技能;专家不拥有协调者管理工具。只在模型选择仍与父一致时继承父 effort。恢复保留原生选择,不用新父默认值覆盖旧会话。
27
+ dsh 使用原生 provider/model/reasoning effort,拒绝 Pi 专属扩展、提示模板和上下文文件开关。创建与恢复时通过原生 composeFrom 应用父 preset,保留其文件工具、AGENTS 和技能发现;tools 使用原生能力名,专家排除协调管理及递归委派工具。noSkills 关闭模型技能目录和 skill 工具,用户显式技能手势仍按宿主处理。只在模型选择仍与父一致时继承父 effort。恢复保留原生选择,不用新父默认值覆盖旧会话。
28
28
 
29
29
  服务器文件由原生附件存储保留内容,图片使用原生准入;Web 人工对话还接受本机文件与图片。人工对话先成功暂停所属团队,再进入原生 inbox;队列接纳、实际进入、模型消费和完成分别记录,未来排队输入不提前改变此前回答的归因。
30
30
 
@@ -83,7 +83,7 @@ run 要求全部成员空闲、无未消费的私人输入,并已加载可用
83
83
 
84
84
  团队公共记录独立于各自私人会话。Pi 通过原 inbox 投递,在 before_agent_start 和 turn_end 的安全边界注入已署名的公共原文,不请求额外 continuation。dsh 使用原生 inbox 和 pre-step;团队领取先获得原生 maintenance 准入,人工输入待处理或当前步骤已有人工消息时不追加团队背景。空闲成员在下一次团队请求时取得信息,私人工作不自动注入新群消息。
85
85
 
86
- 成员任务、团队背景、自动注入的公共消息和批次通知使用 Markdown 文档。团队背景按共同目标和成员职责分节,保留身份与轮次;本批次要求仅在成员任务输入中给出,避免在系统简报中重复。公共消息按 seq 分节,列出作者、回复关系与来源,正文放入保留原文的代码区块,包含代码围栏的正文也不会破坏区块边界。成员原文中的 JSON 保留原样。
86
+ 成员任务、团队背景、自动注入的公共消息和批次通知使用 Markdown 文档。普通专家只加载公共约定与专家职责;处理团队任务时才补充共同目标、成员职责、身份、轮次及团队操作说明。本批次要求仅在成员任务输入中给出,避免重复。公共消息按 seq 分节,列出作者、回复关系与来源,正文放入保留原文的代码区块,包含代码围栏的正文也不会破坏区块边界。成员原文中的 JSON 保留原样。
87
87
 
88
88
  read 的文本结果也使用 Markdown,同时保留工具的结构化结果。nextOffset 非空表示该条正文未读完,用同一 teamId、seq 和 offset 续读;nextAfterSeq 用于后续消息。自动注入按实际 Markdown 长度限制上下文,并用 remainingFromSeq 标明未包含的消息,从 afterSeq: remainingFromSeq - 1 继续读取。不能将展示片段当作完整记录。Pi 压缩不删除公共记录。
89
89
 
@@ -138,8 +138,8 @@ dsh 的 Web、原生 Remote、附件、长记录、冷读与恢复,以及真
138
138
 
139
139
  后台扫描遇到短暂的 `.control` 锁竞争时,在下一次扫描重试;连续至少 5 秒仍无法取得锁,包括主会话中断后暂停团队仍被锁阻塞的情况,会保留 UI 错误并通知模型。暂停未成功时,通知明确说明暂停尚未确认。报告或控制记录读取失败也会通知模型。同一持续故障在当前分支去重;恢复要求升级时补发一次通知。主会话中断期间延后投递,恢复输入后再通知。
140
140
 
141
- 通知按实际服务状态说明恢复方式:锁释放后自动恢复扫描;可恢复的读取错误先排障,修复后由后台重试;团队服务或协作存储已停用时,修复文件仍不能恢复当前实例,须请用户在当前 Pi 会话执行 `/reload`。重载前不反复调用 pbot_team,可通过 pbot_agent list/status/read 核对仍可读取的成员状态与报告;重载后再用 pbot_team status/read 核对团队。成功扫描后清除故障状态。通知不重发任务、不删除锁,命令和工具的错误仍直接返回。
141
+ 通知按实际服务状态说明恢复方式:锁释放后自动恢复扫描;可恢复的读取错误先排障,修复后由后台重试;团队服务或协作存储已停用时,修复文件仍不能恢复当前实例,须请用户在当前 Pi 会话执行 `/reload`。重载前不反复调用 pbot_team,可通过 pbot_agent list/status/read 核对仍可读取的成员状态与报告;重载后再用 pbot_team status/read 核对团队。完整扫描成功且待暂停、待入队操作不再受阻后清除故障状态。当前实例中已恢复的故障若曾在当前分支通知,会补发一次关联的恢复消息;中断期间延后投递,成员结果优先交付。未投递的故障不补发恢复消息,重载不追认旧实例的恢复。恢复只确认自动跟进扫描可用,不代表任务完成。通知不重发任务、不删除锁,命令和工具的错误仍直接返回。
142
142
 
143
143
  进入成员前提示返回快捷键,团队成员使用相同入口。默认 tmux 绑定下,普通终端按 Ctrl+B 后按 d 脱离;主会话已在 tmux 中时,按 Ctrl+B 后按小写 l 切回。自定义绑定以自己的配置为准。返回不停止成员,不要用 /exit 代替。
144
144
 
145
- Pi 1.4.0 的本地 SDK、实际无认证 Pi/tmux 进程、文件并发与恢复测试已覆盖基础契约。未使用假模型或模拟 provider。2026-10-28 在 0.1.3 上的真实模型双成员冒烟已通过两种策略的单轮通信、原文引用与主通知;0.2.0 的原生存储调整及 Pi 1.4.0 升级仅做本地 SDK/无认证进程验证,未追加真实模型调用;异构模型、多轮讨论、长期使用与交互 TUI 尚未验收,详见[验证](validation.md)。单轮通过不证明一般协作质量或外部操作恰好一次。
145
+ Pi 1.5.0 的本地 SDK、实际无认证 Pi/tmux 进程、文件并发与恢复测试已覆盖基础契约。未使用假模型或模拟 provider。2026-10-28 在 0.1.3 上的真实模型双成员冒烟已通过两种策略的单轮通信、原文引用与主通知;0.2.0 的原生存储调整及后续 Pi 升级未追加真实模型调用。Pi 1.4.0 已完成 `/pbot` 菜单、只读状态页、历史入口和窗口缩放的真实终端验收;Pi 1.5.0 的人工 TUI 回归、专家 attach 与运行中人工交互,以及异构模型、多轮讨论和长期使用仍待验收,详见[验证](validation.md)。单轮通过不证明一般协作质量或外部操作恰好一次。
@@ -22,21 +22,27 @@ Pi 处理信任、认证与工具暴露。使用 /mcp 查看连接、工具和
22
22
 
23
23
  子会话按自己的 cwd 和 Pi agent dir 加载配置。需要工作区项目 MCP 时,以工作区根目录作为 cwd,在命令中切换计算目录。父进程临时注册的连接不会自动转移到子进程。
24
24
 
25
- dsh 使用其固定版本的原生 MCP 组件和 profile 配置,模型与认证也由 dsh 管理。不得将上述 Pi 命令、配置目录或安装包声明直接用于 dsh,也不自动同步两套配置。同进程专家遵循 dsh 的原生作用域与工具可见性;不模拟 Pi 子进程的扩展开关。
25
+ dsh 使用当前安装版本的原生 MCP 组件和 profile 配置,模型与认证也由 dsh 管理。不得将上述 Pi 命令、配置目录或安装包声明直接用于 dsh,也不自动同步两套配置。同进程专家遵循 dsh 的原生作用域与工具可见性;不模拟 Pi 子进程的扩展开关。
26
26
 
27
- ## 授权与结果
27
+ ## 执行范围与结果
28
28
 
29
- 模型按用户请求和委派范围行动。研究、查询和接入不包含交易、转账或账本修改的授权。独立复核、用户授权和成果验收分别判断。
29
+ 模型按用户请求、已有约定和委派范围行动。提示说明具体操作,不为普通任务额外建立授权、证据收集或独立复核流程。必要的交互确认由当前任务及宿主原生机制决定。
30
30
 
31
31
  Bash、Python、MCP 和扩展拥有其实际账户与凭据权限。dsh 的原生 write、edit、apply_patch 检查原工作区,主会话越界要求一次原生批准,专家越界拒绝;整份 patch 和确认后的路径身份都需有效。文件确认与工具选择是防误操作措施,不是执行隔离;硬性限制使用只读凭据、服务端控制或受限环境。
32
32
 
33
- 工具保留原生结果与错误格式,任务按需保存证据。业务完成需核对实际结果,不能只看退出码或协议成功。取消、超时和断连后,先查询原生状态与业务标识,再决定后续操作;聊天或子会话恢复不自动重发可能已执行的操作。
33
+ 工具保留原生结果与错误格式。操作后查看结果,取消、超时和断连后先查询原生状态与业务标识,再决定是否重试,避免重复执行。任务资料按实际需要保存,不要求每次操作留证。
34
34
 
35
35
  ## 可选 Task Conductor
36
36
 
37
- Task Conductor 通过原生 MCP 提供周期任务、重复流程和 DAG,独立管理任务定义与运行状态。安装入口见[项目 README](../README.md#可选安装-task-conductor),具体操作由其 using-task-conductor 技能和实际工具契约说明。
37
+ Task Conductor 通过原生 MCP 提供周期任务、重复流程和 DAG,独立管理任务定义与运行状态。Pi 和 dsh 使用同一接入包及 `using-task-conductor` 技能,分别由自己的原生机制加载。安装入口见[项目 README](../README.zh-CN.md#可选安装-task-conductor);dsh 接入包含于 Task Conductor `0.1.6` 候选版本,发布前使用源码与配套本地 tarball,具体步骤见 [dsh 指南](dsh.md#task-conductor)。
38
38
 
39
- 提交任务时明确输入、cwd、工具与认证前提、输出和完成条件;周期任务还需明确频率、时区、授权范围及每轮数据时点。项目资料保存必要的 taskId、runId、节点 ID 和证据,实时状态向 Task Conductor 查询。
39
+ dsh 接入由 Task Conductor 插件的原生 Host 入口、包导出和 bundle patch 装配,共享技能通过原生 SkillFilesystem 提供。插件为每个根 Agent 建立独立的原生 MCP 连接,stdio 使用该会话 cwd;工具保留 `mcp__task-conductor__<tool>` 命名。Personal Bot 只提供按需参考入口,不增加包装工具、私有 MCP 客户端或安装平台,`pbot setup` 仍面向 Pi。
40
+
41
+ 通知 origin 绑定 dsh 原生持久 Session。插件轮询服务事件,将通知送入原会话,在确认原生接收并 flush 持久记录后才向服务 ack;恢复同一会话可继续领取。页面查询和另一主会话不代替原会话接收,宿主关闭不撤销服务中的任务。
42
+
43
+ 服务内部协调者继续使用 `pi-durable`,独立配置模型与认证;dsh 宿主不要求 Pi 交互 CLI。dsh 节点通过已有自定义 ACP 注册机制接入,管理员 CLI/Web 注册规范绝对程序路径与 `["--profile", "acp"]`,ID 为 `dsh-acp`;不预留新的内置 `dsh`。该节点的 profile、工具与环境由执行端管理,不从主会话复制。
44
+
45
+ 提交任务时明确输入、cwd、工具与认证前提和输出;周期任务还需明确频率、时区、执行范围及每轮数据时点。项目资料保存任务定义、taskId、runId、节点 ID 和结果位置,实时状态向 Task Conductor 查询。
40
46
 
41
47
  pbot 子会话绑定父会话,Task Conductor 可在所属宿主会话关闭后继续。两者分别查询和停止;取消当前 run 与停止未来周期也是两个操作。
42
48
 
@@ -1,10 +1,10 @@
1
1
  # dsh 双宿主实施技术方案
2
2
 
3
- 状态:双宿主实现及本机 SDK、分发、Web 和桌面验证已完成;最新 Linux 全量与成功模型工作流待验收。产品边界见[双宿主方案](dsh-support-proposal.md),最新结果见[验证](validation.md)。
3
+ 状态:双宿主实现及本机 SDK、分发、Web 和桌面验证已完成;2026-11-06 的 Linux CI 全量检查通过,成功模型工作流仍待验收。产品边界见[双宿主方案](dsh-support-proposal.md),分批验证结果见[验证](validation.md)。
4
4
 
5
5
  ## 目标与完成条件
6
6
 
7
- 在同一个 `personal-bot` npm 包中保留 Pi 入口,增加 dsh 服务端和 Web 客户端入口。两端共用资料、业务规则和历史查询;各自管理原生会话、模型、认证、配置与执行生命周期。dsh 固定使用 `0.2.2-rc.1`,开发和完整验证使用 Linux、Node.js 24.9.0 以上。
7
+ 在同一个 `personal-bot` npm 包中保留 Pi 入口,增加 dsh 服务端和 Web 客户端入口。两端共用资料、业务规则和历史查询;各自管理原生会话、模型、认证、配置与执行生命周期。dsh 首轮实现与当前开发依赖基线为 `0.2.2-rc.1`,开发和完整验证使用 Linux、Node.js 24.9.0 以上。用户安装跟随 `latest`,包声明只设最低宿主版本;保留精确开发依赖与锁文件以复现检查。本文后续“固定版”指这批实施记录的版本,不限制用户更新。
8
8
 
9
9
  交付必须覆盖专家、团队、通知、history、共享 Python、资源、文件确认及人工管理。接入验证和部分功能可作为实施里程碑,不能被表述为完整支持。先验证真实接口,再调整共享服务,避免以假定 API 建立大范围改动。
10
10
 
@@ -63,7 +63,7 @@ Pi 只维护 `.pi/pbot/history/`,dsh 只维护 `.dsh/pbot/history/`,两端
63
63
 
64
64
  原生命令提供 `/pbot init`、`status`、`python setup` 及专家、团队、history 入口。Web 模块通过 dsh 原生 Remote 查询和操作同一服务,提供专家完整记录、直接对话、停止/恢复,团队操作与 history 展开。查询路径不得隐式激活 Agent。
65
65
 
66
- bundle patch 基于原生 Web profile,声明默认 pbot 组合、服务端插件和客户端依赖。固定版客户端发现只接受包根 Loader 名称,因此 `personal-bot` 包根导出作为 dsh 服务端入口的别名,bundle 使用包根名称加载;`personal-bot/dsh` 独立入口仍保留,Pi 继续显式加载源码入口。客户端遵守固定版本 module loader 格式;外部复用 Cordis、React 和原生 UI。宿主包为可选 peer,开发依赖固定版本,不在发布产物打包第二份 SDK。TypeBox 由本包作为共享契约库提供运行时依赖;dsh 不提供它,不能继续依靠 Pi 的安装间接供应。固定版 dsh 的输出 schema 只支持结构约束和 `oneOf`,因此协作工具保留完整生产端校验,并向宿主提供去除 TypeBox 元数据、采用互斥分支的结构 schema。
66
+ bundle patch 基于原生 Web profile,声明默认 pbot 组合、服务端插件和客户端依赖。固定版客户端发现只接受包根 Loader 名称,因此 `personal-bot` 包根导出作为 dsh 服务端入口的别名,bundle 使用包根名称加载;`personal-bot/dsh` 独立入口仍保留,Pi 继续显式加载源码入口。客户端遵守固定版本 module loader 格式;外部复用 Cordis、React 和原生 UI。宿主包为可选 peer,开发依赖固定版本,不在发布产物打包第二份 SDK。TypeBox 是共享契约库,声明为范围为 `"*"` 的必需 peer,并在开发依赖中锁定版本。Pi 原生加载器提供 TypeBox;dsh 不提供它,由包管理器在安装时补齐,不能依靠 Pi 的安装间接供应。固定版 dsh 的输出 schema 只支持结构约束和 `oneOf`,因此协作工具保留完整生产端校验,并向宿主提供去除 TypeBox 元数据、采用互斥分支的结构 schema。
67
67
 
68
68
  安装使用原生插件流程。`--from-default-profile` 仅用于首次创建,不作为升级命令。Pi 安装 CLI 不扩展为 dsh 配置管理器。`prepack` 生成 CLI、dsh 服务端和 Web 产物;`dist` 仍只用于测试。
69
69
 
@@ -74,8 +74,8 @@ bundle patch 基于原生 Web profile,声明默认 pbot 组合、服务端插
74
74
  | A 固定版接入 | 隔离 home、真实插件加载、空 Agent flush/冷恢复、setup 清旧 inbox、只读查询、Remote/客户端加载、Bash 环境继承 | 已通过下列接入验证 |
75
75
  | B 公共边界 | 异步 AgentHost、原生引用、运行规则与工具契约提取;Pi 完整回归、既有持久契约保留 | 已通过 Linux 回归 |
76
76
  | C dsh 业务 | 专家、团队、通知、资源、文件确认、多会话与 Python 生命周期 | 核心接入和本地验证通过;完整工作流待验收 |
77
- | D History 与 Web | 来源查询与写隔离、原生历史及摘要、完整人工管理与重连 | 进行中 |
78
- | E 分发与验收 | tarball 双宿主加载、CLI 独立运行、文档更新、Linux 全量检查和真实 Web 验收 | 本机全量、双宿主 tarball 与 Web 通过;最新 Linux 和真实模型工作流未完成 |
77
+ | D History 与 Web | 来源查询与写隔离、原生历史及摘要、完整人工管理与重连 | 实现及本机 SDK、Web、桌面验证完成;真实模型摘要成功与取消仍待验收 |
78
+ | E 分发与验收 | tarball 双宿主加载、CLI 独立运行、文档更新、Linux 全量检查和真实 Web 验收 | 本机全量、双宿主 tarball、Web 与桌面验证通过;2026-11-06 Linux CI 通过,真实模型工作流仍待验收,见[验证](validation.md) |
79
79
 
80
80
  阶段 A 在临时目录安装固定发布包,不使用个人认证或工作区配置。使用真实 SDK 和 Session API 构造本地记录,不使用 mock、stub、假模型或模拟 provider。SDK 行为验证与最终插件行为测试分开记录;仅保留能覆盖实际正确性风险的测试。
81
81
 
@@ -86,7 +86,7 @@ bundle patch 基于原生 Web profile,声明默认 pbot 组合、服务端插
86
86
  - 固定发布包的真实 Cordis、AgentLoop、JSONL persistence 和内存 query:空专家经 flush 后可被独立进程读取;冷恢复保留身份;恢复 setup 清除旧 inbox 后没有开启旧轮次;错误归属或缺失记录不会激活或替换会话。
87
87
  - 使用原生 Session API 写入轮次记录,验证报告固定到持久的 `turn/end`,后续对话及 Agent 释放不改变旧报告。
88
88
  - 原生 Bash 在 spawn 时读取进程 venv,两个工作区保留各自 cwd,禁用 user site,环境恢复通过。原生命令的两个父会话分别绑定工作区;关闭一个不影响另一个;卸载插件后旧 handler 失效。
89
- - Linux Node.js 24.15.0 的初始完整检查通过:`npm ci --ignore-scripts`、`npm run check`、`npm test`,103 项测试通过。之后新增的固定报告及工作区生命周期测试已在本地通过;最终 Linux 全量检查仍须重跑。
89
+ - Linux Node.js 24.15.0 的初始完整检查通过:`npm ci --ignore-scripts`、`npm run check`、`npm test`,103 项测试通过。之后新增的固定报告及工作区生命周期测试已在本地通过;该接入检查点尚未重跑最终 Linux 全量检查。
90
90
  - npm tarball 经原生插件命令安装到隔离 `pbot` profile;真实 Chrome 打开 Web,选择临时工作区,展开 `/pbot` 菜单、执行 status 和 init、刷新后再次查询,工作区和父会话身份保持一致,没有 pageerror。客户端需要同时声明 `remote` 与 `remote.commands` 注入。包根发现规则及 Remote 依赖问题已修正。
91
91
  - Web 测试中的 Python 目录刻意包含无关数据,原生 setup 如实返回错误且没有覆盖该数据。该测试不证明完整 Python 依赖安装成功;真实计算环境测试由既有 Python 验证及原生 Bash 测试覆盖。
92
92
 
@@ -102,7 +102,7 @@ bundle patch 基于原生 Web profile,声明默认 pbot 组合、服务端插
102
102
 
103
103
  原生 `write`、`edit`、`apply_patch` 已接入文件规则。整份 patch 的源与移动目标先检查,执行前重核 cwd 和目标身份;专家工作区外直接拒绝,主会话使用原生一次批准。真实文件测试覆盖内部修改、符号链接外逃、move 和混合补丁拒绝,以及原生 `rejected`/`unavailable` 审计。真实附件服务验证二进制文件跨块保存后原字节可读、图片准入、原路径删除后附件仍可读,以及目录、取消和图片数量上限拒绝。图片总字节与数量在批量载入期间按宿主限额检查。
104
104
 
105
- 阶段 C 检查点仍缺最新 Linux 回归:服务器 SSH 不可达,本机没有 Docker、Colima、Lima 或 Podman,先前 C1 安装未取得成功退出证据。当时浏览器产物只到阶段 A;后续审批、资源与管理验收结果见下文。
105
+ 阶段 C 检查点当时未完成 Linux 回归:服务器 SSH 不可达,本机没有 Docker、Colima、Lima 或 Podman,先前 C1 安装未取得成功退出证据。这是历史检查点记录;当时浏览器产物只到阶段 A,后续审批、资源与管理验收结果见下文。
106
106
 
107
107
  阶段 D 的 history 服务和原生工具已接入。两个来源可共同搜索、分别维护;Pi 旧 ID、摘要、关系、分页和旧归档导入继续保留,dsh 不清理或导入 Pi 归档。公开 Session query 读取当前工作区及关联专家,按父级归属纳入不同 cwd 的专家,不把别的工作区专家因 cwd 相同而混入。普通 fork 保留为自身的原生会话;`isSeeded` 是 fork 标记,不是应排除的模板标记。人工 steering、未结束或截断答复保留为原文,工具记录仍由完整原生视图提供。
108
108
 
@@ -143,7 +143,9 @@ Web 管理已接入固定版公开的 `TypertRemoteService`、`Remote` 和 Typer
143
143
 
144
144
  本机桌面应用 0.2.2-rc.1(内置 Node.js 24.21.0)也完成实际验收:独立 Electron userData、DSH_HOME、HOME 与 Documents 目录,通过原生插件 UI 安装 tarball、启用并执行完整管理流程。附件、长记录、团队失败暂停、history、恢复与刷新通过,10 次管理写命令且页面错误为空;32 MiB 上传在关闭面板后取消,没有提交 chat 或追加 inbox。完整退出应用会停止专家,重开及插件重新启用均不自动恢复。临时登录 Shell 的 PATH 提供 Python 3.12 后,应用真实安装锁定依赖并达到 ready,pip check 和 5 项原生库测试通过。隔离实例模型选择器显示 `No models available`;原日常应用进程保持运行,测试进程已退出。详见[桌面验收记录](validation.md#macos-桌面应用实测),证据在 `/tmp/pbot-dsh-desktop-test/`。
145
145
 
146
- 后台模型整理成功、输入优先取消真实模型请求、成功专家/团队协作、模型实际使用资源与团队上下文,以及最新 Linux 全量仍未验收。SSH 最后重试仍超时;无模型检查和旧版 Pi 冒烟不能替代本次真实提供方工作流。
146
+ 后续证据:2026-11-06,提交 `1625a78af324de412ba12b0689de6c9ebde61698` 的 Linux CI 全量检查及同一候选包的 Node.js 22.19.0 Pi/CLI 消费者检查通过,详见[CI 与发布记录](validation.md#ci-与发布2026-11-06)。
147
+
148
+ 后台模型整理成功、输入优先取消真实模型请求、成功专家/团队协作,以及模型实际使用资源与团队上下文仍未验收。无模型检查和旧版 Pi 冒烟不能替代本次真实提供方工作流。
147
149
 
148
150
  ## 优先核查的风险
149
151
 
@@ -15,14 +15,14 @@
15
15
  | Q5 配置共享 | 业务约定、用户偏好、角色补充、专业方法和提供方手册共用文件;模型、认证、插件加载和 MCP 连接分别原生管理 |
16
16
  | Q6 历史共享 | 两端共同查询问答、摘要和关系;各自收录和生成自己来源的摘要,保留旧 Pi 归档和节点身份 |
17
17
  | Q7 生命周期 | 页面切换、刷新和关闭浏览器不主动停止已授权工作;服务端资源关闭时清理执行,重启不自动重放旧任务 |
18
- | Q8 版本基线 | 固定 `@deepseek-ai/dsh@0.2.2-rc.1`;dsh 路径要求 Node.js ≥24.9.0 |
18
+ | Q8 版本基线 | 用户安装跟随 dsh `latest`,不精确锁定宿主;`0.2.2-rc.1` 为最低版本及当前开发、验收基线,开发依赖与锁文件保留精确版本;当前 dsh 要求 Node.js ≥24.9.0 |
19
19
  | Q9 专家执行 | dsh 在同一服务进程内创建独立原生 Agent / Session;Pi 保留独立进程和 tmux |
20
20
  | Q10 加载范围 | 从原生 Web 模板创建独立 `pbot` profile,可承载多个工作区 |
21
21
  | Q11 兼容标准 | 业务操作含义一致;模型、思考强度和资源选项按宿主原生能力表达,不支持的输入明确拒绝 |
22
22
  | Q12 人工操作 | `/pbot` 配合原生菜单和轻量管理界面;人工操作调用同一业务服务 |
23
23
  | Q13 分发 | 一个 npm 包和统一版本,分别提供 Pi 入口、dsh 服务端入口及 Web 客户端模块 |
24
24
 
25
- 设计树没有剩余的用户选项。下文把上述决定落实为实现边界和验收条件;运行验证仍是实施阶段的工作,不把静态核查视为通过验收。
25
+ 设计树没有剩余的用户选项。下文把上述决定落实为实现边界和验收条件;运行验证仍是实施阶段的工作,不把静态核查视为通过验收。版本策略已按后续使用要求调整为跟随 `latest`;下文 `0.2.2-rc.1` 的接口说明及固定版本资料链接保留首轮实现依据,当前命令以中英文使用指南和实际安装版本为准。
26
26
 
27
27
  ```text
28
28
  保留 Pi,同时支持 dsh
@@ -42,7 +42,7 @@
42
42
  └─ 单包分发
43
43
  ├─ Pi 源码入口
44
44
  ├─ dsh 服务端与客户端构建产物
45
- └─ 原生安装,固定版本验收
45
+ └─ 原生安装跟随 latest,验收记录实际版本
46
46
  ```
47
47
 
48
48
  ## 架构与最小改动
@@ -100,7 +100,7 @@ flowchart TD
100
100
  | 多会话 | 按确切父 Session 绑定实例 | 切换页面不释放后台工作;fork 不接管原会话的专家或团队 |
101
101
  | 安装与客户端 | 原生 profile/bundle/client 模块 | 单包发布;未来客户端可复用服务端业务接口,首版以 Web 验收 |
102
102
 
103
- “能力完整”以业务行为和结果核对,不要求界面控件或启动参数逐字相同。Pi 的 `noExtensions`、`noPromptTemplates` 等参数没有 dsh 对应含义时不出现在 dsh 契约中;误传时报错。模型、思考强度、工具和资源选择由接入层按固定宿主版本校验,不维护 pbot 模型目录。
103
+ “能力完整”以业务行为和结果核对,不要求界面控件或启动参数逐字相同。Pi 的 `noExtensions`、`noPromptTemplates` 等参数没有 dsh 对应含义时不出现在 dsh 契约中;误传时报错。模型、思考强度、工具和资源选择由接入层按当前宿主能力校验,不维护 pbot 模型目录。
104
104
 
105
105
  ## 工作区、资源与配置
106
106
 
@@ -231,23 +231,7 @@ dsh 服务端产物使用 ESM。浏览器产物按 0.2.2-rc.1 的客户端 modul
231
231
 
232
232
  完整双宿主开发和 CI 使用 Linux、Node.js ≥24.9.0。包的 Pi 消费路径及安装 CLI 保留 Node.js ≥22.19.0 的要求;dsh 入口声明并检查自己的兼容范围。`prepack` 生成 CLI、dsh 服务端和客户端产物,`dist` 仍不进入发布包。此次不预先指定 Personal Bot 发布版本,不改变已有兼容线规则。
233
233
 
234
- 以下是实施完成后的安装示例,当前尚无含这些入口的已验收发布包:
235
-
236
- ```bash
237
- # 环境已具备符合要求的 Node.js;安装固定 dsh 基线。
238
- npm install -g @deepseek-ai/dsh@0.2.2-rc.1
239
-
240
- # 仅在 pbot profile 尚不存在时执行;创建 Web 组合并输出配置,不启动服务。
241
- dsh --profile pbot --from-default-profile web --dump-config
242
-
243
- # 安装本次构建好的 tarball;文件名按实际版本替换。
244
- dsh plugin --profile pbot add /absolute/path/to/personal-bot-VERSION.tgz
245
-
246
- # 查看组合后配置,再从目标工作区启动。
247
- dsh --profile pbot --dump-config
248
- cd /absolute/path/to/workspace
249
- dsh --profile pbot
250
- ```
234
+ 2026-11-06 发布的 `personal-bot@0.2.6` 已包含上述 dsh Host/Web 入口。跟随 `latest` 的 dsh、pnpm 安装、插件更新及 tarball 使用步骤统一见[dsh 中文指南](dsh.md)与[英文指南](dsh.en.md);已完成的 CI、发布检查与尚未完成的全新 registry 安装、真实模型验收见[验证](validation.md)。
251
235
 
252
236
  `--from-default-profile` 会替换同名自定义 profile,不能作为重复安装或升级命令。已有 profile 只使用原生插件管理更新包,保留用户层配置。配置 dump 不启动 Agent,但会准备 profile 文件,不能将其描述为完全无写入操作。
253
237
 
@@ -300,7 +284,7 @@ bundle 只组合所需原生插件、默认 pbot 会话组合、服务端接入
300
284
  | Bash local、subprocess、home paths | 支持现有 venv 激活方向和原生用户目录解析,仍需实际进程验证 |
301
285
  | 发布版 CLI 与 MCP client | 支持原生 profile/bundle 安装和分别管理 MCP 配置 |
302
286
 
303
- 主要限制是所选 dsh 版本仍为预发布版本,以及同进程运行共享故障范围。专家无法跨执行组件重载继续运行;协作取消不能保证强制终止单个 Agent。客户端 bundle、Remote、scope 组合和恢复顺序必须在第一阶段真实验证;若固定版本的公开接口无法实现已确认能力,应报告具体阻碍并重审受影响的决定,不私自换版本、降级范围或依赖私有日志格式。
287
+ 当前已验收的 dsh 基线仍为预发布版本,同进程运行共享故障范围。专家无法跨执行组件重载继续运行;协作取消不能保证强制终止单个 Agent。客户端 bundle、Remote、scope 组合和恢复顺序已纳入首轮验证,升级宿主后仍须重新核对。若新版公开接口变化,应记录具体阻碍并调整接入,不以版本范围声明代替运行验收,也不依赖私有日志格式。
304
288
 
305
289
  历史共享是已提取资料的共享,不等于跨宿主恢复。多进程摘要调用和外部业务执行均不承诺恰好一次。Bash、Python、MCP 与扩展使用实际环境权限,不宣称宿主隔离。未来具体 Desktop 载体不属于本次 Web 验收结果。
306
290