在终端里流式对话并调用工具,支持 @ 引用文件
26.7/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add kit-zeason/dsh-simple-CLI该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · ui
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 81 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件
查看扫描证据(共 4 处,展示前 4 条)
- 读取本地文件lib/ui.js:517
return statSync(abs).isDirectory() ? abs : this.cwd; - 读取本地文件lib/ui.js:529
const dirents = await readdir(dir, { withFileTypes: true }); - 读取本地文件lib/theme.js:44
json = JSON.parse(readFileSync(file, "utf8")); - 读取本地文件lib/refs.js:55
try { st = await stat(abs); } catch { continue; }
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-agent@deepseek-ai/dsh-base@deepseek-ai/dsh-cmdline@deepseek-ai/dsh-code-runtime-worker-thread@deepseek-ai/dsh-llm@deepseek-ai/dsh-session@deepseek-ai/schemastery给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 终端流式对话
- 调用工具
- @引用文件
为当代命令行动员量身打造的极简 DeepSeek Harness 扩展。
README
由 DeepSeek 最新模型翻译生成dsh-simple-cli — DeepSeek Harness 的交互式终端配置
v0.1.2 - 发布版本 · 更新日志
dsh-simple-cli 将 DeepSeek Harness(dsh)变成一个交互式终端聊天工具,就像 Claude Code 一样:输入一条消息,看着回答流式输出,让对话持续进行。它通过 dsh-cli 命令启动(等同于 dsh --profile cli)。
English · 中文
它是什么
dsh 自带 web / headless 配置。本仓库新增了一个 cli 配置,完全在终端中运行,风格类似 Claude Code:
- 带推理与工具调用的流式输出 —— 助手文本、模型推理(▸ 推理,暗灰色)和工具调用(⛭ name: args + ✓/✗ 结果)实时流式输出,与 TUI 体验一致。
展开完整文档(README 剩余 1 节)
dsh-simple-cli — DeepSeek Harness 的交互式终端配置
v0.1.2 - 发布版本 · 更新日志
dsh-simple-cli 将 DeepSeek Harness(dsh)变成一个交互式终端聊天工具,就像 Claude Code 一样:输入一条消息,看着回答流式输出,让对话持续进行。它通过 dsh-cli 命令启动(等同于 dsh --profile cli)。
English · 中文
它是什么
dsh 自带 web / headless 配置。本仓库新增了一个 cli 配置,完全在终端中运行,风格类似 Claude Code:
- 带推理与工具调用的流式输出 —— 助手文本、模型推理(▸ 推理,暗灰色)和工具调用(⛭ name: args + ✓/✗ 结果)实时流式输出,与 TUI 体验一致。推理在思考时折叠为最新一行(web 风格),渲染合并到约 30fps,因此快速思考不会让终端闪烁
- @ 文件选择器 —— 在输入框中输入 @ 即可浏览工作目录(输入以过滤,↑/↓ 导航,Enter 进入文件夹或选择文件,Esc 关闭);选择后插入 @relative/path,提交时每个引用的文本文件都会附加到消息中(每个最大 64 KB,超出会截断并附注;二进制文件保留为路径提及)
- ── 输入区域 —— 一条分隔线框住输入框;Enter 提交,Shift+Enter / Ctrl+Enter 插入换行(多行消息;需要 kitty 键盘协议 —— Windows Terminal 1.19+、kitty、WezTerm、iTerm2、Konsole、foot —— 否则 Ctrl+J 或 Alt+Enter 可作为备选),↑/↓ 导航历史或逻辑行
- 状态栏 —— 位于输入框下方:当前模型与权限,切换命令始终可见
- 连续对话 —— 在单个 Agent 会话上进行多轮上下文
- 工具调用审批 —— 在 "ask" 策略下,于同一输入区域中内联使用 y / n / Enter
- 命令 —— /new 新建会话 · /model [provider/] 切换模型(单独输入 /model 打开可过滤的选择器) · /preset [id] 切换 agent 预设(单独输入 /preset 打开可过滤的选择器) · /permission ask|never 切换审批策略 · /clear · /exit;可选的首条消息可作为参数传入
- 默认配色方案 —— 每个角色都有自己的颜色(用户绿色、推理灰色、工具黄色/青色……);可通过 DSH_CLI_THEME 环境变量覆盖(见下文)
要求
- Node.js ≥ 22(已在 24 上测试)
- PATH 中有 dsh ≥ 0.1.0-rc.6:npm i -g @deepseek-ai/dsh
- install.ps1 需要 PowerShell 5.1+ / pwsh(Windows 与 Unix)
安装
一键安装(Windows 与 Unix,PowerShell)
git clone https://github.com/kit-zeason/dsh-simple-CLI.git
cd dsh-simple-CLI
.\install.ps1 # install into $DSH_HOME/profiles/cli, shim onto PATH, verify
.\install.ps1 -Force # re-install / overwrite existing profile files
安装程序:
1. 创建 $DSH_HOME/profiles/cli(默认 ~/.dsh/profiles/cli)
2. 将 dsh-simple-cli 包复制到该配置文件的 node_modules 中
3. 写入配置文件清单(package.json、cordis.patch.yml、pnpm-workspace.yaml)
4. 安装全局 dsh-cli 命令垫片
5. 验证 dsh --profile cli --help
无需 git clone —— 直接安装特定的已发布版本:
Invoke-WebRequest -Uri https://raw.githubusercontent.com/kit-zeason/dsh-simple-CLI/main/install.ps1 -OutFile install.ps1
.\install.ps1 -Version 0.1.0 # 下载 release v0.1.0 并安装 .\install.ps1 -Version 0.1.0 -Force # 重新安装,覆盖已有的配置文件
-Version 接受 0.1.0 或 v0.1.0;如果不提供,脚本会安装它所属的检出内容(例如你克隆的 main)。
手动安装(任意操作系统)
$profiles = Join-Path $env:USERPROFILE '.dsh\profiles'
New-Item -ItemType Directory -Force -Path "$profiles\cli\node_modules\dsh-simple-cli\lib"
Copy-Item package.json, cordis.patch.yml "$profiles\cli\node_modules\dsh-simple-cli\"
Copy-Item lib\index.js, lib\startup.js "$profiles\cli\node_modules\dsh-simple-cli\lib\"
Copy-Item profile\package.json, profile\cordis.patch.yml, profile\pnpm-workspace.yaml "$profiles\cli\"
可选:将 bin\dsh-cli(.cmd/.ps1) 放到 PATH 上的某个位置
用法
dsh-cli # 启动交互式聊天
dsh --profile cli # 同上
dsh-cli "run the tests" # 发送首个任务,然后继续聊天
┌───────────────────────────────────────────────┐
│ 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 | 打开模型选择器(浏览或关键词搜索,然后选择) |
| /model | 切换模型(同一提供商),例如 /model deepseek-v4-flash |
| /model / | 切换提供商 + 模型 |
| /preset | 打开预设选择器(标准 / PTC / 极简 / 创造 + 你自己的) |
| /preset | 切换预设(在空白会话中实时生效,否则在 /new 时应用) |
| /permission ask / never | 切换审批策略(别名:/perm) |
| /new | 开始一个新会话 |
| /clear | 清空回滚缓冲区 |
| /help、/exit | 帮助 / 退出(Ctrl+C 也可退出) |
预设:每个会话由一个 DSH agent 预设组成(与 Web 应用相同的机制——标准/standard、PTC/code、极简/minimal、创造/cordis)。默认是 standard;在 $DSH_HOME/settings.yaml 的 agent-presets.default 下设置持久默认值,并在 $DSH_HOME/.agent-presets/ 中编写你自己的预设(一个包含 agent.cordis.yml + 可选 preset.yml 的目录)。
工具授权提示(内联在同一输入区域):
? [授权] pwsh: … — y 允许一次 / n 拒绝 / 回车 允许
配色方案(通过环境变量 DSH_CLI_THEME= 覆盖;每个值是一个 SGR 参数字符串):
{ "user": "1;92", "reasoning": "2;90", "toolCall": "33",
"toolResult": "36", "toolError": "1;31", "system": "35", "status": "36" }
工作原理
三层,全部是普通文件:
| 层 | 位置 | 内容 |
| bundle | 仓库根目录(npm 包 dsh-simple-cli) | cordis.patch.yml + lib/ —— runner 插件 |
| profile | $DSH_HOME/profiles/cli | 列出 bundle @deepseek-ai/dsh-base + dsh-simple-cli 的清单 |
| shim | npm 全局 bin 目录 | dsh-cli → dsh --profile cli |
- Bundle 解析(resolveBundleDir)先检查 dsh 安装目录,再检查 profile 自身的 node_modules —— 因此把 bundle 放到 profiles/cli/node_modules/dsh-simple-cli 就足够了。
- 依赖 —— 每个运行时导入(@deepseek-ai/dsh-agent、dsh-llm、dsh-session、schemastery、commander……)都会沿目录树向上解析到随 dsh 一起提供的共享 profiles/node_modules。无需 pnpm install。
- Runner —— lib/index.js 通过核心注册表创建一个 Agent,然后实时渲染 session/event 事件流:assistant/chunk 增量流式输出推理/文本/工具调用参数,tool/call + tool/result 绘制工具行,approval/request 在同一输入区域内联应答。非 TTY stdin(管道/CI)回退到普通的 readline 循环。
- UI —— lib/ui.js 是一个无依赖的 raw 模式迷你 TUI(仅 ANSI):滚动回看 + ── 分隔符 + 多行编辑器 + 状态栏;lib/theme.js 保存调色板。
- 注意 —— dsh 每次启动都会把 profile 的 cordis.yml 重写为 [];请把你的改动保留在 cordis.patch.yml 中。
仓库布局
dsh-simple-cli/
├── README.md # 本文件 ├── LICENSE # MIT ├── package.json # dsh-simple-cli bundle 包 ├── cordis.patch.yml # bundle 补丁(loader 补丁列表) ├── lib/ │ ├── index.js # cli-runner 插件:agent 循环、事件渲染器、/model /permission │ ├── startup.js # cli-startup 插件:命令行解析 │ ├── ui.js # 原始模式迷你 TUI:输入区、流式视图、状态栏 │ ├── theme.js # 调色板 + DSH_CLI_THEME 覆盖 │ └── refs.js # @file 引用:查找并附加被引用文件的内容 ├── test/ │ ├── ui.test.mjs # Tui 单元测试(node test/ui.test.mjs) │ └── refs.test.mjs # @file 引用单元测试(node test/refs.test.mjs) ├── profile/ # cli profile 模板 │ ├── package.json │ ├── cordis.patch.yml │ └── pnpm-workspace.yaml ├── bin/ # dsh-cli 命令垫片 │ ├── dsh-cli.cmd # Windows cmd │ ├── dsh-cli.ps1 # PowerShell │ └── dsh-cli # POSIX sh └── install.ps1 # 一键安装器
开发
在此仓库中编辑 bundle 源码,然后同步正在运行的副本:
Copy-Item -Recurse -Force .\lib, .\package.json, .\cordis.patch.yml "$HOME\.dsh\profiles\cli\node_modules\dsh-simple-cli\"
故障排查
- dsh --profile cli 提示 profile 不存在 —— profile 目录需要 package.json;运行 .\install.ps1。
- cordis.yml 总是变回 [] —— 这是预期行为;dsh 会重新生成它。请改为编辑 cordis.patch.yml。
- 重命名了 bundle —— 请保持 package.json 中的 name、cordis.patch.yml 中的插件名称,以及 profile 的 bundle 列表三者同步。
路线图
- 在 $DSH_HOME 下实现跨会话的 ↑/↓ 历史持久化
- /sessions 会话列表
- 发布到 npm(dsh-simple-cli),以便他人可以通过 dsh plugin --profile cli add dsh-simple-cli 安装
许可证
MIT © godzeason
这是什么
v0.1.2 - Releases · Changelog
dsh-simple-cli 给 DeepSeek Harness(dsh)加了一个纯终端交互式 profile(启动命令为 dsh-cli):像 Claude Code 一样在终端里持续对话,流式输出、↑/↓ 历史、工具调用授权提示。
特性
- 流式输出(含推理与工具调用):正文、模型推理(▸ 推理,暗灰)与工具调用(⛭ 名称: 参数 + ✓/✗ 结果)实时流入,与 TUI 体验一致。思考时推理折叠为单行、实时显示最新一行(网页端风格),渲染合并到约 30fps,快速思考不会导致终端闪屏
- @ 文件选择器:输入 @ 即可浏览工作目录(继续输入过滤、↑/↓ 选择、Enter 进入目录或选中文件、Esc 关闭);选中后插入 @相对路径,提交时每个被引用的文本文件会作为附件注入消息(单个上限 64KB,超出截断并注明;二进制文件只保留路径引用)
- ── 输入区:分隔线框住输入框;Enter 发送,Shift+Enter / Ctrl+Enter 换行(支持多行消息;需要终端支持 kitty 键盘协议——Windows Terminal 1.19+、kitty、WezTerm、iTerm2、Konsole、foot 等——否则可用 Ctrl+J 或 Alt+Enter 兜底换行),↑/↓ 翻历史或跨行移动
- 状态栏:输入区下方实时显示当前模型与权限,并常驻切换命令提示
- 多轮持续对话:同一 Agent 会话保持上下文连续
- 工具授权:agent 请求调用工具时("ask" 策略)在同一输入区内联应答 y/n/回车
- 命令:/new 新会话 · /model [provider/] 切换模型(裸 /model 弹出可过滤的模型选择框) · /preset [id] 切换预设(裸 /preset 弹出可过滤的预设选择框) · /permission ask|never 切换权限 · /clear · /exit;支持可选首条消息参数
- 默认配色:各角色分色(用户绿、推理灰、工具黄/青…);可用 DSH_CLI_THEME 环境变量覆盖
安装
一键安装(Windows / Unix,PowerShell)
git clone https://github.com/kit-zeason/dsh-simple-CLI.git
cd dsh-simple-CLI
.\install.ps1 # 安装到 $DSH_HOME/profiles/cli,注册 dsh-cli 命令并自检 .\install.ps1 -Force # 覆盖已有 profile 配置文件脚本会:创建 profile 目录 → 复制 bundle → 写 profile 清单 → 安装全局 dsh-cli shim → 验证 dsh --profile cli --help。
不想 clone?可直接下载安装脚本并指定版本安装:
Invoke-WebRequest -Uri https://raw.githubusercontent.com/kit-zeason/dsh-simple-CLI/main/install.ps1 -OutFile install.ps1
.\install.ps1 -Version 0.1.0 # 下载 release v0.1.0 并安装 .\install.ps1 -Version 0.1.0 -Force # 重新安装,覆盖已有 profile 配置
-Version 接受 0.1.0 或 v0.1.0;不带该参数时安装脚本所在目录的代码(如 clone 的 main)。
手动安装(任意平台)
$profiles = Join-Path $env:USERPROFILE '.dsh\profiles'
New-Item -ItemType Directory -Force -Path "$profiles\cli\node_modules\dsh-simple-cli\lib"
Copy-Item package.json, cordis.patch.yml "$profiles\cli\node_modules\dsh-simple-cli\"
Copy-Item lib\index.js, lib\startup.js "$profiles\cli\node_modules\dsh-simple-cli\lib\"
Copy-Item profile\package.json, profile\cordis.patch.yml, profile\pnpm-workspace.yaml "$profiles\cli\"
使用
dsh-cli # 开始交互对话
dsh --profile cli # 等价
dsh-cli "run the tests" # 先发一条任务,之后继续对话
界面示意:
┌──────────────────────────────────────────────┐
│ 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 | 弹出模型选择框(浏览或输入关键字过滤后选中) |
| /model | 切换模型(保持 provider),如 /model deepseek-v4-flash |
| /model / | 同时切换 provider 与模型 |
| /preset | 弹出预设选择框(标准 / PTC / 极简 / 创造 + 自定义) |
| /preset | 切换预设(空白会话立即生效,否则 /new 后生效) |
| /permission ask / never | 切换权限策略(别名 /perm) |
| /new | 开启新会话 |
| /clear | 清空回滚区 |
| /help、/exit | 帮助 / 退出(Ctrl+C 也可退出) |
预设:每个会话由一个 DSH agent preset(与网页端同一套机制——标准/standard、PTC/code、极简/minimal、创造/cordis)组装而成。默认是 standard;可在 $DSH_HOME/settings.yaml 的 agent-presets.default 设置持久默认值,自定义 preset 放在 $DSH_HOME/.agent-presets/(一个含 agent.cordis.yml 与可选 preset.yml 的目录)。
工具授权提示(同一输入区内联):
? [授权] pwsh: … — y 允许一次 / n 拒绝 / 回车 允许
配色覆盖(DSH_CLI_THEME=,值为 SGR 参数串):
{ "user": "1;92", "reasoning": "2;90", "toolCall": "33",
"toolResult": "36", "toolError": "1;31", "system": "35", "status": "36" }
工作原理
三层结构,全是普通文件:
| 层 | 位置 | 内容 |
| bundle | 仓库根(npm 包 dsh-simple-cli) | cordis.patch.yml + lib/ 运行器插件 |
| profile | $DSH_HOME/profiles/cli | 清单:@deepseek-ai/dsh-base + dsh-simple-cli |
| shim | npm 全局 bin | dsh-cli → dsh --profile cli |
- bundle 解析:先查 dsh 安装目录,再查 profile 自身 node_modules,因此把 bundle 放进 profiles/cli/node_modules/dsh-simple-cli 即可
- 依赖:所有运行时 import 沿目录树上溯到 dsh 自带的共享 profiles/node_modules,无需 pnpm install
- 运行器:lib/index.js 通过核心注册表建一个 Agent,把 session/event 事件流实时渲染:assistant/chunk 增量流式显示推理/正文/工具参数,tool/call + tool/result 绘制工具行,approval/request 在同一输入区内联应答;非 TTY(管道/CI)自动回退为普通 readline 循环
- UI:lib/ui.js 是无依赖的 raw 模式迷你 TUI(纯 ANSI):回滚区 + ── 分隔线 + 多行编辑器 + 状态栏;lib/theme.js 提供配色
- 注意:dsh 每次启动会把 profile 的 cordis.yml 重写为 [],改动请写在 cordis.patch.yml
仓库结构
dsh-simple-cli/
├── README.md # 本文件(中英双语) ├── LICENSE # MIT ├── package.json # dsh-simple-cli bundle 包 ├── cordis.patch.yml # bundle patch(loader patch 列表) ├── lib/ │ ├── index.js # cli-runner 插件:agent 循环 / 事件渲染 / /model /permission │ ├── startup.js # cli-startup 插件:命令行解析 │ ├── ui.js # raw 模式迷你 TUI:输入区 / 流式视图 / 状态栏 │ ├── theme.js # 配色 + DSH_CLI_THEME 覆盖 │ └── refs.js # @file 引用:查找并附加引用文件内容 ├── test/ │ ├── ui.test.mjs # Tui 单元测试(node test/ui.test.mjs) │ └── refs.test.mjs # @file 引用单元测试(node test/refs.test.mjs) ├── profile/ # cli profile 模板 │ ├── package.json │ ├── cordis.patch.yml │ └── pnpm-workspace.yaml ├── bin/ # dsh-cli 命令 shim │ ├── dsh-cli.cmd # Windows cmd │ ├── dsh-cli.ps1 # PowerShell │ └── dsh-cli # POSIX sh └── install.ps1 # 一键安装脚本
开发
改完本仓库的 bundle 源码后,同步运行副本:
Copy-Item -Recurse -Force .\lib, .\package.json, .\cordis.patch.yml "$HOME\.dsh\profiles\cli\node_modules\dsh-simple-cli\"
已知的坑
- dsh --profile cli 报 profile 不存在 → 需先建 profiles/cli/package.json,跑一遍 .\install.ps1
- cordis.yml 总被重置为 [] → 正常现象,改 cordis.patch.yml
- 改 bundle name → 同步 cordis.patch.yml 里的插件名和 profile 的 bundles 列表
路线图
- 跨会话 ↑/↓ 历史持久化(存 $DSH_HOME)
- /sessions 历史会话列表
- 发布 npm(dsh-simple-cli),他人可 dsh plugin --profile cli add dsh-simple-cli
License
MIT © godzeason预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
kit-zeason/dsh-simple-CLI
在终端里流式对话并调用工具,支持 @ 引用文件
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,804已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,350已汉化DSH
71.5
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 151,506已汉化DSH
71.1
AI 矢量设计工具ZSeven-W/openpencil
全球首个 AI 原生开源矢量设计工具。
★ 7,027已汉化DSH
71.1
这是你的仓库?认领条目