插件指南

@tintinweb/pi-subagents:后台代理与 Worktree 隔离

了解 Tintin 的 SDK 子会话、可选 Git worktree、实时组件、并行限制与代码修改交接。

概览

该扩展向 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 中引用

Pi Index: @tintinweb/pi-subagents

一手来源与核验范围

本文区分源码 / 文档核验与实际运行测试。未标注“已实测”的功能、性能和节省比例不代表本站测量结果。