前言¶
常年在命令行工作的开发者大多有这样的需求:在终端里直接输入一句话,看模型回答流式输出、工具执行过程实时可见,敏感操作还能手动确认——而不是切到浏览器,或者从 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.yaml 的 agent-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.0 或 v0.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 场景会退化为普通读取,不进入交互界面。
另外三点注意:
- Shift+Enter / Ctrl+Enter 换行依赖 kitty keyboard protocol,终端不支持时用 Ctrl+J 或 Alt+Enter。
@附件每个文本文件限 64 KB,超出截断并附提示;二进制文件仅作为路径提及。- 安全方面:插件安装后以当前 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