指挥 dsh(DeepSeek Harness)
dsh 是用户本机运行的 agent harness(Web UI 默认 http://127.0.0.1:3080,由 npx @deepseek-ai/dsh web 启动)。
本 skill 用 dshctl 通过其 HTTP API 完成网页端的全部操作,无需打开浏览器。
第一步永远是检查 Host
dshctl status
连不上时(报"无法连接"):dsh web 没在运行。告诉用户可用 npx @deepseek-ai/dsh web 启动,不要自己替用户启动长驻服务,除非用户明确要求。
地址不同时用环境变量 DSH_URL=http://host:port 覆盖。
命令速查
dshctl status # Host 概览(版本/默认模型/附带会话数)
dshctl sessions [-a] # 会话列表(-a 含子代理;后续命令一律用完整 sessionId)
会话与任务
dshctl new [目录] [-p 模式id] # 新建会话(目录默认 Host cwd)
dshctl send <sid> <文本> [--steer] # 追加指令(--steer 打断当前 turn 转向)
dshctl ask [-C 目录] [-p 模式id] [-t 秒] "任务…" # 一条龙:新建+发送+等待+打印回复
dshctl watch <sid> [-v] # 实时事件流(Ctrl-C / --exit-on-idle 退出)
dshctl log <sid> [-n N] [-v] # 会话记录(-v 含思考/工具结果/注入上下文)
dshctl rename|fork|cancel|search # 改名 / 分叉(需已有完成的 turn)/ 取消 / 搜索(可能被部署禁用)
模型与模式
dshctl models [sid] # 模型目录([多模态] = 接受图片);带 sid 显示该会话当前模型
dshctl use-model <sid> <provider> <model> [effort] # 切模型(off/high/max 等 effort 见 models 输出)
dshctl add-model --id <路由> --base-url <https://…/v1> [--key …] [--model <id>] [--context 1M] [--vision] [--set-vision]
dshctl vision [show|set <provider> <model>|clear] # 纯文本对话的可选视觉能力
dshctl providers # provider 列表(●=活跃)
dshctl plugins # 本机已装 / 已禁用插件
dshctl modes # 模式列表(见下方"模式选择指南")
dshctl use-mode <sid> <模式id> # 切模式(仅空白会话;建会话时用 -p 更稳)
slash 命令(人类命令通道,不触发模型 turn)
dshctl cmd <sid> /permission <read-only|workspace-write|danger-full-access>
dshctl cmd <sid> /plan [off|消息] # 进入/退出计划模式
dshctl cmd <sid> /goal <目标>|clear|pause|resume
dshctl cmd <sid> /compact # 压缩历史
目录与工作区
dshctl mkdir <父目录> <名> [--ws] # 建文件夹(--ws 同时纳为工作区)
dshctl ws-add <路径> # 将已有目录纳为工作区
dshctl workspaces # 工作区列表
审批(agent 请求危险操作时)
dshctl approvals <sid> # 列待审批(输出 rpcId + approvalId)
dshctl approve <sid> <rpcId> <approvalId>
dshctl reject <sid> <rpcId> <approvalId>
其他
dshctl skills <sid> # 该会话可用的 skills
dshctl raw <method> '<json>' # 原始 RPC 兜底
模式选择指南
模式 = agent preset,决定这个会话挂载哪些工具、系统提示和行为。只在建会话时选择(new/ask -p;已开跑的会话锁定,换模式就新开会话)。四个系统模式按能力递增:
standard 标准模式(默认,不确定就用它)
完整编码 agent:bash/pwsh、文件读写与搜索、后台任务、skills(含本地 ~/.claude/skills 发现)、web 搜索(只搜不抓)、todo、ask-user、计划模式(/plan 进入,产出方案经 exit_plan_mode 批准后才动手)、上下文压缩(长对话自动续命 + /compact)、子代理委派(subagent/subagent_fork,可后台 continuable)、多步 workflow 编排。
选它当:日常编码、改 bug、跑测试、仓库调研、文档撰写——绝大多数任务的默认答案。
code PTC 模式(standard + Code Mode SDK)
在 standard 全部能力之上,工具改以 TypeScript SDK 呈现:模型写一个 TS 程序组合多步操作、run_code 一次执行,原本 5 次工具往返合成 1 次。
选它当:大批量、重复性、可编程编排的工具操作——批量跨文件修改、系统性重命名/迁移、多阶段数据管道。往返次数多导致 standard 太慢/太贵时升级到它。不选它当:两三步就能完成的小任务(多一层编程开销反而慢)。
minimal 极简模式(两工具,最省最可控)
固定系统提示("You are a helpful software engineer assistant.",无运行时上下文注入),只有两个工具:持久 bash(PTY,工作目录/环境变量/函数跨调用保留,300s 超时)+ str_replace_editor。没有 web 搜索、子代理、todo、计划模式,没有上下文压缩。
选它当:小而明确的任务(改个配置、跑几条命令、看个文件)、要最可预测行为、要最省 token。不选它当:长对话(无压缩会撑爆上下文)、需要联网检索或多 agent 协作的任务。注意它的文件访问走裸本地 FS(绝对路径可达运行时进程可读的任何位置),配合 /permission read-only 可先锁只读。
cordis 创造模式(standard + 自我修改运行时)
在 standard 之上加自指工具集:cordis_mount 可读/改自己运行时的插件组合、挂载临时插件实验,附 composition 创作指导 skill,persona 讲清 HOST 平面与 AGENT PRESET 平面的分工。用户自建 preset(如 org-architect)就是这么造出来的,成品落在 ~/.dsh/.agent-presets/<id>/。
选它当:要 dsh 帮你造/改另一个 agent preset、实验插件组合。风险:cordis_mount 会执行模型写的 JS,等同 shell 权限——仅在用户明确要求时使用,并建议先在 /permission workspace-write 下进行。
补充:计划模式(/plan)不是第五种模式,而是 standard/code/cordis 会话内的一个状态(dshctl cmd <sid> /plan 进入、/plan off 退出),先出方案、批准后执行。模式在会话间不共享。
典型工作流
跑一个任务并等结果(最常用):
dshctl ask -C ~/myproject "总结这个仓库并指出主要模块"
输出即最终回复;会话保留可 send 追加。长任务加大 -t,或改用 new + send + 轮询 log。
在指定目录、指定模式下开任务:
dshctl mkdir ~/Documents work reports --ws # 建文件夹并纳为工作区(可选)
dshctl ask -C ~/Documents/work/reports -p standard "…"
接管已有会话:dshctl sessions 找到目标(标题/模式/目录),完整 sessionId 用 log 看上文,再 send 续聊,或 fork 分叉出副本再改。
切模型/权限:
dshctl models <sid> # 看可选模型与 effort
dshctl use-model <sid> deepseek-official deepseek-v4-pro high
dshctl cmd <sid> /permission read-only
配置大模型(用户说「配置一下模型 / 加一个 API / 配多模态」时用,不要打开网页):
dshctl status
dshctl add-model --id acme --base-url https://gateway.example/v1 \
--key "$DSH_MODEL_API_KEY" --model <模型id> --context 1M --vision --set-vision
dshctl models
dshctl vision
密钥用 --key 或环境变量 DSH_MODEL_API_KEY(--key - 从 stdin 读)。不要把密钥写进仓库、不要在回复里回显密钥。 --vision 把该模型标为多模态;--set-vision 把它设成纯文本对话贴图时的视觉能力(只切当前会话,不改默认对话模型)。省略 --model 时会先问接口;多个模型必须指定其一。--discover 只列出、不写入。
看已装插件:dshctl plugins
处理审批:任务卡住时(ask 会提示),dshctl approvals <sid> 列出,先问用户是否批准,再 approve/reject。
规则
- 绝不把 "/xxx" 文本用
send发给会话——那会被当成普通消息交给模型解释执行。slash 命令只走dshctl cmd。 approve(放行危险操作)与/permission danger-full-access必须先获用户明确同意;默认权限 workspace-write 已够大多数任务。- 会话 id 一律用完整值(
sessions输出的短 id 仅便于人看)。 - watch.mjs 的事件流是只读下行;一切应答走 HTTP(dshctl 已封装)。
- wire 协议以运行实例为准(本套按 0.1.0-rc.x 验证);若 dsh 升级后
raw/其他命令报 bad-request,用dshctl raw探测新方法名。