dsh-doctor
asdf17128
Find what your DeepSeek Harness (dsh) patches silently broke — dead patches, config fields dropped by whole-config repla…
PROJECT TOPICS
PROJECT README
English | 中文

DSH-Code 是 DeepSeek Harness(dsh)的终端编码界面。 它以树外 bundle 的形式组合在官方 @deepseek-ai/dsh-base 之上,与 Harness Web UI 使用同一套 Agent、Session、工具、命令、技能、权限、sandbox、上下文压缩与插件服务。
DSH-Code 没有另外实现一套 Agent loop,而是在 DSH 运行时上增加面向编码工作的 TUI。会话处理参考 Codex CLI,终端交互参考 Claude Code。
DeepSeek Harness 将模型、工具、存储、策略和界面作为插件,通过 Cordis 注册。持久化会话事件记录恢复对话与运行状态所需的信息。
DSH-Code 保留这套结构,并补充适合编码任务的终端工作流。
| 参考项目 | DSH-Code 使用的机制 |
|---|---|
| DeepSeek Harness | 插件组合、作用域服务、Agent Preset、持久会话、工具、技能、策略、sandbox 与委派 |
| Codex CLI | 会话导航、有界浮层、历史检查、稳定底部布局与缩放处理 |
| Claude Code | 斜杠命令发现、思考折叠、审批、提问与 turn steering |
界面采用开发者熟悉的终端操作方式,运行行为仍由 DSH 服务和配置决定。
需要 Node ^22.19 || >=24 和预览版 dsh CLI。DEEPSEEK_API_KEY 不是启动前置条件:未配置时仍可进入 TUI、查看会话和使用非模型功能;在 /model 中按 a 可通过 Harness credentials 服务添加 API key。
npm install -g @deepseek-ai/dsh dsh-code
npm install -g pnpm
dsh plugin --profile cli add dsh-code@0.7.0
提示:pnpm 会忽略发布不足 24 小时的包,因此发布首日请使用精确版本
dsh-code@0.7.0;24 小时后可省略版本号。npm 安装不受此限制。
可用的启动指令:
deepseek
dsh --profile cli
dsh-code
dsh --profile cli、deepseek 与 dsh-code 是并列的启动命令。deepseek 与 dsh-code 都是 dsh --profile cli 的全局别名,后续参数会原样转发,例如 deepseek --resume abc123。
DeepSeek Harness 目前仍处于 developer preview,可能出现破坏兼容性的变化;DSH-Code 会持续跟随其插件接口演进。
安装、原生模块和插件加载问题,请查看常见问题与排障。
DSH-Code 在整个进程中只保留一个 Ink owner。/new 和 /resume 替换的是活动 Agent,而不是终端本身。若 Agent 忙碌,切换会等待当前 turn 自然结束;最新请求优先,目标加载失败也不会破坏当前会话。
所有动态内容都受到明确的视口约束。流式输出、思考过程、审批、问题、/help、/model、/mode、/resume、/plugin 与 Ctrl+O 使用统一的终端预算。输入框始终紧贴状态栏上方;终端宽度稳定后,界面会根据保存的会话记录重新绘制一次。
在第一次 turn 之前使用 /mode,查看或选择当前会话的 Agent Preset。

使用 /resume 搜索持久会话,无需重新启动 TUI。

