概览
该扩展向 Pi 添加 Agent、get_subagent_result、steer_subagent,默认后台运行,并可通过 /agents 在 TUI 中查看。
Worktree 隔离需要明确选择,不是每个子代理的默认行为。仅有独立对话无法防止两个代理修改同一份文件。
安装与运行边界
@tintinweb/pi-subagents
通过 SDK 子会话提供后台队列、实时 TUI 状态与可选 Git worktree。
pi install npm:@tintinweb/pi-subagents- 实现机制
- 普通代理在宿主进程内调用 createAgentSession。后台任务先返回 ID,完成后通知父会话;worktree 隔离改变子代理工作目录。工作流脚本运行在线程 worker 中。
- 前置依赖
- 需要 Pi ≥ 0.84.0 及已授权模型。只有 worktree 模式需要 Git、仓库和至少一个提交,普通子会话可在非 Git 目录运行。
- 数据范围
- 每个子代理把任务、选定上下文和工具结果发送给自己的模型供应商。inherit_context 默认 false;general-purpose 仍继承父会话系统提示词。
- 失败行为
- 明确要求的 worktree 创建失败会使工具调用失败,不会悄悄退回父目录。完成后的修改保存在本地 pi-agent-<id> 分支,临时目录会被移除。
- 已知限制
- 后台并发默认 10,超出后排队;前台并发独立计算,默认 0 表示不限。Worktree 从已提交历史创建,看不到父目录的暂存或未提交修改。工作目录隔离不是操作系统沙箱。
已查阅源码 / 文档 · v0.19.0 · e955e29c51b7a6cce37e1108cd2d6c57a77e151c
会话与并发模型
普通子代理是宿主进程内的 SDK 会话。后台调用返回 ID,容量占满时排队,完成后通知父会话;前台调用等待结果。
maxConcurrent 默认允许 10 个后台代理。maxConcurrentForeground 默认 0,表示前台不限,且与后台分别计算。实时组件展示活动和 Token,界面功能依赖交互式 Pi 宿主。SubagentWorkflow 脚本使用 worker 线程,因此也不能概括为全部单线程执行。
Worktree 隔离保证什么
在 Agent 调用或代理 frontmatter 中添加 isolation: "worktree"。子代理在已提交历史创建的临时工作区执行,需要 Git 和初始提交;创建失败会使调用失败,不会改在父目录执行。
父工作区的暂存及未提交修改不会被带入;审查这些 diff 应使用共享工作区。Worktree 分离了工作文件,但拥有 shell 的子代理仍可离开该目录,因此不是安全沙箱。
任务完成后,未修改的 worktree 直接移除;有修改则提交或保留到本地 pi-agent-<id> 分支,临时目录移除。应审查结果中给出的分支并运行项目检查再合并,扩展不会自动合入父分支。
尝试一个范围明确的任务
使用下方命令安装,确认 Pi ≥ 0.84.0 后重启。先运行不带隔离的 Explore,验证工具、模型授权和完成通知。写入任务再明确要求 worktree,并限定一个可独立验证的修改。
下面示例创建隔离的写入代理。完成后检查 get_subagent_result 给出的分支,与原始基点对比。本示例是使用方法,此次源码核验没有执行模型任务。
Agent({
subagent_type: "general-purpose",
prompt: "Fix the documented failing test. Run the relevant tests and report the changed files.",
description: "Fix one failing test",
isolation: "worktree",
run_in_background: true
})控制上下文与开销
inherit_context 默认 false,但 general-purpose 仍接收父系统提示词。代理 frontmatter 可锁定上下文继承、模型与隔离设置,优先于调用参数;请求的选项似乎未生效时,先查看 /agents 中的代理配置。
每个子代理单独产生模型用量;向多个代理复制长对话会增加输入费用。创建 worktree 增加文件系统工作,不会打折 Token。扩大并行前,先用明确提示词、合适模型和较低并发。
与 pi-subagents 的区别
Nico 的 pi-subagents 也支持 worktree。其前台执行使用进程内 SDK 会话,后台则使用独立 runner,并提供执行产物。区别在编排方式与生命周期,不能简单分成“有/无 worktree”。
根据习惯选择工具接口及结果交接方式,再在实际宿主里运行小型只读任务。同时安装两者可能给模型提供重叠的编排入口。
相关与替代方案
- pi-subagents →
Nico Bailon(nicobailon)维护的社区子代理扩展,支持链式、并行执行和 TUI 澄清。
在 README 中引用
一手来源与核验范围
本文区分源码 / 文档核验与实际运行测试。未标注“已实测”的功能、性能和节省比例不代表本站测量结果。