🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

Agent 工作流引擎 TNJ2026/promptaflow

DeepSeek Harness
TNJ202653 天前有提交已提供中文文档扫描:含敏感能力

把目标编译成可检查的持久多智能体工作流

31.9/100
综合分
4
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查未通过:缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add TNJ2026/promptaflow
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · skill
装得上吗
本站已在 dsh 0.2.1-rc.5 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 53 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装

缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包promptaflow-ui-tests(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/10 13:37:20

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件
查看扫描证据(共 28 处,展示前 28 条)
  • 读取本地文件
    integration-core/lib/gateway.js:69
    const key = await realpath(workspace.canonicalPath);
  • 读取本地文件
    integration-core/lib/gateway.js:99
    const key = await realpath(workspace.canonicalPath);
  • 读取本地文件
    integration-core/lib/gateway.js:212
    return await this.runtimeFor(await realpath(workspace.canonicalPath), startIfMissing);
  • 执行外部命令来自配置/变量
    integration-core/lib/gateway.js:273
    const child = spawn(this.command, [...this.commandPrefix, ...args], {
  • 执行外部命令来自配置/变量
    integration-core/lib/gateway.js:293
    const child = spawn(this.command, [
  • 执行外部命令来自配置/变量
    integration-core/lib/gateway.js:309
    const child = spawn(this.command, [
  • 读取本地文件
    integration-core/src/gateway.ts:80
    const key = await realpath(workspace.canonicalPath)
  • 读取本地文件
    integration-core/src/gateway.ts:110
    const key = await realpath(workspace.canonicalPath)
  • 读取本地文件
    integration-core/src/gateway.ts:247
    return await this.runtimeFor(await realpath(workspace.canonicalPath), startIfMissing)
  • 执行外部命令来自配置/变量
    integration-core/src/gateway.ts:307
    const child = spawn(this.command, [...this.commandPrefix, ...args], {
  • 执行外部命令来自配置/变量
    integration-core/src/gateway.ts:328
    const child = spawn(this.command, [
  • 执行外部命令来自配置/变量
    integration-core/src/gateway.ts:341
    const child = spawn(this.command, [
  • 读取本地文件
    integrations/deepseek-harness/lib/gateway.js:69
    const key = await realpath(workspace.canonicalPath);
  • 读取本地文件
    integrations/deepseek-harness/lib/gateway.js:99
    const key = await realpath(workspace.canonicalPath);
  • 读取本地文件
    integrations/deepseek-harness/lib/gateway.js:237
    return await this.runtimeFor(await realpath(workspace.canonicalPath), startIfMissing);
  • 执行外部命令来自配置/变量
    integrations/deepseek-harness/lib/gateway.js:298
    const child = spawn(this.command, [...this.commandPrefix, ...args], {
  • 执行外部命令来自配置/变量
    integrations/deepseek-harness/lib/gateway.js:318
    const child = spawn(this.command, [
  • 执行外部命令来自配置/变量
    integrations/deepseek-harness/lib/gateway.js:334
    const child = spawn(this.command, [
  • 读取本地文件
    integrations/deepseek-harness/lib/index.js:452
    const key = await realpath(workspace.canonicalPath);
  • 读取本地文件
    integrations/deepseek-harness/lib/index.js:475
    const key = await realpath(workspace.canonicalPath);
  • 读取本地文件
    integrations/deepseek-harness/lib/index.js:579
    return await this.runtimeFor(await realpath(workspace.canonicalPath), startIfMissing);
  • 执行外部命令来自配置/变量
    integrations/deepseek-harness/lib/index.js:643
    const child = spawn(this.command, [...this.commandPrefix, ...args], {
  • 执行外部命令来自配置/变量
    integrations/deepseek-harness/lib/index.js:674
    const child = spawn(this.command, [
  • 执行外部命令来自配置/变量
    integrations/deepseek-harness/lib/index.js:702
    const child = spawn(this.command, [
  • 写入本地文件
    integrations/deepseek-harness/lib/index.js:2557
    await mkdir(dirname(target), { recursive: true });
  • 写入本地文件
    integrations/deepseek-harness/lib/index.js:2558
    await writeFile(target, Buffer.from(held.content, "base64"));
  • 写入本地文件
    integrations/deepseek-harness/src/index.ts:1179
    await mkdir(dirname(target), { recursive: true })
  • 写入本地文件
    integrations/deepseek-harness/src/index.ts:1183
    await writeFile(target, Buffer.from(held.content, 'base64'))
扫描于 2026/11/4(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 编排多智能体执行
  • 本地优先持久化运行

本地优先、持久化的工作流运行时,面向智能体应用——把静态工作流 DSL 编译成 LangGraph,通过 Codex、WorkBuddy、DeepSeek Harness 或任意 MCP 客户端编排可信的多智能体执行。

README

由 DeepSeek 最新模型翻译生成
PromptaFlow PromptaFlow 把一个目标变成持久、可检查的 Agent 工作流。描述你想完成的工作,让 Agent 生成静态 Workflow DSL,检查并发布,然后通过已安装的 Agent CLI 或当前对话执行它。 功能 - 根据自然语言要求生成、修改和复用工作流。 - 先校验静态 Workflow DSL,再由可信编译器编译成 LangGraph,不直接执行 Agent 生成的程序。 - 在已注册的 Agent CLI 上运行步骤,支持分支、条件、重试、审批和其他人工中断。 - 持久保存工作流版本、运行进度、控制台输出和生成的 Artifact,随时可以检查。 - 通过浏览器工作台、HTTP API、MCP 工具和五张 MCP App 卡片使用同一套工作流。 - 按 Workspace 隔离执行状态,同时在本机共享已发布的工作流库和可复用源码模板。 架构与实现 固定在 127.0.0.1:8848 的本地 Hub 是统一入口。它选择 Workspace,并把 MCP、API 和 UI 流量路由到该 Workspace 的 Control Runtime;Control Runtime 持有图状态、权限和作为唯一操作依据的 allowed_commands[]。
展开完整文档(README 剩余 1 节)
PromptaFlow

PromptaFlow 把一个目标变成持久、可检查的 Agent 工作流。描述你想完成的工作,让 Agent 生成静态 Workflow DSL,检查并发布,然后通过已安装的 Agent CLI 或当前对话执行它。

功能

- 根据自然语言要求生成、修改和复用工作流。
- 先校验静态 Workflow DSL,再由可信编译器编译成 LangGraph,不直接执行 Agent 生成的程序。
- 在已注册的 Agent CLI 上运行步骤,支持分支、条件、重试、审批和其他人工中断。
- 持久保存工作流版本、运行进度、控制台输出和生成的 Artifact,随时可以检查。
- 通过浏览器工作台、HTTP API、MCP 工具和五张 MCP App 卡片使用同一套工作流。
- 按 Workspace 隔离执行状态,同时在本机共享已发布的工作流库和可复用源码模板。

架构与实现

固定在 127.0.0.1:8848 的本地 Hub 是统一入口。它选择 Workspace,并把 MCP、API 和 UI 流量路由到该 Workspace 的 Control Runtime;Control Runtime 持有图状态、权限和作为唯一操作依据的 allowed_commands[]。每个 Runtime 通过带鉴权的 Execution Worker 运行 Agent CLI 等可信 Handler。工作流定义编译为 LangGraph,持久状态保存在 ~/.promptaflow/projects/。

Agent App / 浏览器 / API │ ▼ Hub :8848(MCP Gateway) │ ▼ Workspace Control Runtime ──► Execution Workers ──► Agent CLI / Handler │ └── LangGraph 状态、运行记录与 Artifact

安装

PromptaFlow 需要 Python 3.10 或更高版本,以及 uv。

通过 PyPI 安装

推荐把最新稳定版 CLI 安装到独立环境:

uv tool install promptaflow
paf --version
paf serve --project-root /你的项目绝对路径

安装预发布版本时,需要显式允许预发布版本:

uv tool install --prerelease allow promptaflow

也可以使用 pip 安装到当前 Python 环境:

python -m pip install promptaflow
安装预发布版本:
python -m pip install --pre promptaflow

PyPI 包提供 Runtime 以及 paf/promptaflow 命令,但不会安装 Agent App 集成或 MCP App 卡片;需要这些功能时,请继续按照下方对应宿主的文档安装。

使用提示词安装

把下面这句话发给受支持的 Agent App。Agent 会读取仓库里持续维护的文档,并为当前 App 选择正确的安装方式:

请为当前 App 安装这个仓库中的 PromptaFlow:https://github.com/TNJ2026/promptaflow

如果仓库已经 clone 到本地,请先在 Agent App 中打开该 checkout,再使用:

请从当前本地仓库为这个 App 安装或配置 PromptaFlow。不要重新 clone 或下载 Release;请阅读当前 checkout 中对应宿主的文档,保留本地修改,并在需要我亲自重启 App 或 Profile 之前停止并提醒我。

如果该 checkout 不是当前工作区,请把“当前本地仓库”替换为它的绝对路径。

各 App 的详细文档:

- Codex app
- WorkBuddy
- DeepSeek Harness

从源码运行

git clone https://github.com/TNJ2026/promptaflow.git
cd promptaflow
uv sync --extra dev
uv run paf serve

统一的 serve 命令会复用或启动 Hub、注册当前 Workspace,并等待受管 Runtime 就绪。
打开 http://127.0.0.1:8848/ui 可以查看正在运行的 Workspace。

Windows 可直接从 PowerShell、CMD 或资源管理器使用原生启动器,而且无需修改 PowerShell 执行策略:

start-promptaflow.cmd
restart-promptaflow.cmd
stop-promptaflow.cmd

需要启动其他 Workspace 时传入路径:

start-promptaflow.cmd "D:\Develop\your-project"

MCP App 卡片

PromptaFlow 提供五张紧凑的 MCP App 视图。在支持 MCP Apps 的 App 中,调用对应工具时,卡片会显示在对话旁边。下面的提示词可以直接用自然语言说出,Agent 会把它们映射到工具。

Workspace

- 提示词:打开 PromptaFlow。
- 功能:在同一张卡中打开目标、工作流、历史记录和 Agents,并显示当前或最近的目标。

Workflows

- 提示词:显示我的 PromptaFlow 工作流。
- 功能:列出已发布的工作流;选择后查看流程图和定义,并可新建目标、修改或删除。

Workflow generation

- 提示词:创建一个工作流:拆解并总结文章,然后生成一份简洁的演示文稿。
- 功能:启动 Agent 编写流程,显示原始要求、生成进度和最终工作流。

Goal execution

- 提示词:使用文章转演示文稿工作流处理这篇文章。
- 功能:启动目标并跟踪每个步骤、需要的人工输入、执行状态和最终结果。

Goals

- 提示词:显示我最近的 PromptaFlow 目标。
- 功能:列出最近的目标运行及其当前状态,并可进入单次运行详情。

工具映射、卡片行为和缓存刷新方式见卡片文档。

运行目标

1. 打开 目标。
2. 选择已发布的工作流,或者描述一个工作流并让 Agent 创建。
3. 输入目标并启动。
4. 在 Workspace 中跟踪步骤,或在 历史记录 中检查已完成的运行。

通过 MCP 使用时,主要工具是 list_workflows、generate_workflow、start_run、 inspect_run 和 cancel_run。客户端必须使用 Runtime 当前返回的 allowed_commands[],不得自行构造写操作 URL。

委托给当前对话执行

Agent 步骤通常交给工作流指定的 CLI。当系统没有安装 CLI,或希望当前 App 直接完成工作时,可以用 execution_mode="current_app" 启动。PromptaFlow 不改变工作流结构,而是把每个 Agent 步骤排队交给发起运行的对话,并把实际执行图随运行保存。该模式异步执行,支持并行分支,也支持从 checkpoint 安全恢复。

有哪几种触发方式

只能显式指定。没有 CLI 开关,界面上也没有切换项,更不会因为缺少 CLI 而自动降级——运行以哪种模式启动,就一直是哪种模式。

| 方式 | 做法 |
| 对 Agent App 直接说 | 在对话里讲清楚即可,内置 skill 会选好工作流并带上该模式 |
| MCP 工具 | start_run(workflow_id=..., goal=..., execution_mode="current_app") |
| HTTP API | POST /api/v1/langgraph-runs,请求体带 "execution_mode": "current_app" |

Agent 步骤指定了你未安装的 CLI 的工作流,默认会被目录过滤掉。为这个模式挑工作流时请用
ready_only=false 列出——缺 CLI 正是这个模式要抹平的事情。inspect_workflow_definition
也接受 execution_mode,可以在启动前先看它在这个模式下编译成什么样。

提示词

以该模式启动一次运行:

用 PromptaFlow 执行:。Agent 步骤都由你在当前对话里完成,不要调用 CLI。

用工作流 workflow: 执行目标:,委托给当前对话执行。

还不确定有没有合适的工作流时,先挑:

列出可以完全在当前对话里跑完的 PromptaFlow 工作流,包括那些我没装 CLI 的。

跟进一次已经委托出来的运行:

继续你正在替我执行的 PromptaFlow 运行——领取下一个步骤,做完并汇报产出。

对话通过委托工具驱动整个运行:list_delegations 查看排队的工作,claim_delegation 领取一个步骤,长时间执行期间用 checkpoint_delegation 和 renew_delegation, complete_delegation 交回结果。领取后未完成的步骤由 reconcile_delegation 回收。

CLI 快速参考

安装 promptaflow 会在 PATH 上放两个指向同一命令的名字:promptaflow——装的是什么就能敲什么;以及 paf,下面所有示例用的都是它。

paf serve
paf serve --project-root /absolute/path/to/project
paf hub register /absolute/path/to/project --no-agent-project-access
paf --version
paf runtimes --json
paf mcp
paf mcp --project-root /absolute/path/to/project --agent-project-access
paf run list
paf run inspect
paf workflow validate --catalog
paf workflow publish --catalog --expected-version

开发

uv sync --extra dev
.venv/bin/python -m unittest discover -s tests
node --test tests/ui/client_modules.test.mjs

构建 Python 包和插件包:

uv build
RELEASE_VERSION=X.Y.Z # 替换为本次发布版本,例如 X.Y.Z-alpha。
python scripts/build-marketplace-release.py \
--version "$RELEASE_VERSION" \
--output "dist/promptaflow-marketplace-${RELEASE_VERSION}.zip" \
--plugin-output "dist/promptaflow-plugin-${RELEASE_VERSION}.zip"

推送 vX.Y.Z 或 vX.Y.Z-alpha 这样的完整 SemVer 标签后,会执行跨平台 Release workflow,并上传 GitHub 分发产物。PyPI 发布只在手动运行 workflow 时按需启用;普通标签发布仍仅发布到 GitHub。
预览分享卡片长什么样 ↓TNJ2026/promptaflow
分享 · DeepSeek Harness Hub
TNJ2026/promptaflow

把目标编译成可检查的持久多智能体工作流

这是你的仓库?认领条目

回到顶部