跳到主要内容

graph-job-orchestrator

已验证

@p-dsh-market/graph-job-orchestrator · v0.1.3 · Web 界面

DSH Graph Job 多 Subagent 任务图编排器

安装

dsh plugin add @p-dsh-market/graph-job-orchestrator

用 dsh --profile default --dump-config 确认 layer 已生效 —— 参见安装指南。

源码

发布到 npm 但没有公开仓库。安装前请检查包内容。

标签

说明文档

Graph Job 多 Subagent 任务图

@p-dsh-market/graph-job-orchestrator 实现评审稿中的阶段 0~4 基础闭环:

  • Graph Draft/Revision、Agent Profile snapshot、DAG validator、静态并行预览、受限 Planner patch;
  • %LOCALAPPDATA%/dsh-desktop/plugin-data/graph-job-orchestrator/ 下的原子 JSON 与 append-only JSONL 存储;
  • DSH in-process Subagent executor、merge barrier、read 并行/write 串行、失败暂停、有限 transport/rate-limit retry、取消和终止;
  • artifactRefs workspace-relative 校验、插件 Skill/Graph Job 递归保护、/graphjob 命令、Web API、SSE 和任务图编辑面板;
  • Codex provider 的能力发现、model/reasoningEffort 快照与 capability mismatch 错误;官方 subagent-codex 按 one-shot 运行,不会误走 DSH continuable 路径。

运行时必须先安装并注册 Codex Subagent provider,阶段 4 才会显示 Codex executor 可用;没有 provider 时不会伪装成可运行,而是在能力快照和运行错误中明确说明。当前仓库的本地 runtime 只有 DSH spawn/fork provider,因此不会在安装插件时自动修改 profile。

需要 Codex 时,在目标 DSH profile 安装官方 provider Bundle 后重启该 profile:

dsh plugin --profile <name> add @deepseek-ai/dsh-subagent-codex

插件只负责发现和校验 provider,不会代替用户安装 Bundle、登录 Codex 或修改 Codex 原生权限配置。

官方 Codex Bundle 的 model 是 provider 实例级静态配置,不是一次调用时的动态参数。若希望在 Graph Job 设置中选择多个 Codex 模型,可在目标 Profile 的 cordis.patch.yml 挂载多个命名实例,例如:

- insert:
    - id: graph-job-codex-luna
      name: '@deepseek-ai/dsh-subagent-codex'
      config:
        providerName: codex-luna
        model: gpt-5.6-luna
        permissionMode: never
    - id: graph-job-codex-sol
      name: '@deepseek-ai/dsh-subagent-codex'
      config:
        providerName: codex-sol
        model: gpt-5.6-sol
        permissionMode: never

Graph Job 会从 runtime capability snapshot 读取这些 provider/model;reasoningEffort 只有 Codex provider 明确公布可选值时才显示和发送。

主要端点:

  • GET /graph-job-orchestrator/capabilities
  • GET/PUT /graph-job-orchestrator/profiles
  • GET/POST/PATCH /graph-job-orchestrator/graphs
  • POST /graph-job-orchestrator/graphs/:id/preview|confirm|run
  • GET /graph-job-orchestrator/graphs/:id/preview/:previewId
  • GET /graph-job-orchestrator/templates
  • GET /graph-job-orchestrator/templates/previews/:previewId
  • POST /graph-job-orchestrator/templates/preview|confirm|bind
  • GET/POST /graph-job-orchestrator/subagents
  • POST /graph-job-orchestrator/planner/decision
  • GET /graph-job-orchestrator/runs/:runId/events
  • POST /graph-job-orchestrator/runs/:runId/retry|cancel|terminate

带目标的 /graphjob <目标> 会向当前主对话排入一次 Planner follow-up;空 /graphjob 只打开或创建空图。首次打开时生成的空手工占位图不会阻挡第一份模型草案;真正编辑过的手工锁定图会在任务图面板要求选择 saveAs 或 overwrite,选择通过 /planner/decision 提交,不会隐式改写当前模板。Planner 只接受当前会话的 roster、Graph JSON Schema 和受限 patch;候选图必须先 preview,再由用户确认。运行时输出严格投影为 text 和 artifactRefs,子会话 ID 只保存在运行状态和事件中。

POST /graph-job-orchestrator/subagents 按所选 Agent Profile 创建 Subagent。DSH provider 创建可继续对话的子会话;官方 Codex provider 使用 one-shot start,等待单轮结果后直接显示最终正文和脱敏诊断,不创建可继续的 Codex 会话。官方 provider 的 model、权限、MCP 和 Skills 由 Profile Bundle/原生 Codex 配置决定;只有 provider 明确公布动态能力时才允许按 Profile 传入对应字段。该入口默认过滤 skill 和 Graph Job 管理工具。Host 和客户端会输出 [graph-job-orchestrator] 前缀的脱敏诊断日志,只记录会话短标识、长度、状态、耗时和错误代码,不记录用户任务正文或 token。

模板 manifest 支持 scope: "workspace" | "global",默认是当前 workspace;workspace 模板不会出现在其他工作区的模板列表中。切换模板会创建新的 Graph Instance,不会把可变模板文件直接绑定为活动 Graph。

验证命令:

npm run check:graph-job
npm test
npm run catalog:validate
Push-Location market/graph-job-orchestrator
npm pack --dry-run --json
Pop-Location