让工作流子代理持久留存,随时冷恢复继续对话
29.5/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/26 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Anonymousnake/dsh-workflow-continuable该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · chat
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 43 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🟢 扫描:未发现敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-brand@deepseek-ai/dsh-util-values@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-llm@deepseek-ai/dsh-session@deepseek-ai/dsh-subagent@deepseek-ai/dsh-tools@deepseek-ai/dsh-workflow给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 子代理持久留存
- 冷恢复继续对话
- 即插即用工作流引擎
即插即用的 DSH 工作流引擎,子代理可持久续跑
README
由 DeepSeek 最新模型翻译生成dsh-workflow-continuable
这是 @deepseek-ai/dsh-workflow-worker-thread 的可直接替换版本:让普通 DSH workflow agent() 使用持久化、可续接的子代理,同时保留 workflow 脚本原来的前台返回语义。
解决的问题
上游 worker-thread 引擎通过一次性的 ctx.subagents.start() 创建所有 workflow 子代理。workflow 完成后,这些子代理不能继续对话;父 workflow 取消时,子代理剩余工作也由同一个取消信号控制。
本模块保留原 worker、VM 和 workflow 脚本接口,只替换普通文本子代理的生命周期桥接:
workflow agent()
-> 预分配持久 child id -> startContinuable() -> 等待对应 subagent/end -> 把 lastAssistantMessage + stopReason 转成原 ChildResult -> 按原方式向 workflow 脚本返回文本或 null
workflow 释放时只移除本地结果监听器,不删除、不中止已经接收任务的 continuable 子代理。子代理之后仍可被 list_agents 找到,并能通过 send_message 冷恢复。
展开完整文档(README 剩余 1 节)
dsh-workflow-continuable
这是 @deepseek-ai/dsh-workflow-worker-thread 的可直接替换版本:让普通 DSH workflow agent() 使用持久化、可续接的子代理,同时保留 workflow 脚本原来的前台返回语义。
解决的问题
上游 worker-thread 引擎通过一次性的 ctx.subagents.start() 创建所有 workflow 子代理。workflow 完成后,这些子代理不能继续对话;父 workflow 取消时,子代理剩余工作也由同一个取消信号控制。
本模块保留原 worker、VM 和 workflow 脚本接口,只替换普通文本子代理的生命周期桥接:
workflow agent()
-> 预分配持久 child id -> startContinuable() -> 等待对应 subagent/end -> 把 lastAssistantMessage + stopReason 转成原 ChildResult -> 按原方式向 workflow 脚本返回文本或 null
workflow 释放时只移除本地结果监听器,不删除、不中止已经接收任务的 continuable 子代理。子代理之后仍可被 list_agents 找到,并能通过 send_message 冷恢复。
特性
- 子代理 descriptor 持久保存为 mode: "continuable"。
- 保持原有 agent() 文本返回值和失败 null 语义。
- 持久保存每个成员的 label、LLM provider 和 model。
- 不同 provider 的成员独立保存路线,恢复时继续使用原模型。
- 一个成员失败不会取消 parallel() 中的其他成员。
- workflow 取消只脱离结果收集;已接收任务的子代理仍可恢复。
- 可设置 childMode: "one-shot" 恢复上游行为。
- 带 schema 的结构化调用保留上游 one-shot 校验路径,避免伪结构化降级。
兼容范围
首个版本面向 DeepSeek Harness 0.1.5-rc.2 系列 API,需要 Node.js 22 或更高版本。
本项目修改自 MIT 许可的 @deepseek-ai/dsh-workflow-worker-thread。版权与许可信息见 NOTICE 和 LICENSE。
从 GitHub 安装
进入实际运行 DSH Web 的 profile:
pnpm add github:Anonymousnake/dsh-workflow-continuable
建议固定 release 或 commit:
pnpm add github:Anonymousnake/dsh-workflow-continuable#v0.1.0
不要同时加载本模块和 @deepseek-ai/dsh-workflow-worker-thread,因为两者都会注册 ctx.workflowEngine。
配置
在当前 profile 的 Cordis 配置中,把原引擎:
- id: workflow-worker-thread
name: '@deepseek-ai/dsh-workflow-worker-thread'
config:
provider: spawn
替换为:
- id: workflow-worker-thread
name: dsh-workflow-continuable
config:
provider: spawn
childMode: continuable
保留 workflow 工具:
- id: tool-workflow
name: '@deepseek-ai/dsh-tool-workflow'
修改 composition 后重启 DSH Web。
配置项
| 配置 | 默认值 | 含义 |
| provider | spawn | 创建子代理所用的 ctx.subagents 生命周期 provider。 |
| childMode | continuable | 普通文本调用的生命周期;可设为 one-shot。 |
| maxConcurrentAgents | 0 | 并发子代理上限;0 表示按 CPU 自动计算。 |
| maxTotalAgents | 1000 | 单次 workflow 最多启动的成员数。 |
| maxItemsPerCall | 4096 | 单次 parallel()/pipeline() 接受的最大项目数。 |
| syncTimeoutMs | 5000 | workflow 脚本初始同步 VM 片段超时。 |
| disposeGraceMs | 5000 | workflow 取消和释放的宽限时间。 |
跨 provider 示例
const routes = [
{
label: "deepseek-auditor",
provider: "cline-pass",
model: "cline-pass/deepseek-v4-flash",
},
{
label: "glm-auditor",
provider: "opencode-go",
model: "glm-5.3-flash",
},
{
label: "codex-auditor",
provider: "openai-codex",
model: "gpt-5.6-sol",
},
];
const results = await parallel(
routes.map((route) => () =>
agent("完成审计并返回简洁结果。", {
label: route.label,
provider: route.provider,
model: route.model,
}).then((output) =>
output === null || output === ""
? { ...route, ok: false, reason: "child failed or returned empty" }
: { ...route, ok: true, output }
)
)
);
return { results };
workflow 完成后可以用 list_agents 找到各成员,再按 ID 继续:
send_message({
agent_id: "",
message: "继续检查下一部分。", });
持久化 descriptor 会区分生命周期 provider 和实际 LLM 路线:
{
"mode": "continuable",
"provider": "spawn",
"label": "codex-auditor",
"agentProvider": "openai-codex",
"agentModel": "gpt-5.6-sol"
}
结构化输出边界
目前 DSH startContinuable() 不接受每次 activation 独立的 outputSchema,而上游一次性 in-process driver 会安装专门的结构化结果工具并验证输出。因此:
- agent(prompt, { label, provider, model }) 使用 continuable。
- agent(prompt, { schema, ... }) 暂时使用上游 one-shot 路径。
本模块不会把未经验证的普通文本静默当作结构化结果。完整的 continuable schema 支持需要上游增加 activation result contract。
取消行为
初始消息被 continuable inbox 接收后,启动时的 signal 不再拥有该子代理。取消或释放 workflow 会:
1. 在宽限时间内取消并终止 workflow worker;
2. 释放 workflow 本地结果适配器;
3. 保留已接收任务的子代理会话;
4. 允许标准 continuation manager 向父代理发送完成通知。
如果要停止子代理本身的当前回合,应使用 interrupt_agent。
开发与测试
npm install
npm run check
npm test
npm pack --dry-run
测试覆盖:
- continuable 结果收集;
- label/provider/model 转发;
- workflow 取消后子代理不被销毁;
- 并行成员失败隔离;
- childMode: "one-shot" 兼容开关;
- schema 调用继续使用 one-shot 结构化路径。
许可证
MIT,并保留 DeepSeek 原始版权与许可声明。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Anonymousnake/dsh-workflow-continuable
让工作流子代理持久留存,随时冷恢复继续对话
相关插件 · 对话 / 记忆
上下文中枢oceanbase/powercontext
上下文跟着工作走 —— 跨会话、跨智能体、跨人。
★ 1,489已汉化DSH
73.1
智能体记忆库plastic-labs/honcho
Honcho 是记忆基础设施,用来构建有状态的智能体。这些智能体能理解不断变化的人、智能体、群组、项目和想法。
★ 7,918已汉化DSH
71.7
长程智能体控制面loopx-project/loopx
给 Agent 一个目标,让工作持续向前。
★ 6,358已汉化DSH
71.3
智能体上下文数据库volcengine/OpenViking
给 AI 智能体用的上下文数据库
★ 41,453已汉化DSH
71.3
长效机器人团队Fei2411/DS-Bot
Download DS Bot for Windows 10/11 64-bit / 下载 Windows…
★ 5,293已汉化DSH
71.2
可携带记忆层EverMind-AI/EverOS
为什么选择 EverOS
★ 13,797已汉化DSH
71.1
这是你的仓库?认领条目