@jangmanj/pi-bgtasks

中文文档
0.1.1发布于 2026/11/01MITES Module零依赖构建来源已验证

后台shell任务和Pi的进程内子代理:bg_run, bg_logs, bg_kill, subagent。

中文使用文档
文档目录12 节
  1. 安装
  2. 声明子代理
  3. 未申报的名称
  4. 选择供应商
  5. 打电话的人得到了什么
  6. 行为
  7. 代理并发
  8. 页脚
  9. 集成协议
  10. 代码映射
  11. 开发
  12. 已知的限制

@jangmanj / pi-bgtasks

后台shell任务和Pi声明的进程内子代理。四个工具,没有命令,没有设置。

工具做模型被告知
bg_run在后台启动shell命令。返回id和日志路径。在阻塞工作前启动长命令;完成会唤醒你,所以不要睡觉,不要拖延;仅在每个任务退出并检查后报告完成情况。
subagent运行一个 宣布 代理、前台或 background: true.交出独立的相邻工作(绘图、长读、研究、复习、独立切片),一次完成几个工作再阻塞;提示是整个简短的;报告是证据,而不是完成。
bg_logs列出任务和子代理,或按id读取一个(shell tail或子代理报告)。为阅读多做一个唤醒预览,或作一个决定的新鲜状态;不是一种等待的方式。
bg_kill按id逐个停止。为了不再需要的工作或逃跑;从不唤醒一个回合。

工具描述携带这些指令,因此它们与工具一起进入任何会话。三个短 promptGuidelines 再加上一个将军 AGENTS.md 通常不会:开始边工作前,阻塞工作,写一个完整的摘要,永远不要投票。

不要装 pi-bg-tasks 或者 @gotgenes/pi-subagents;工具名称冲突。

安装

pi install npm:@jangmanj/pi-bgtasks

需要Pi 1.4.0及以上版本,Node 22.19及以上版本。

声明子代理

子代理只有在文件声明了它的全部内容时才存在。文件: <cwd>/.pi/agents/<name>.md 在 $PI_CODING_AGENT_DIR/agents/<name>.md (默认 ~/.pi/agent/agents/). 项目文件通过名称获胜。编辑适用于下一个刷出。

---
description: Reads code and reports findings
tools: read, grep, find, ls
model: provider/model-id
thinking: high
max_turns: 20
---
You read code and report what you find. Do not edit files.
关键要求规则
description是一行,显示给父模型。
tools是确切的允许列表:名称或 * 模式,逗号列表或 [a, b]. none 意味着没有工具。
model是provider/id (精确),或者一个裸模型id,解析如下。从来没有继承; inherit 是无效的。
thinking否off minimal low medium high xhigh max.
max_turns否1-500,默认30。到达它将使运行失败并保留部分结果。
身体是整个系统提示。没有继承父提示、上下文文件、技能或对话。

未申报的名称

调用 subagent 使用没有文件的名称创建安全默认值,而不是失败:tools read, grep, find, ls (只读) max_turns 30,以及要求批处理工作的提示,观察和引用的权利要求,以及以结尾的最终消息 done 或者 partial 打开的项目。它被保存为 ~/.pi/agent/agents/<name>.md 所以它变成了一个你可以编辑的普通声明;现有文件永远不会被覆盖。这个 model 参数,并选择其模型;如果没有它,调用将失败并列出可用的模型。在保存任何内容之前检查模型,结果告诉调用者创建了什么以及在哪里创建了什么。 model 已经声明的代理被拒绝:声明的模型是权威的。文件存在但无效的名称是错误,而不是创建的触发器。

解析是严格的。未知的键、缺失的字段或错误的值使该文件无效;它是不可生成的,并且当模型要求它时显示错误。无效的项目文件不会退回到它所隐藏的全局文件。

孩子永远不会收到这个扩展的工具(subagent, bg_*),即使通过 * 模式。命名它们的声明是无效的。

选择供应商

provider/id 完全按照书面使用;它永远不会与另一条路由交换。一个裸模型id(没有提供者)在每个有凭证的提供者中查找,并使用Pi自己的验证数据(isUsingSubscription当运行时不公开OAuth时,回退到OAuth)。在最佳层绑定的两个提供者是列出它们的错误;Pi从不猜测它们之间的关系。解析后的 provider/id 显示在每个报表标题中。

打电话的人得到了什么

每个结果(前景或唤醒中的结果)都是一个报告:一个标题(id、代理、状态、模型、回合、工具调用、持续时间),然后是直接声明的结果。

状态身体
RUNNING包含文本的最新助手消息,标记为 Latest progress (not the final report)。在第一个这样的信息出现之前,报告说还没有可用的辅助进展。
COMPLETED孩子最后一条包含文字的信息。空洞的回答永远不会无声地返回; NO RESULT: the subagent finished without writing a final answer…
FAILEDFAILED: <reason> (提供者错误, max_turns 到达,启动失败),然后任何部分输出,标记为部分。
KILLEDKILLED before finishing. 加上部分输出。

失败和击杀被放在前台,所以它们作为工具错误出现。超过32 KB的输出被截断 [truncated: showing N of M characters];4 KB的唤醒预览指向 bg_logs 其余的。 bg_logs 标记未被读取的已完成作业 [completed, unread].

