pi-dynamic-workflows (GitHub 仓库)
摘要
pi-dynamic-workflows 是一个 Pi 扩展,它添加了一个工作流工具,允许模型编写 JavaScript 脚本以将工作分发给多个子代理,从而支持代码库审计和大规模重构等任务。
pi-dynamic-workflows 是一个 Pi 扩展,它添加了一个工作流工具。它允许助手编写经济的 JavaScript 脚本,将工作分发给许多独立的子代理,然后综合结果。子代理可以读取文件、运行 shell 命令,并像普通的 Pi 轮次一样紧凑地调用结构化输出。该工具非常适合代码库审计、多视角审查、大规模重构和分发研究。
查看缓存全文
缓存时间: 2026/06/01 18:37
Michaelliv/pi-dynamic-workflows 源代码: https://github.com/Michaelliv/pi-dynamic-workflows # pi-dynamic-workflows > 为 Pi( https://github.com/earendil-works/pi )提供的 Claude-Code 式动态工作流。 一个为 Pi 添加 workflow 工具的扩展。不同于一个助手顺序执行所有任务,模型会编写一小段 JavaScript 脚本,将工作分发给多个隔离的子代理,然后合成结果。非常适合代码库审计、多角度审查、大规模重构以及发散式研究。受 Anthropic 在 Claude Code( https://claude.com/blog/introducing-dynamic-workflows-in-claude-code )中引入的动态工作流启发。 ## 安装 bash pi install npm:pi-dynamic-workflows # 或从本地检出安装 pi install /path/to/pi-dynamic-workflows 然后在 Pi 中执行: text /reload 就这样。该扩展会注册一个 workflow 工具,并在会话启动时激活。 ## 使用方法 直接用自然语言要求 Pi 执行工作流: text 执行一个工作流,检查此仓库并总结主要模块。 模型会编写一个工作流脚本并调用 workflow 工具。实时进度会以内联方式显示: text ◆ 工作流: inspect_project (3/3 完成) ✓ 扫描 1/1 #1 ✓ 仓库清单 ✓ 分析 2/2 #2 ✓ 源代码模块 #3 ✓ 最终总结 按 Esc 可以取消正在运行的工作流。活跃的子代理会被中止并标记为跳过。 ## 工作流脚本结构 工作流是纯 JavaScript。第一条语句必须导出字面量元数据。name 和 description 是必需的;phases 是可选文档,用于描述预期的阶段大纲。实时进度视图由运行时的 phase(...) 调用驱动: js export const meta = { name: 'inspect_project', description: '检查一个仓库并总结主要模块', phases: [ { title: '扫描' }, { title: '分析' }, ], } phase('扫描') const inventory = await agent('检查仓库结构。', { label: '仓库清单', }) phase('分析') const summary = await agent( '根据此清单总结主要模块:\n' + inventory, { label: '模块总结' }, ) return { inventory, summary } 阶段会在脚本运行时动态发现,因此条件和循环创建的阶段都能正常工作。如果某个分支被跳过,其阶段不会作为空进度行显示。 ### 编辑器 IntelliSense 可复用的工作流文件可以通过以下方式为工作流全局变量启用编辑器提示: js /// <reference path="./path/to/pi-dynamic-workflows/workflow-globals.d.ts" /> 这会为 TypeScript 感知的编辑器声明 agent、parallel、pipeline、phase、log、args、cwd 和 budget。 ### 可用的全局变量 | 全局变量 | 说明 | | — | — | | agent(prompt, opts) | 生成一个隔离的子代理。返回其最终文本;若传入 opts.schema,则返回验证后的对象。 | | parallel(thunks) | 并发执行一个 () => agent(...) 的 thunk 数组。结果按输入顺序返回。 | | pipeline(items, ...stages) | 对每个项目依次执行多个阶段,同时项目之间可以并行处理。每个阶段接收 (prev, original, index)。 | | phase(title) | 标记当前阶段。用于在实时进度视图中分组。 | | log(message) | 追加一条工作流级别的日志。 | | args | 通过工具的 args 参数传入的可选 JSON 值。 | | cwd, process.cwd() | 子代理的当前工作目录。 | | budget | { total, spent(), remaining() } Token 预算跟踪器。 | ### 确定性规则 工作流脚本在 Node vm 沙盒中执行。以下内容被故意禁用: - Date.now(), new Date() - Math.random() - require, import, fs, 网络 API - 展开运算符、计算属性键、模板插值、meta 内部的函数调用 这保证了 meta 可解析、运行可重现,并且攻击面很小。 ### 结构化子代理输出 通过 opts.schema 传入 JSON Schema,子代理将返回验证后的对象: js const finding = await agent('查找安全敏感文件。', { label: '安全扫描', schema: { type: 'object', properties: { paths: { type: 'array', items: { type: 'string' } }, reason: { type: 'string' }, }, required: ['paths', 'reason'], }, }) 底层使用了 Pi 的 structured_output 工具并设置 terminate: true,因此子代理会在该调用后结束,无需额外的助手轮次。 ## 工作原理 text 用户提示 → Pi 模型编写工作流脚本 → 工作流工具在 vm 沙盒中解析并运行脚本 → 脚本调用 agent()、parallel()、pipeline() → 每个 agent() 生成一个内存中的 Pi 子代理会话 → 快照以紧凑的进度流返回 → 最终结构化结果返回给父助手 子代理在全新的内存 Pi 会话中运行,拥有标准编码工具,因此它们可以读取文件、执行 shell 命令以及调用结构化输出,与普通的 Pi 轮次完全一样。 ## 库模块 | 文件 | 用途 | | — | — | | src/workflow.ts | AST 验证解析器和沙盒化的工作流运行时。 | | src/workflow-tool.ts | Pi 的 workflow 工具、提示指南、渲染、中止处理。 | | src/agent.ts | WorkflowAgent,一个内存中的 Pi 子代理运行器。 | | src/structured-output.ts | 基于 TypeBox/JSON Schema 的终止式结构化输出工具。 | | src/display.ts | 工作流快照和紧凑文本渲染器。 | | extensions/workflow.ts | Pi 扩展入口点。 | ## 开发 bash npm install npm test # biome 检查 + tsc + 单元测试 npm run dev 解析器单元测试位于 tests/workflow-parser.test.ts,涵盖了接受和拒绝的脚本形状。 ## 状态 这是一个原型。它实现了核心的工作流原语(脚本、子代理、并行/管道、阶段、中止、结构化输出),但尚未实现持久化或可恢复的运行,也没有 /workflows 管理器。 ## 许可 MIT
相似文章
@geekbb: pi-workflow 是一个为 Pi 设计的工作流编排工具,让 Pi 能执行多步骤、可复用的工作流,而不是只有单轮对话。用自然语言就能触发,不用每次手写提示词。 四种工作流直接用: - deep-research 做深度研究 - dee…
pi-workflow 是一个为 Pi AI 助手设计的工作流编排工具,使其能够执行多步骤、可重复的工作流,包括深度研究、代码审查、规格检查和影响评估。它通过 JSON 阶段图定义工作流,支持多种执行模式。
@vintcessun: 原来 LLM 还能自己写工作脚本,把任务拆给一群子代理并行干。 单个助手顺序思考,遇到代码库审计、大型重构这种活,要么慢,要么思路串。 pi-dynamic-workflows 让模型直接生成一段 JS 脚本,用 agent()、para…
介绍 pi-dynamic-workflows,一个让 LLM 通过生成 JavaScript 脚本动态编排多个子代理并行执行任务的工具,适用于代码审计、大型重构等场景。
@yibie: 最近 Pi 生态出了几个值得关注的扩展。pi-discuss-mode 让你和 agent 对话时不用担心误操作;Pi Exa 给 Pi 接上了网页搜索;pi-workflow 用 JSON spec 标准化多 agent 工作流。做一个…
介绍了 Pi 生态中几个值得关注的扩展,包括安全讨论模式、网页搜索、多 agent 工作流编排以及模型用量可视化工具。
agegr/pi-web
pi-web 是一个用于 pi coding agent 的本地 Web 用户界面,在浏览器工作区中提供会话浏览、实时聊天、模型配置和文件预览。
@omarsar0: 刚刚就动态工作流进行了精彩的讨论。粗略笔记:- 适用于极少数用例 - 将其视为…
关于测试时计算中动态工作流的讨论,包括其有限的用例、对研究实验的好处,以及对更好基准测试的需求。提及了用于智能体编排的模型如Mythos和Opus 4.8。