DeepSeek Harness Hub
← 返回列表

xiangbo3/dsh-cli

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
需源码安装

DeepSeek Harness,就在你的终端里。

暂不能直接安装(需源码编译或环境不满足):仓库缺少 package.json,无法用 dsh 插件安装命令安装。 · 最近上游提交 2026/9/12 · 已提供中文文档

dsh-cli 是 Deepseek Harness 的终端客户端

综合分
33.2
GitHub 分
33.2
用户评分
★ Stars
5
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add xiangbo3/dsh-cli
仓库缺少 package.json,无法用 dsh 插件安装命令安装,改用 GitHub 源安装
数据截至 2026/9/17(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查需源码安装

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

npm 包dsh-cli(未发布到 npm,仅可源码安装)
Node 引擎未声明 engines.node
dsh CLI 依赖未声明 dsh 版本约束
入口文件缺少入口声明

仓库缺少 package.json,无法用 dsh 插件安装命令安装

验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/18 16:59:31

用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

⚡ dsh-cli

DeepSeek Harness,就在你的终端里。

直接在终端中畅享 DeepSeek Harness —— 一个 Go 二进制文件。无需 Node。无需前端构建步骤。

Go
TUI
i18n
License

🇺🇸 English · 🇨🇳 阅读中文版

这是什么

dsh-cli 是 DeepSeek Harness(dsh web)的终端客户端。它使用与 Web 客户端完全相同的协议——因此你在浏览器里能做的所有事情,都可以用键盘完成,而且这两个前端可以互换:

- 💬 实时观看 agent 工作 —— 流式输出;工具卡片显示运行了什么、改动了什么、耗时多久;思考内容可展开;
- ✅ 一键审批 —— agent 想运行命令?会弹出窗口:ctrl+a 允许,ctrl+r 拒绝。它提出的问题也会在弹窗中作答;
- 🔄 随时切换任何内容 —— 模型、权限级别、工作模式、工作区:每一项都有快捷键,而且在回合进行中也能用;
- 📊 仪表盘与统计 —— 待办事项、后台任务、当前目标以及消息队列;按时间 / 工作区 / 会话统计 token 消耗;
- 🖱️ 完整键盘 + 鼠标支持,配色跟随你的终端主题;
- ⌨️ 对管道友好的单次模式 —— dsh-cli "summarize this repo" 直接打印答案;可放进脚本和 CI。

一览

dsh-cli 主视图

🚀 60 秒上手

前提:一个正在运行的 DSH Web 服务器(dsh web,默认 http://127.0.0.1:3080)。

make deps      # 首次:下载模块
make check     # vet + 测试 + 构建 → 生成 ./dsh-cli

./dsh-cli                          # 交互式 TUI(连接到 127.0.0.1:3080)
./dsh-cli --url http://host:8080   # 连接到远程服务器

远程使用需要在服务器端加上 --trusted-host;本地回环无需认证。
服务器重启或网络抖动都不是问题:它会自行重连并重新同步。

首次启动时你会看到:

欢迎界面

✨ 功能详解

观看工作过程

- 实时流式输出 —— agent 边工作边思考、边说话;消息到达即渲染;工具卡片带有参数、耗时和 ✓/✗;
- 回合结论 —— ✓ done / ⏹ interrupted / ✗ error / ⚠ max tokens,一眼看到耗时和该回合的 token 数;
- 思考与详情 —— 思考块默认折叠;ctrl+e 展开完整推理和工具输出;
- 完整 GFM 渲染 —— 表格、任务列表、删除线、emoji:Web 端能渲染的,这里也能。

审批与交互

- 工具审批和用户提问一到就弹窗;被搁置的可以随时用 ctrl+i 重新打开;
- 在回合运行期间发送消息是一种引导(它会重定向当前回合);排队中的消息会显示在消息条中,ctrl+x 会丢弃最旧的一条。

切换(每项都有快捷键;均可在回合进行中工作)

- 模型(ctrl+n)—— 提供商 → 模型 → 推理强度,共三级;←→ 循环切换强度;/model  直接跳转(唯一前缀也可以);
- 权限(ctrl+p)—— 循环切换只读 → 工作区写入 → 完全访问;不涉及模型回合,无需等待;
- 模式(ctrl+o)—— Standard / PTC / Minimal / Creator 以及你自己的预设;空白会话立即生效,运行中的会话会将其暂存,供下一个新会话使用;
- 工作区(ctrl+w)—— 添加 / 重命名 / 移除 / 切换(切换会落到一个空白会话;如需要会创建一个)。

ctrl+n 模型选择器:

模型选择器

会话

- 会话窗口(ctrl+s)—— 实时搜索(标题 / id / 内容)、切换、新建、重命名;
- 分叉(f)—— 从你当前查看的位置分支出一个新会话 —— 网页版的 branch 按钮,搬到了键盘上;
- 从上次离开处恢复 —— 启动时你的上一个会话和工作区已就绪。

鼠标与剪贴板

- 滚轮滚动;拖拽选择,双击选词,三击选行;
- 松开即自动复制 —— 通过系统剪贴板二进制文件(wl-copy / pbcopy / clip / xclip),或在未安装时使用终端内置的 OSC 52 通道;无需 CGO;
- ctrl+c 或 ctrl+shift+c 再次复制所选内容;esc 清除选择。

外观与韧性

- 双语界面 —— 英文内置于二进制文件中(永不丢失),中文随包提供;/language zh 瞬间切换,且选择在重启后依然保留;
- 主题跟随 —— 颜色源自你的终端主题,并在主题变化时重新着色;无响应的终端会回退到内置的中性调色板;
- 自愈连接 —— 服务器宕机时显示 connecting…;恢复后,缺失的状态会重新同步。什么都不会丢失。

📮 一次性 / 管道模式

用于脚本、CI,或当你只想要答案时:

dsh-cli "summarize this repo"           # 自动选择一个会话,打印最终答案
dsh-cli --new "explain go slices"       # 在一个全新会话中运行
echo "explain go slices" | dsh-cli      # 从 stdin 读取提示词
dsh-cli -v "reply in one word"          # 实时流式输出 + 打印工具调用
dsh-cli --thinking "solve: 1+1"         # 同时打印推理过程

- 最终答案输出到 stdout(原始 markdown);进度和工具活动输出到 stderr —— 可管道到任何地方;
- 有用的标志:--url、--session 、--new、--cwd 、--preset 、-v、--thinking、--timeout 2m、--version;
- 细则:一个没有提示符的裸 TTY 会快速失败并给出提示(通常是忘了写提示符);stdin 上限为 1MiB;超时默认 10 分钟,超时退出码为 3,因此脚本可以据此分支处理;服务器缺失时会得到一行提示“用 dsh web --no-open 启动它”。

🔍 检查命令

| 命令 | 作用 |
|---|---|
| dsh-cli status | 客户端 + 主机版本、cwd、模型、会话和工作区数量 |
| dsh-cli ls | 每个会话:状态 / 模式 / 最后活动 / 标题 / cwd |
| dsh-cli new | 创建一个会话并打印其 id(--cwd 指定目录,--preset 指定模式) |
| dsh-cli history  | 将完整记录导出为纯文本 |
| dsh-cli models [id] | 当前模型 + 完整目录(默认为最近活跃的会话) |
| dsh-cli workspaces | 工作区注册表:标题 / 路径 / 会话数 |

终端中的 /status 窗口(上表,外加 token 使用统计):

/status window

⌨️ 按键绑定

| 按键 | 作用 |
|---|---|
| enter | 发送(回合中 = 引导 agent) |
| shift+enter | 插入换行 |
| / | 命令菜单,tab 补全 |
| esc | 中断回合 / 关闭弹窗 / 清空输入 |
| ctrl+n | 选择模型(←→ 设置推理强度) |
| ctrl+p | 循环切换权限级别 |
| ctrl+o | 切换工作模式 |
| ctrl+w | 管理工作区 |
| ctrl+s | 会话窗口(搜索 / 切换 / 新建 / 重命名) |
| f | 在视图位置分叉会话(输入为空) |
| ctrl+b | 停靠栏:todos / jobs / goal / queue(1–4 切换标签页) |
| ctrl+e | 切换详情:完整思考、工具输出(输入为空) |
| ctrl+i | 重新打开已搁置的问题 / 审批 |
| ctrl+x | 丢弃最旧的排队消息 |
| ← / → | 上一个 / 下一个会话(输入为空) |
| ctrl+a / ctrl+r | 在审批弹窗中:允许一次 / 拒绝 |
| ctrl+h | 帮助(带搜索) |
| ctrl+q / ctrl+d | 退出(输入为空) |

输入行上方还有 / 命令菜单:/help /status /new /title /model /mode /search /workspace /language [en|zh] —— 外加主机命令,如 /plan /compact /goal 以及技能。

ctrl+h 帮助窗口(可搜索):

Help window

📦 须知

- 依赖:Go 1.27+(用于构建)以及正在运行的 dsh web(默认 http://127.0.0.1:3080)。
- 服务器地址:优先级为 --url 标志 > $DSH_URL 环境变量 > ~/.dsh-cli/config.json({"url": "http://host:port"})> 内置默认值;启动连接失败时会提示用 dsh web --no-open 启动 DSH。
- 认证令牌(受 cookie 限制的构建):较新的 dsh web 启动时会打印一个启动令牌(http://…/?token=…)。可通过 --token 传入,设置 $DSH_LAUNCH_TOKEN,或让它存储在配置中;客户端在首次连接时会用它换取会话 cookie,并在后续启动时复用该 cookie(过期的 cookie 会自动重新交换一次)。较旧的构建不需要令牌。
- 默认语言:~/.dsh-cli/config.json 中的 "language" 优先;未设置时,UI 跟随系统区域设置(LC_ALL/LC_MESSAGES/LANG);两者都不可用时,使用内置英文。/language 切换会将选择写回,因此重启后依然保留。
- 本地数据:配置、区域文件、缓存和用量统计都位于 ~/.dsh-cli 下。
- 许可证:GNU GPLv3。

⚡ dsh-cli — 终端里的 DeepSeek Harness。

🇨🇳 阅读中文版

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群