行为

  • 前台子代理返回结果,或者在失败时抛出部分结果。Pi的中止阻止了他们。
  • 后台作业一旦完成就会触发后续回合,除非开始时是这样 notifyOnCompletion: false (包括 bg_run 和 subagent);然后等待结果 bg_logs,失败将页脚变为红色,直到它被读取。如果代理忙,则在下一个回合边界注入结果。阅读它 bg_logs 首先抑制尾流。 bg_kill 永远不会醒来。
  • 唤醒 display: false:模特领报告,成绩单无卡。页脚携带用户可见的状态。
  • 限制:16个运行shell任务,4个运行子代理,每种保存32条完成记录。
  • Shell任务在自己的进程组中运行(bash -lc): SIGTERM, 1.5 s后SIGKILL。日志 0600 在每个用户中 0700 目录(PI_BG_LOG_DIR 覆盖)。如果pi在没有shutdown钩子的情况下退出,则运行组被sigkill。
  • 工作生存 /reload;回调函数到达当前扩展实例。它们在任何其他关闭时停止。
  • 放在唤醒消息中的输出是xml转义和有界的。

代理并发

一次最多运行四个子代理,计算会话构建和拆除。进一步的请求排队(Queued subagent <id>),并在空闲槽位时以FIFO顺序开始;队列最多容纳64个请求,满队列拒绝新请求。前台调用通过队列等待;后台调用立即返回一个id,并保持通常的完成唤醒。读取队列工作不会将其未来结果标记为已读。 bg_kill 取消排队工作而不启动它或唤醒一个回合;Shutdown在停止运行子进程之前取消排队的工作。启动失败的会话将保留为失败报告,并遵循正常的唤醒规则。页脚计算正在运行的工作,而不是排队的工作。

一个状态键, bgtasks,通过 ctx.ui.setStatus,通道每个页脚扩展读取(Pi自己的,zentui,电力线,状态线,星舰风格)。一个键意味着选择一个位置。与pi-webtasks相同的配方:书呆子字体图标,256色,紧凑计数,盲文旋转器,同时运行任何东西。从会话开始时呈现为模糊的零,因此页脚在工作开始时保持其形状;会话结束时删除。仅在更改时设置。旋转器间隔仅在某些东西正在运行时存在。

其中有两个通道,shell任务和子代理。数字是有多少人在跑步;字形和颜色的变化,以显示车道的状态:

文本意味着
0 0 (暗)闲置
2⠋ 1⠋ (蓝色、紫色)两个shell任务和一个子代理正在运行
0 1⠋ (红色、紫色)shell任务失败了,没有人读过它,也没有人被它唤醒

一旦读取失败,红色清除 bg_logs、终止或作为唤醒传递给模型。文字记录中没有添加任何内容。Zentui的颜色模式 Original 保持这些颜色, Zentui 取代他们。任务中的名称和标签永远不会到达页脚。

setStatus 是唯一的通道,如pi-webtasks;没有任何内容作为zentui自定义变量发布,因此它不会显示两次。

集成协议

不变的 pi-bg-tasks V1,所以现有的读者(西蒙说桥)继续工作: globalThis[Symbol.for("jang.pi.bg.tasks.v1")] (Map<id, task>), globalThis[Symbol.for("jang.pi.bg.service.v1")] ({version, store, list, get}), pi.events bg-tasks:changed / bg-tasks:terminal.

子代理添加 globalThis[Symbol.for("jang.pi.bg.agents.v1")] (Map<id, run>), bg-agents:changed / bg-agents:terminal,有效载荷 {version: 1, run}.

代码映射

  • src/jobs.ts:工作分类账。两个通道的一个生命周期:v1存储和事件、id、结算、杀死、读/未读、修剪、页脚计数。
  • src/shell.ts, src/agents.ts两条车道。每一个都提供了它的工作是如何开始、停止和显示的; agents.ts 还拥有声明和模型选择。
  • src/scheduler.ts: FIFO在并发限制下运行调度程序;子代理队列。
  • src/notifier.ts:唤醒交付。空闲:现在发送;忙:追加到下一回合边界;结算:送剩下的;读取退出。
  • src/footer.ts:页脚行及其旋转项。
  • src/port.ts:通知器和页脚使用的到Pi的接缝;真正的适配器。测试使用带有手动时钟的记录仪。
  • src/host.ts这是世界上唯一一份经久不衰的纪录 /reload (绑定会话、挂起唤醒、页脚状态),以及在其上构建的通知器和页脚。
  • src/index.ts钩子和工具定义。

开发

npm run check        # type checker and tests
npm run smoke:pack   # pack, install the tarball, and load it in Pi

释放是 npm version patch (或 minor, major), git push --follow-tags;CI通过带有出处的npm可信发布发布。

已知的限制

  • 只在运行时由父模块注册的模型提供程序不会复制到子模块中;子进程自己加载扩展并获取它们所注册的内容。
  • 子代理扩展工具来自子代理自己的扩展负载,因此必须为子代理安装允许列表中的扩展工具。

版本与发布记录

@jangmanj/pi-bgtasks 共发布 3 个版本,首次发布于 2026/10/28;过去 12 个月发布了 3 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.1.1latest2026/11/012 天前
0.1.02026/10/285 天前
0.0.0-stage2026/10/285 天前

关于 @jangmanj/pi-bgtasks 的常见问题

@jangmanj/pi-bgtasks 是什么?

后台shell任务和Pi的进程内子代理:bg_run, bg_logs, bg_kill, subagent。

如何安装 @jangmanj/pi-bgtasks?

在项目目录运行 npm install @jangmanj/pi-bgtasks,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@earendil-works/pi-coding-agent(>=1.4.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@jangmanj/pi-bgtasks 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/jangmanj__pi-bgtasks 是否存在。

@jangmanj/pi-bgtasks 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@jangmanj/pi-bgtasks 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22.19.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@jangmanj/pi-bgtasks 可以商用吗?

@jangmanj/pi-bgtasks 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@jangmanj/pi-bgtasks 还在维护吗?

最新版本 0.1.1 发布于 2026/11/01(2 天前);至今共发布 3 个版本,其中过去 12 个月发布了 3 个;首次发布于 2026/10/28。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。