dsh-simple-cli:给 DeepSeek Harness 加一个类 Claude Code 的终端聊天

前言

常年在命令行工作的开发者大多有这样的需求:在终端里直接输入一句话,看模型回答流式输出、工具执行过程实时可见,敏感操作还能手动确认——而不是切到浏览器,或者从 headless 调用里拼装输出。DeepSeek Harness(下称 dsh)支持在启动时指定 profile(例如 dsh --profile cli)。下面介绍的 dsh-simple-cli 就是一个完全运行在终端里的 cli profile:装好之后用 dsh-cli 命令与 Agent 对话,形态接近 Claude Code。

这是什么

dsh-simple-cli 是 dsh 的社区插件,由 kit-zeason 维护,当前版本 v0.1.2,采用 MIT 许可证。一句话定位:把 DeepSeek Harness 变成类 Claude Code 的交互式终端聊天,以 dsh-cli 命令启动,等价于 dsh --profile cli

安装后它做两件事:把 bundle 写入 $DSH_HOME/profiles/cli(默认 ~/.dsh/profiles/cli),并安装全局 dsh-cli 命令 shim。运行时依赖沿目录树向上解析到 dsh 自带的共享 profiles/node_modules,不需要额外执行 pnpm install

核心功能

流式输出

助手文本、模型推理(▸ 推理,暗灰)与工具调用(⛭ name: args + ✓/✗ 结果)都实时流式渲染。思考过程中推理折叠为最新一行,渲染合并到约 30fps,避免快速输出时终端闪烁。

@ 文件选择器

在输入框键入 @ 即可浏览当前工作目录:键入过滤、↑/↓ 导航、Enter 进入文件夹或选中文件、Esc 关闭。选中后消息中出现 @relative/path,提交时被引用的文本文件随消息附加——每个文本文件最多 64 KB,超出会截断并附提示;二进制文件仅作为路径提及。

输入区与状态栏

Enter 提交,Shift+Enter / Ctrl+Enter 插入换行,支持多行消息;↑/↓ 导航历史或逻辑行。换行快捷键依赖 kitty keyboard protocol(Windows Terminal 1.19+、kitty、WezTerm、iTerm2、Konsole、foot),不支持的终端可用 Ctrl+J 或 Alt+Enter 兜底。

输入区下方的状态栏常驻显示当前模型与权限策略,切换命令随时可见。

连续对话与工具审批

在单个 Agent 会话上保持多轮上下文。ask 权限策略下,工具调用审批在同一输入区内联进行:按 y 允许一次、n 拒绝、Enter 允许。

内置命令

  • /new:开新会话
  • /model:切换模型;裸 /model 打开可过滤选择器;/model <provider>/<name> 可同时切换 provider
  • /preset:切换 agent 预设
  • /permission ask|never:切换审批策略,别名 /perm
  • /clear/help/exit:清屏、帮助、退出(Ctrl+C 也可退出)
  • 启动时可以把首条消息作为参数传入

Agent 预设

预设机制与 dsh web 应用相同,内置四个:标准(standard)、PTC(code)、极简(minimal)、创造(cordis),默认 standard。要设持久默认,配置 $DSH_HOME/settings.yamlagent-presets.default 项;自定义预设放在 $DSH_HOME/.agent-presets/ 目录。

配色方案

默认配色下每个角色(用户、推理、工具调用、状态等)有独立颜色。需要调整时,把环境变量 DSH_CLI_THEME 指向一个 JSON 文件,值为 SGR 参数字符串:

{ "user": "1;92", "reasoning": "2;90", "toolCall": "33",
  "toolResult": "36", "toolError": "1;31", "system": "35", "status": "36" }

安装与启用

先确认环境,再装 dsh 本体,最后装插件。

环境要求:

  • Node.js ≥ 22(在 24 上测试)
  • dsh ≥ 0.1.0-rc.6 已在 PATH 中
  • PowerShell 5.1+ 或 pwsh,用于运行 install.ps1(Windows 与 Unix 均可)

安装 dsh 本体:

npm i -g @deepseek-ai/dsh

克隆仓库并安装:

git clone https://github.com/kit-zeason/dsh-simple-CLI.git
cd dsh-simple-CLI
.\install.ps1            # 安装到 $DSH_HOME/profiles/cli,装 shim 到 PATH 并验证
.\install.ps1 -Force     # 重新安装 / 覆盖已有 profile 文件

不想克隆仓库的话,也可以只下载 install.ps1,安装指定发布版本:

Invoke-WebRequest -Uri https://raw.githubusercontent.com/kit-zeason/dsh-simple-CLI/main/install.ps1 -OutFile install.ps1
.\install.ps1 -Version 0.1.0

-Version 接受 0.1.0v0.1.0;不带该参数时安装当前目录里的代码。脚本会自行完成 shim 安装与验证,通过后 dsh-cli 即可使用。

典型用法

经过上面的步骤,直接启动即可:

dsh-cli                        # 启动交互聊天
dsh --profile cli              # 同上
dsh-cli "run the tests"        # 发送首个任务,然后继续对话

进入交互界面后,整体形态如下(README 示例):

┌───────────────────────────────────────────────┐
│ dsh-cli: DeepSeek Harness 交互模式(/help …)      │
│ ▸ 推理  let me check the repo layout…             │  ← 暗灰,流式
│ ⛭ pwsh: Get-ChildItem -Recurse .                │  ← 工具调用
│   ✓   Directory: …                              │  ← 工具结果
│ 这里是最新的文件清单:…                             │  ← 流式回复
│───────────────────────────────────────────────│
│ > 输入你的消息…  (Shift+Enter 换行, Enter 发送)     │  ← 输入区
│ 模型: deepseek/deepseek-v4-flash · 权限: ask   …  │  ← 状态栏
└───────────────────────────────────────────────┘

日常操作都在输入区以命令完成:

/model deepseek-v4-flash       #  provider 内切换模型
/model <provider>/<name>       # 同时切换 provider 与模型
/model                         # 打开可过滤的模型选择器
/preset <id>                   # 切换预设;空会话即时生效,否则在 /new 时应用
/permission ask                #  /permission never,切换审批策略(别名 /perm/new                           # 开新会话
/clear                         # 清屏
/help                          # 帮助
/exit                          # 退出(Ctrl+C 也可退出)

适用场景与注意

它适合两类人:已经在用 dsh、想在命令行直接驱动 Agent 的开发者;以及习惯了 Claude Code 这类交互形态、想在 dsh 上获得类似体验的人。管道、CI 等非 TTY stdin 场景会退化为普通读取,不进入交互界面。

另外三点注意:

  1. Shift+Enter / Ctrl+Enter 换行依赖 kitty keyboard protocol,终端不支持时用 Ctrl+J 或 Alt+Enter。
  2. @ 附件每个文本文件限 64 KB,超出截断并附提示;二进制文件仅作为路径提及。
  3. 安全方面:插件安装后以当前 dsh 进程的权限运行,可以调用工具、读写文件。它是 MIT 开源社区项目,与 DeepSeek / 幻方无官方关系,建议安装前先查阅仓库源码,确认行为符合预期再部署。

结尾

dsh-simple-cli 用一条安装脚本把 dsh 扩展出终端聊天 profile:流式输出、工具审批、多轮上下文、@ 附件、预设与配色都可配置,集成成本很低。项目地址:

  • 目录页:https://www.skillhub.cn/plugins/kit-zeason/dsh-simple-CLI (社区维护的独立站点,与 DeepSeek / 幻方无官方从属关系)
  • GitHub 仓库:https://github.com/kit-zeason/dsh-simple-CLI
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