dsh --profile cli # 新建 standard 会话
dsh --profile cli --mode code # 使用 Agent Preset 启动
dsh --profile cli --continue # 恢复当前目录最新会话
dsh --profile cli --resume abc123 # 按 id 或唯一前缀恢复持久会话
dsh --profile cli --session my-id # 使用指定 id 新建会话
进入 TUI 后:
| 操作 | 用途 |
|---|---|
/new [preset] |
不重启终端,创建并进入另一个会话 |
/resume [id\|前缀] |
搜索根会话或全部对话,并按 cwd、排序和密度筛选 |
/mode [preset] |
检查或选择空会话的 Agent 组合 |
/model |
在实时 LLM 注册表提供的模型间切换;按 a 管理 provider 与 API key |
/plugin [query] |
检查 loader 条目、启用状态、模块身份和 fiber 阶段 |
/permission <name> |
切换权限预设;Shift+Tab 可循环切换 |
/help |
浏览本地命令、Harness 命令、技能和快捷键 |
Ctrl+O |
打开独占历史详情视图,切换条目并滚动完整内容 |
Ctrl+R |
折叠或展开模型思考过程 |
@ |
引用工作区文件或持久会话的有界快照 |
Esc / Ctrl+C |
关闭最上层界面或中断当前 turn |
/model 的 provider 面板只读取 credential 的已配置状态、来源和可写性;输入内容始终遮蔽并直接交给 Harness 持久化。由启动环境提供的 key 会标记为只读,不能在 TUI 中覆盖或移除。
/plugin 只读诊断 Cordis loader/model 可添加或轮换 key、移除可写 key,以及删除用户添加的 provider profile/new、/resume、--continue 与显式 session id,且无需重新挂载 Ink/history 搜索面板回填输入框@ 注入有界会话引用ask 决策的一次性工具审批条ask_user_question 与 plan review 菜单,支持多选和自定义答案切换到 DeepSeek 路由,或在同一路由切换 reasoning effort 时,输入框会随机播放 Wave、Aurora 或 Pulse;相邻两次不会重复同一种样式。Flash 模型使用单波段档位,其他 DeepSeek 模型使用更丰富的多波段档位。
| 样式 | Flash | DeepSeek |
|---|---|---|
| Wave | 单个蓝色波峰从左向右扫过,1.2s | 两个错开的波峰,1.5s |
| Aurora | 两条蓝色光带正弦漂移,1.5s | 三条不同色调光带,1.8s |
| Pulse | 一个圆环从输入框中心扩散,1.1s | 两个先后扩散的圆环,1.45s |
动画以约 30 FPS 在输入框局部运行;结束后背景和边框恢复静态,DeepSeek 档位提示符继续保留。
DSH-Code 读取 Harness 的实时注册表,不在本地维护另一套副本。模型适配器、工具 provider、技能来源、命令、权限策略、持久化后端、sandbox 和 subagent provider 都可以通过 DSH composition 添加或替换。
/plugin 提供当前 Cordis loader 状态的只读视图。
Host 持有共享基础设施——注册表、持久化、会话查询、权限和 sandbox 策略;每个会话则获得一个隔离的 Agent scope,并由 Agent Preset 进行组合:
standard——功能完整的通用编码 Agentcode——面向 Code Mode / PTC 的多操作工作流minimal——只保留持久 shell 和 str_replace_editorcordis——完整 Agent,加上运行时检查与 Preset 编写指导在第一次 turn 之前使用 /mode,或通过 --mode <preset> 直接启动。选中的 preset 会写入会话,并在恢复时还原。
提示词、流式 chunk、工具调用与结果、模型选择、plan 状态、权限、标题和 preset 选择都由持久 Session 事件投影得到。会话恢复、导出、历史检查、上下文统计和终端重放使用同一份记录。
React state 只保存输入草稿、光标、当前面板、选中项和滚动位置等临时界面状态。
dsh profile
└─ Host plane:注册表 · 持久化 · 查询 · 权限 · sandbox
├─ Agent 会话 A + preset code
├─ Agent 会话 B + preset minimal
└─ DSH-Code TUI
持久事件 → 纯投影 → 只追加的历史转录
└→ 有界面板 → 输入框 → 状态栏
pnpm install
pnpm test
pnpm typecheck
pnpm build
pnpm run gen:whale # 从 vendored Logo 路径重新生成 src/whale-glyph.ts
鲸鱼字形由 scripts/fish-logo.ts 中 vendored 的 DeepSeek FishLogo 几何数据生成(来源:DeepSeek Harness,MIT)。
本地 checkout 可使用:
dsh plugin --profile cli add file:C:/path/to/dsh-code
GitHub 安装可用于源码开发:
dsh plugin --profile cli add github:unlinearity/dsh-code
Git 包会在安装阶段构建。若 pnpm 要求添加 allowBuilds,请把它输出的完整条目复制到 ~/.dsh/profiles/cli/pnpm-workspace.yaml,再重新执行命令。该键包含 Git URL 与 commit,不能只写 dsh-code。
DSH-Code 是独立的 MIT 社区项目,与 OpenAI 或 Anthropic 无隶属关系。
社区:
MIT。vendored FishLogo 几何数据来自 DeepSeek Harness(MIT)。
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。