前言¶
DeepSeek Harness(DSH)可以调用本机上的外部 Agent CLI,但「默认交给谁执行」往往要写在配置里,换工具或换机器就要改配置。社区插件 dsh-agent-picker(目录页标识 ok541151/cwk,npm 包名 dsh-agent-picker)在 Web 界面输入框右侧增加一个控件,用法类似选推理档位:选定一个外部 Agent CLI 作为当前会话的默认执行体,并自动探测本机已安装的 CLI。名册由 agents.json 驱动,新增 Agent 主要是加数据而不是改插件代码。
这是什么¶
维护者 Ok541151,GitHub 仓库 Ok541151/cwk,在 SkillHub 分类为工作流。插件只做调度,不附带任何 Agent;列表内容来自本机探测,出厂名册为空是刻意设计。
核心功能¶
界面与执行体选择¶
在 DSH Web 输入框右侧提供 Agent 模式选择器。选中项决定本轮任务默认由哪个外部 CLI 执行。插件把「有哪些 Agent、如何启动」做成数据(agents.json 及用户侧副本)。
自动发现已安装的 CLI¶
探测顺序:PATH → 托管目录(默认 ~/dsh-clis/bin,可用环境变量 DSH_AGENT_PICKER_CLI_DIR 覆盖)→ ~/.local/bin。README 声明内置识别 31 个 Agent 名字,其中 11 个带经验证的启动配方(探测到即可调用),20 个仅识别、需在名册或约定目录补 launch 后才能调用。
只接受 4 个字符以上的探测名(amp 为 Sourcegraph 官方 CLI 的例外),以降低同名无关程序的误报。
数据驱动的名册¶
首次启动会把自带的 agents.json 复制到 $DSH_HOME/agent-picker.agents.json(默认 ~/.dsh/),之后修改以这份为准,插件升级不会覆盖。另支持 $DSH_HOME/agent-picker.d/*.agent.json 落地条目(README 安全说明中提及)。
名册字段包括:id、name、tool、bin、available、kind(task / chat)、expertise、note、desc,以及可选的 launch(含 bin / argv / env / timeoutMs / graceMs / maxBytes)。配置了 launch 时,插件会注册 cli_<id>_direct 工具。
launch.argv 中应使用裸文件名或 {cliDir}/...,由运行时解析到 cliBinDir;绝对路径可原样保留。占位符包括 {task}、{permflags}、{permission}、{model}、{image};{permflags} 由名册中的 permFlags / defaultPermFlags 展开。
权限档与工具参数¶
工具可选参数 permission 取值为 read-only / workspace-write / danger-full-access,会翻译成各 CLI 自己的参数(非插件自行沙箱)。不传时使用各 Agent 文档中说明的默认档,以避免无头执行卡在审批。所有 Agent 工具的正文参数统一为 prompt(task 为兼容别名)。
与 DSH 版本的兼容¶
dsh.compatibility 声明为 >=0.1.5。插件仅使用 ctx.tools.register、ctx.tools.guard、ctx.subprocess、ctx.webServer.register,不依赖已移除的设置注册 API。
安装与启用¶
官方安装命令如下:
dsh plugin add dsh-agent-picker
安装完成后重启 DSH。若要自定义 Agent 列表或启动方式,编辑 $DSH_HOME/agent-picker.agents.json 或按界面「怎么补?▼」引导在约定目录写入 .agent.json,改完再次重启 DSH。
典型用法¶
1. 安装后直接使用已带配方的 CLI¶
在本机安装 README 列出的、带启动配方的 Agent(如 Aider、Qwen Code、Gemini CLI、Codex、Claude Code、Cursor CLI 等),重启 DSH 后在下拉框中选择对应项作为默认执行体。部分 Agent 还需凭据或本地服务(例如 Ollama 需本机服务且配方中模型名为 qwen3:4b;Qwen Code 需 DEEPSEEK_API_KEY 等),README 在「需要额外条件」表中单独说明。
2. 为「只识别」的 CLI 补启动配方¶
列表中显示「已检测到,需配置启动方式」时,可展开 「怎么补?▼」:复制带真实路径的 --help 命令、确认一次性执行的 flag,再按模板修改 argv 并保存到约定目录,例如:
{
"id": "copilot",
"name": "GitHub Copilot CLI",
"tool": "cli_copilot_direct",
"kind": "task",
"launch": { "bin": "C:\\你的路径\\copilot.CMD", "argv": ["-p", "{task}"] }
}
保存后重启 DSH,条目会从待配置进入可调用状态。
3. 手动往名册加一条 Agent¶
在 $DSH_HOME/agent-picker.agents.json 的 agents 数组中追加对象,填齐 id、name、tool、bin 等字段;需要插件直接拉起进程时写上 launch。改完重启 DSH。
适用场景与注意¶
适合谁: 经常在同一台机器上切换 Claude Code、Codex、Aider、本地 Ollama 等不同 CLI,又希望用界面选择而不是改全局配置的用户;也适合通过 JSON 扩展自研 Agent 包装器。
平台: README 标明作者主要在 Windows 上实测;macOS / Linux 代码按 POSIX 编写但未在真机完整验证,POSIX 上 PATH 裸名探测等行为有断言保护,各 CLI 自身行为需自行验证。
安全与权限: 插件会按名册在本机启动外部程序,子进程继承当前用户权限;不是沙箱。名册中的 launch.bin / launch.argv、约定目录中的 JSON、以及 PATH 上同名命令都可能成为执行面。安装前建议阅读仓库源码与 MIT 许可证(package.json 版本 0.5.2),并限制 $DSH_HOME 目录权限。插件启动子进程时会剥离名称含 KEY/TOKEN/SECRET/PASSWORD 的环境变量及全部 DSH_*,并设有默认超时与输出上限。
常见误区: 出现在列表中不等于能调用——无配方、npm 残留 shim、缺凭据或服务时仍可能失败;README 用 PowerShell 示例说明如何检查 shim 是否仍指向有效可执行文件。
DSH 生态强调「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。
链接¶
- 目录页:https://www.skillhub.cn/plugins/Ok541151/cwk
- GitHub:https://github.com/Ok541151/cwk
- 安装:
dsh plugin add dsh-agent-picker