把Claude Code的UltraCode模式带给DSH,把 DSH 的一次性多 Agent…
60.8/100
综合分
143
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/14 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add omdsh-dev/dsh_workflow该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · skill
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 20 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(dependency_conflict · 2026/10/20) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意未发布到 npm registry,仅可从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包@dsh-external/workflow(未发布到 npm,仅可源码安装)
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/29 17:40:13
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 60 处,展示前 40 条)
- 读取本地文件lib/catalog.js:33
files = await readdir(directory); - 读取本地文件lib/catalog.js:56
const stat = await lstat(path); - 读取本地文件lib/catalog.js:62
const capsule = validateWorkflowCapsule(JSON.parse(await readFile(path, 'utf8')), options); - 读取本地文件lib/catalog.js:110
const stat = await lstat(path); - 读取本地文件lib/catalog.js:150
const capsule = validateWorkflowCapsule(JSON.parse(await readFile(entry.path, 'utf8')), options); - 读取本地文件lib/catalog.js:202
stat = await lstat(current); - 写入本地文件lib/catalog.js:208
await mkdir(current); - 写入本地文件lib/catalog.js:279
await writeFile(temporary, `${JSON.stringify(validated, null, 2)}\n`, { encoding: 'utf8', flag: 'wx' }); - 写入本地文件lib/catalog.js:298
await rename(target, backup); - 写入本地文件lib/catalog.js:301
await rename(temporary, target); - 写入本地文件lib/catalog.js:305
await rename(backup, target); - 删除本地文件lib/catalog.js:311
await rm(temporary, { force: true }); - 删除本地文件lib/catalog.js:317
await rm(target); - 删除本地文件lib/catalog.js:328
await rm(source); - 读取本地文件lib/store.js:22
return JSON.parse(readFileSync(path, 'utf8')); - 写入本地文件lib/store.js:35
mkdirSync(root, { recursive: true }); - 读取本地文件lib/store.js:38
if (!existsSync(marker)) { - 写入本地文件lib/store.js:40
writeFileSync(marker, json({ canonicalProjectDirectory: owner }), { encoding: 'utf8', flag: 'wx' }); - 写入本地文件lib/store.js:57
mkdirSync(join(runDir, 'artifacts'), { recursive: true }); - 写入本地文件lib/store.js:58
mkdirSync(join(runDir, 'results'), { recursive: true }); - 写入本地文件lib/store.js:68
appendFileSync(events, `${JSON.stringify(event)}\n`, 'utf8'); - 写入本地文件lib/store.js:75
writeFileSync(path, json(value), { encoding: 'utf8', flag: 'wx' }); - 读取本地文件lib/store.js:91
if (existsSync(own)) - 读取本地文件lib/store.js:96
if (!existsSync(prior)) - 读取本地文件lib/store.js:109
return existsSync(path) ? readJson(path) : undefined; - 读取本地文件lib/store.js:113
return existsSync(path) ? readJson(path) : undefined; - 删除本地文件递归lib/store.js:166
rmSync(this.runDir(runId), { recursive: true }); - 写入本地文件lib/scoped-review.js:175
await writeFile(filePath, content, { encoding: 'utf8', flag: 'wx', mode: 0o600 }); - 读取本地文件lib/scoped-review.js:180
const stats = await lstat(filePath); - 读取本地文件lib/scoped-review.js:181
if (!stats.isFile() || await readFile(filePath, 'utf8') !== content) - 写入本地文件lib/scoped-review.js:190
await mkdir(next); - 读取本地文件lib/scoped-review.js:196
const stats = await lstat(next); - 读取本地文件lib/scoped-review.js:199
current = await realpath(next); - 读取本地文件lib/scoped-review.js:220
const workspace = await realpath(path.resolve(input.cwd)); - 读取本地文件lib/engine.js:202
const info = await lstat(path); - 读取本地文件lib/engine.js:204
return createHash('sha256').update('symlink\0').update(await readlink(path)).digest('hex'); - 读取本地文件lib/engine.js:206
return createHash('sha256').update('file\0').update(await readFile(path)).digest('hex'); - 读取本地文件lib/engine.js:208
const entries = (await readdir(path)).sort(); - 发起网络请求lib/engine.js:612
const outcome = await this.deps.approval.request({ agent: run.input.parent, toolName: 'run_workflow', reason: preflight.approvalSummary, signal: run.c - 读取本地文件lib/engine.js:1105
const missing = (verification.requiredReadPaths ?? []).filter(path => !existsSync(isAbsolute(path) ? path : resolve(cwd, path))).map(path => `required
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
⚠ 该插件运行需访问外部网络 / 远程 API,部署在国内无外网环境时可能无法正常使用。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-commands@deepseek-ai/dsh-jobs@deepseek-ai/dsh-llm@deepseek-ai/dsh-session@deepseek-ai/dsh-session-title@deepseek-ai/dsh-subagent@deepseek-ai/dsh-system-prompt@deepseek-ai/dsh-tools@deepseek-ai/dsh-user-approval@deepseek-ai/dsh-user-questions给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 生成可保存工作流
- 多Agent调度治理
- 工作流可观察可恢复
展开完整介绍(85 字)↓
把Claude Code的UltraCode模式带给DSH,把 DSH 的一次性多 Agent 调度,升级为可生成、可保存、可治理、可观察、可恢复的 Workflow 层
README
由 DeepSeek 最新模型翻译生成DSH Workflow
把 DeepSeek Harness 的一次性多智能体调度,升级为可生成、可保存、可治理、可观察、可恢复的工作流层。
中文 · English ·快速开始 · DSH 价值 ·能力 ·对标矩阵
@dsh-external/workflow 是一个官方 bundle 形态、零核心补丁的 DSH 插件。它完整参考 KodaX 的工作流设计能力,并针对 DSH 的 Cordis、ctx.subagents、会话、后台 jobs、审批、命令和工具机制做独立实现。
它不替换 DSH 已有的前台 workflow 工具。原生工具适合「这一次把若干工作并行跑完」;本插件负责更高一层的流程产品能力:命名、发现、生成、复用、暂停/恢复、重跑/续跑、持久证据、成本记录和治理。
它为 DSH 带来什么
DSH 已经有很强的 Harness 基础设施:模型路由、子智能体服务商、工具权限、审批、会话日志、后台 jobs 与 UI 事件。但仅有这些「执行原语」,团队仍需在每次会话里重新描述如何拆解、并发、验证和汇总。
展开完整文档(README 剩余 1 节)
DSH Workflow
把 DeepSeek Harness 的一次性多智能体调度,升级为可生成、可保存、可治理、可观察、可恢复的工作流层。
中文 · English ·快速开始 · DSH 价值 ·能力 ·对标矩阵
@dsh-external/workflow 是一个官方 bundle 形态、零核心补丁的 DSH 插件。它完整参考 KodaX 的工作流设计能力,并针对 DSH 的 Cordis、ctx.subagents、会话、后台 jobs、审批、命令和工具机制做独立实现。
它不替换 DSH 已有的前台 workflow 工具。原生工具适合「这一次把若干工作并行跑完」;本插件负责更高一层的流程产品能力:命名、发现、生成、复用、暂停/恢复、重跑/续跑、持久证据、成本记录和治理。
它为 DSH 带来什么
DSH 已经有很强的 Harness 基础设施:模型路由、子智能体服务商、工具权限、审批、会话日志、后台 jobs 与 UI 事件。但仅有这些「执行原语」,团队仍需在每次会话里重新描述如何拆解、并发、验证和汇总。
| 只有一次性调度时 | 安装 DSH Workflow 后 |
| 每轮重新提示如何拆任务,策略难复用 | 保存为项目或个人工作流,按名字运行 |
| 并行结果散落在会话里 | run graph、事件、artifact、结果摘要和成本永久落盘 |
| 中断后通常从头重来 | 按 run snapshot 重跑,或用 effect cache 续跑未完成部分 |
| 服务商/模型/并发/预算靠提示词约束 | manifest + preflight + 运行时硬限制 |
| 生成的脚本容易越权或不可复现 | capability-only VM、JSON 边界、确定性 guard、审批分级 |
| 复杂流程只有作者自己知道怎么用 | capsule 自带 intent、inputs、requirements、provenance |
| 多智能体是一次性技巧 | 多智能体变成可审计、可分享、可演进的工程资产 |
对 DSH 项目本身,这个插件的价值是把已有 Harness 能力串成完整闭环:
flowchart LR
A["DSH providers / models"] --> W["DSH Workflow"]
B["tool filters / approval"] --> W
C["Session / jobs / commands"] --> W
W --> D["reusable capsules"]
W --> E["durable run graph"]
W --> F["resume / governance / evidence"]
因此,DSH 不只会「调用智能体」,还可以承载长期维护的智能体工作流库。
快速开始
要求:Node.js >=22.19,以及与 compatibility.json 一致的 DSH 快照。
构建产物已提交,git 源安装不需要在用户侧编译
dsh plugin --profile web add "github:dsh-external/dsh_workflow#main"
验证 bundle 已进入 profile 合成树
dsh --profile web --dump-config
预期配置中出现:
- id: dsh-external-workflow
name: '@dsh-external/workflow'
重启对应 DSH profile 后,在会话中输入:
/workflow list
/workflow parallel-investigation {"question":"为什么这个测试会间歇失败?"} /workflow create 为这个仓库设计一个并行安全评审流程 /workflow review --risk high --requirement "不得破坏公开 API" --test-evidence "pnpm test 通过" --wait /workflow runs /workflow create <request> 和未知名称的 /workflow <自然语言请求> 会像 KodaX 一样立即结束命令处理,并把显式 workflow 意图交给当前主 Agent。用户原始 query 以真正的 user message 进入 Session,所以会在对话中显示、参与 DSH 会话标题生成并可在左侧工作区中按标题识别;内部 authoring contract 则作为独立的折叠 plugin context 交给模型,不会污染标题或用户气泡。主 Agent 先用自身工具调查真实 workspace,再以 source + manifest 调用 run_workflow 生成和启动流程;长时间 scout/authoring 不会把斜杠命令卡在 command/run。这条命令只为对应消息中的第一次通过预启动冒烟校验的 inline workflow 提供一次性显式授权;如果脚本或子任务字段无效(例如 modelHint 不是 fast | balanced | deep),插件会在启动任何真实子 Agent 前返回精确错误,并保留本 turn 的一次性授权供主 Agent 修正后重试。内部 relay、后续直接用户消息或重复的有效调用都不能复用授权;工具产生的 scouting context 不会误撤销它。approvalMode: always 和 trusted-local workflow 的审批仍然保留。由于 authoring 由当前 Agent turn 接管,create/free-text 形式不接受 --wait;需要同步等待时请对命名 workflow、rerun、review 使用 --wait,或在工具调用中使用 wait: true。
DSH Web 的左侧工作区在“手动排序”且会话数超过 5 条时会折叠其余会话;新 workflow 会话已归属对应工作区,必要时点击“展开其余 N 个会话”,或将视图排序切换为“最近更新”让活动会话自动前置。
workflow 启动和 run_workflow 默认立即返回 { runId, status, jobId? },不会让一个长流程占住当前 turn;支持等待的子命令显式传入 --wait(工具参数为 wait: true)才等待终态。/workflow show 默认显示最新 run,/workflow stop 默认停止当前活动 run。
模型也可以调用三个工具:
- workflow_list:发现 built-in、pattern、项目和个人 workflow;无效条目会报告但不会执行。
- run_workflow:运行命名 workflow、从自然语言 scout-then-author,或执行受限 inline workflow。
- workflow_manage:查看、暂停、恢复、停止、重跑、续跑、保存、改名、修订、删除和清理。
能力
与 KodaX workflow 对标的执行模型
- 版本化 dsh.workflow v1 capsule:manifest、source、intent、inputs、requires、provenance。
- 统一 async function run(wf, args) 模型。
- 完整 WorkflowApi:phase、spawnAgent、runAgent、wait、snapshot/output、send/stop、parallel、pipeline、synthesize、单层嵌套 workflow、artifact、log、budget。
- runAgent 对普通子任务失败返回 null,让 workflow 能按策略降级;显式 handle 的 wait 仍保留完整失败结果。要求 object JSON Schema 的任务在原生 structured capture 缺失时只做一次同路由、无工具修复,仍不合规则明确失败。
- Agent 元数据:phase、scope、constraints、read-only、provider/subagent type、fast/balanced/deep 路由、显式 model、isolation、token、evidence、verification、output schema、terse result。
- 两个 built-in:可按 rubric/agent/concurrency 参数化的 parallel-investigation,以及完整 packet/schema/read-contract/双 primary/逐 finding verifier/audit artifact 的 scoped-review。公共 writeReviewPackets() 从调用方已经捕获的 diff、约束和测试证据生成工作区内 content-addressed、不可覆写的分区文件;/workflow review 可直接捕获当前 Git 范围并启动该流程,不依赖 DSH 核心额外提供 /review patch。
- 稳定的 ProcessSnapshot、WorkflowOutcome 与 AgentResult 投影:包含 item/count/progress、失败与未验证结果、structured output、验证证据、路由、usage、artifact 和缓存重放来源。
- 六个标准 pattern:classify-and-act、fan-out-and-synthesize、adversarial-verification、generate-and-filter、tournament、loop-until-done。
完整逐项验收见 KodaX 对标矩阵。本项目只参考行为与能力,不复制 KodaX 的受限许可源码。
发现与复用
搜索顺序是 deterministic 的:
1. 插件内置 workflow 与 pattern(不可被磁盘文件遮蔽);
2. 项目目录 .dsh/workflows;
3. 个人目录 $DSH_HOME/workflows。
项目同名条目覆盖个人条目;同一目录中 .workflow.json 优先于 .ts/.mjs/.js。符号链接、路径逃逸、超大文件、未知 capsule 字段、版本不兼容和 manifest/文件名不一致都会在执行前失败。
受限 capsule 示例见 examples/review.workflow.json。可信本地模块适用于人工维护的高权限流程,但每次执行都需要显式确认。
生命周期、持久化与续跑
每个 run 都有 running → paused/completed/failed/denied/stopped 状态和稳定 id。默认在项目中写入:
.dsh/workflow-runs/<run-id>/
├── run.json # 状态、结果摘要、成本 ├── events.jsonl # append-only 事件图 ├── workflow.workflow.json # 不可变执行快照(生成型 workflow) ├── results/ # 只保存已完成且验证通过的确定性 effect cache └── artifacts/ # workflow 命名证据
- 按 run id 重跑:使用该 run 的不可变 capsule snapshot。
- 按 saved name 重跑:使用当前保存版本。
- resume-run:相同调用序号 + 相同 task input 命中缓存,其余任务继续执行。
- 终态 run 自动按 maxRetainedRuns 清理;也可 preview/执行 prune。
- 同时记录原生 tool-workflow/* Session 事件,复用 DSH 已有 UI/可观察性。动态 workflow 的 run-start 使用 Session 生命周期:启动它的 tool step 或 Agent turn 结束时,后台流程仍保持 running,直到真实 run-end 决定完成、失败或取消,不再被 UI 误标为“已中断”。
常用命令
/workflow help
/workflow list
/workflow create <request>
/workflow review [base | sha <hash>] [--lean] [--risk low|medium|high] [--requirement "..."] [--test-evidence "..."] [--wait] [-- <focus>]
/workflow <name> [JSON args]
/workflow runs [--all|--limit N]
/workflow show [--full] [runId]
/workflow pause|resume|stop [runId]
/workflow rerun|resume-run <runId|savedName> [JSON args] [--wait]
/workflow save <runId> <name> [project|personal]
/workflow rename-run <runId> <display name>
/workflow rename-saved <from> <to> [project|personal]
/workflow revise <savedName> <change>
/workflow delete-run <runId> [--force]
/workflow delete-saved <name> [project|personal]
/workflow prune [--dry-run] [--keep N] [--older-than 7d|24h]
斜杠命令通过 ctx.userQuestions 做一次性人类确认;模型工具使用 DSH 当前 turn 的 ctx.approval。后台运行会尽可能注册到 ctx.jobs,并始终保留插件自己的 durable run id。三条路径共享同一个引擎、run store 和安全策略。
配置
常见配置如下;完整字段和治理建议见 配置参考。
- id: dsh-external-workflow
name: '@dsh-external/workflow'
config:
approvalMode: generated-and-local # never | generated-and-local | always
maxAgents: 64
maxConcurrency: 8
maxRetainedRuns: 500
fastProvider: spawn # ctx.subagents transport
fastModelProvider: deepseek-official
fastMaxTokens: 4096
balancedProvider: spawn # ctx.subagents transport
balancedModelProvider: deepseek-official
balancedMaxTokens: 8192
deepProvider: spawn # ctx.subagents transport
deepModelProvider: deepseek-official
deepMaxTokens: 16384
readOnlyAllowedTools: # 与当前父 Agent 可见工具动态求交集
- read
- read_image
- glob
- grep
- lsp
- skill
- web_search
availableTools、availableMcp、availableSkills 是部署能力清单,供 capsule preflight 使用。workflow 声明的 requirement 不在清单中时会失败,不会偷偷降级。
安全与能力边界
- 生成型脚本只能通过冻结的 WorkflowApi 发起 effect;脚本结果、参数和 RPC 值必须可 JSON 序列化。
- 生成脚本运行在 QuickJS WebAssembly 独立堆中;宿主只暴露 JSON capability RPC。静态 policy 还会拒绝 import/require、process、文件、shell、网络、timer 与非确定性 API。
- 同步执行、总墙钟、WASM 内存与栈都有上限;主函数返回或墙钟超时时会关闭 RPC、abort run,并等待所有已接收的宿主 RPC 与已发布 child 静默退出。可信本地模块仍具有宿主权限。
- readOnly: true 使用「当前父智能体可见工具 ∩ 可信只读 allow-list」,未来新增写工具默认不可见;服务商不支持 toolFilter 时直接失败。
- token budget 在子智能体发布前预留,本地智能体有 usage 时按会话实际值核算。
- read-path、成功 mutation tool + Git workspace 指纹变化、每个 required changed path 的前后内容指纹、final-text 与 bounded same-actor repair 已内建;部署可以用带稳定 cacheIdentity 的 registerVerificationAdapter() 叠加非 Git 或更强的 workspace 证据。worktree 通过 registerIsolationAdapter() 接入,未注册时明确失败。
- catalog 保存/替换/改名/删除使用规范化根目录、逐段 junction/symlink 拒绝与原子独占发布;并发同名保存不会互相覆盖。
- DSH one-shot seam 没有原生 existing-agent target / effort 控制;部署可在首次运行前注册 registerDispatchAdapter() 完整承接这两个字段,否则 fail loud。
更多细节见 安全模型和架构说明。
开发与验证
仓库旁需有兼容 DSH checkout,默认路径为 ../test-icetomoyo,也可设置 DSH_SNAPSHOT_DIR。
pnpm install
pnpm check # 快照 pin + 真实 DSH 投影 + 179 tests + typecheck + build
pnpm test:coverage # 语句/分支/函数/行全局阈值均为 80%
pnpm pack
兼容基线、commit 和验证时间记录在 compatibility.json。发布前必须重新 fetch DSH 默认分支并更新此文件。
已知限制
- trusted-local .ts 使用 Node 22 原生 erasable-syntax TypeScript,并遵循 Node module cache(修改后重启 DSH);需要 enum 等 transform-only 语法或热重载时请发布为 .mjs/.js。
- 当前 DSH 通用 subagent seam 不直接支持 existing-agent target、per-agent effort 和 worktree;相应请求需要部署注册 dispatch/isolation adapter,未注册时 fail loud。
- 内建 verification 能证明实际 read/mutation tool evidence、Git workspace 变化、每个 required path 的任务前后指纹与文本后置条件;非 Git 工作区或需要外部权威证据的策略由 verification adapter 补充。
- 仅生成型 capsule run 能保存不可变 script snapshot;纯函数 trusted-package/local run 不能从 run id 再保存。
- capsule v1 与 KodaX capsule 不做 wire compatibility;外部 capsule 不会被误执行。
- capability-generated 源码与宿主对象隔离;但 trusted-local workflow 会以 Node 宿主权限执行,不要把不可信第三方源码标为 trusted-local。
致谢
- DeepSeek Harness 提供 Harness、插件和子智能体能力面。
- KodaX 提供 workflow 产品设计的行为参考;本插件为独立实现。
- dsh-external 社区插件为 bundle 安装、验证、安全边界和文档结构提供了实践参考。
License
MIT,见 LICENSE。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
omdsh-dev/dsh_workflow
把Claude Code的UltraCode模式带给DSH,把 DSH 的一次性多 Agent…
相关插件 · 技能 / 提示词
人设统管ZiChuanLan/agent-purge
一份人设,统一管理多个 coding agent。
★ 991已汉化DSH
73.9
人物画像蒸馏titanwings/distilly
Distilly — 把他们的思考方式提炼成可复用的技能,供任何智能体或机器人使用。原名 Colleague Skill(原同事 Skill)。
★ 25,659已汉化DSH
71.3
推理工作空间套件Tiger3807861189/J-Space-Cognition-Suite
J-Space 是面向复杂推理、大型仓库工程、子代理协作与授权安全分析的推理时工作空间和控制套件。
★ 2,957已汉化DSH
70.5
两阶段工具锚定预设xiaobright/dsh-anchored-standard
实验性 DeepSeek Harness agent preset…
★ 3,742已汉化DSH
70.1
智能体工作流编排nrslib/takt
不再日夜盯着 AI 编码智能体。
★ 1,402已汉化DSH
70
Agent 运行时手册Electricitysheep/dsh-handbook
DeepSeek Harness dsh 从 0 到 1 深度手册:安装/插件开发/性能调优/实测案例/同模型多…
★ 827已汉化DSH
68.7