前言¶
DeepSeek Harness (DSH) 的开发流程中,Agent 需要频繁启动并维护长期运行的服务,例如开发服务器、调试代理或事件监听器。这类任务与传统的“一次性作业”在生命周期管理、状态持久化和可见性上有本质区别。现有的机制往往难以兼顾这两者,导致状态丢失或生命周期混淆。
DSH Workloads 插件引入了“工作负载”这一概念,将其与“作业”解耦。它为 DSH 提供了一个持久化、工作区所有的工作负载管理能力,并附带了一个运行时中心,用于在会话内统一查看和管理这些长期服务。
这是什么¶
dsh-workloads 是一个 DeepSeek Harness 插件,由 yewenyell-lang 维护。
它的核心价值在于将“长期运行的服务”从“会话临时任务”中剥离,提供持久化的记录、日志存储以及可视化的运行时中心。该插件通过 Host 服务提供进程管理能力,并通过 Client 插件在 Web 界面中展示运行时状态。
核心功能¶
-
持久化工作区所有进程
工作负载的所有权属于规范工作区,而非 Agent 或会话。即使会话结束,工作负载的记录、日志和历史仍保留在${DSH_HOME}/runtime/workloads/目录下。重启时会生成稳定的workloadId和新的runId/generation。 -
运行时中心
在 Web 界面中提供运行中心入口。它展示会话内的“作业”和“工作负载”的独立状态,支持查看准备就绪状态、阶段、健康度、进程 ID 和日志尾部。工作负载卡片上的操作按钮(停止、重启)在所有阶段均可用。 -
Agent 工具集成
提供一套workload_*工具(如workload_start、workload_logs等),允许 Agent 在预设中直接控制工作负载。 -
本地进程提供者
当前版本仅提供 Windows 平台的本地进程管理能力,命令执行需满足安全策略。
安装与启用¶
安装该插件到 Web profile:
dsh plugin --profile web add github:yewenyell-lang/dsh-workloads#v0.3.0
安装后,Host 服务会自动挂载。验证配置是否生效:
dsh --profile web --dump-config
在 Agent 预设中启用工具消费者(注意:不要将共享服务隔离在此,仅将工具消费者放入 Agent 预设):
- id: tool-workloads
name: dsh-workloads-local-ui1/tools
config:
enableProcAliases: true
典型用法¶
- 通过上述命令安装插件并重启 DSH Web 进程。
- 在 Agent 预设中加载
./tools并配置enableProcAliases: true。 - 在 Web 界面中访问
运行中心,查看当前会话下的所有长期服务。 - Agent 可以调用
workload_start等工具启动服务,或通过 Web 界面手动停止/重启。
适用场景与注意¶
适用场景:
需要长期运行的后台服务,如本地开发服务器、中间件代理、调试器等。
注意:
1. 平台限制:本地进程提供者目前仅支持 Windows。
2. 安全策略:命令必须为单行,且会被拒绝包含密码、Token、JWT 等凭据形状的输入。请求的 cwd 必须在规范工作区内。
3. 环境变量:Runner/子进程环境会移除 DSH_* 和常见凭据变量名。
4. 准备就绪检查:仅支持日志文本、127.0.0.1 TCP 和无凭据的 http:// 本地 URL 作为准备就绪的证据。
5. 版本兼容:当前版本基于 DSH 0.1.0-rc.6 验证,服务/API 合同处于 pre-1.0 阶段。
6. 许可证:插件遵循 MIT 许可证,使用前请检查源码。
总结¶
DSH Workloads 通过明确区分“作业”与“工作负载”,解决了 DeepSeek Harness 中长期进程管理的痛点。它提供了持久化的存储、可视化的运行时中心以及 Agent 工具层,帮助开发者更安全、稳定地管理后台服务。