# 工具与执行

Personal Bot 使用当前 Pi 或 dsh 宿主的原生工具与配置。接入方法见[接入技能](../resources/skills/provider-connections/SKILL.md)。

## 责任划分

| 内容 | 所有者 |
| --- | --- |
| CLI 参数、校验、认证 | 原生命令、help 与 profile |
| MCP 连接、认证、发现、schema 与结果 | 所属宿主的原生 MCP |
| 数据口径、项目约定与使用经验 | providers/<id>/GUIDE.md |
| 任务范围、业务判断与必要确认 | 用户与模型 |
| 账户权限、额度与强制批准 | 外部服务或执行环境 |

工作区手册是当前使用入口，只保留必要信息；更新时合并重复内容并替换过时说明，历史证据通过项目引用追溯。接口定义以当前工具为准。

## CLI 与 MCP

CLI 通过 Bash 使用。新增 MCP 默认仅接入当前项目：从工作区根目录执行 `pi mcp add --local <server> ...`，写入项目 `.pi/mcp.json`；删除项目连接也显式使用 `--local`。第三方 setup 或接入向导同样核对项目范围，不接受其全局默认值。只有用户明确要求跨项目使用时才修改当前 Pi agent dir 的 `mcp.json`，已有用户级连接不自动迁移或删除。

Pi 处理信任、认证与工具暴露。使用 /mcp 查看连接、工具和配置来源，确认新增连接来自当前项目；配置变更后按 Pi 要求重载。项目配置使用原生认证或环境变量引用，不保存凭据值。

子会话按自己的 cwd 和 Pi agent dir 加载配置。需要工作区项目 MCP 时，以工作区根目录作为 cwd，在命令中切换计算目录。父进程临时注册的连接不会自动转移到子进程。

dsh 使用当前安装版本的原生 MCP 组件和 profile 配置，模型与认证也由 dsh 管理。不得将上述 Pi 命令、配置目录或安装包声明直接用于 dsh，也不自动同步两套配置。同进程专家遵循 dsh 的原生作用域与工具可见性；不模拟 Pi 子进程的扩展开关。

## 执行范围与结果

模型按用户请求、已有约定和委派范围行动。提示说明具体操作，不为普通任务额外建立授权、证据收集或独立复核流程。必要的交互确认由当前任务及宿主原生机制决定。

Bash、Python、MCP 和扩展拥有其实际账户与凭据权限。dsh 的原生 write、edit、apply_patch 检查原工作区，主会话越界要求一次原生批准，专家越界拒绝；整份 patch 和确认后的路径身份都需有效。文件确认与工具选择是防误操作措施，不是执行隔离；硬性限制使用只读凭据、服务端控制或受限环境。

工具保留原生结果与错误格式。操作后查看结果，取消、超时和断连后先查询原生状态与业务标识，再决定是否重试，避免重复执行。任务资料按实际需要保存，不要求每次操作留证。

## 可选 Task Conductor

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)。

dsh 接入由 Task Conductor 插件的原生 Host 入口、包导出和 bundle patch 装配，共享技能通过原生 SkillFilesystem 提供。插件为每个根 Agent 建立独立的原生 MCP 连接，stdio 使用该会话 cwd；工具保留 `mcp__task-conductor__<tool>` 命名。Personal Bot 只提供按需参考入口，不增加包装工具、私有 MCP 客户端或安装平台，`pbot setup` 仍面向 Pi。

通知 origin 绑定 dsh 原生持久 Session。插件轮询服务事件，将通知送入原会话，在确认原生接收并 flush 持久记录后才向服务 ack；恢复同一会话可继续领取。页面查询和另一主会话不代替原会话接收，宿主关闭不撤销服务中的任务。

服务内部协调者继续使用 `pi-durable`，独立配置模型与认证；dsh 宿主不要求 Pi 交互 CLI。dsh 节点通过已有自定义 ACP 注册机制接入，管理员 CLI/Web 注册规范绝对程序路径与 `["--profile", "acp"]`，ID 为 `dsh-acp`；不预留新的内置 `dsh`。该节点的 profile、工具与环境由执行端管理，不从主会话复制。

提交任务时明确输入、cwd、工具与认证前提和输出；周期任务还需明确频率、时区、执行范围及每轮数据时点。项目资料保存任务定义、taskId、runId、节点 ID 和结果位置，实时状态向 Task Conductor 查询。

pbot 子会话绑定父会话，Task Conductor 可在所属宿主会话关闭后继续。两者分别查询和停止；取消当前 run 与停止未来周期也是两个操作。

外部节点需单独配置工具、技能、Python 环境和认证，不自动继承主会话能力。需要人工确认的业务不安排无人值守执行。提交结果不明时先按原标识查询，避免重复创建。

外部工具与真实任务的验收范围见[验证](validation.md)。
