前言¶
DeepSeek Harness(dsh)默认的终端交互界面以英文路径和通用布局为主。若你希望日文文案从设计阶段就作为一等公民、而不是塞进语言包边角,同时又想自己掌控绘制层、减少对上流非公开契约的依赖,社区里有人在做一条独立路线:参考既有 dsh-TUI 的思路,但不共享代码,从渲染层重新设计。
下面介绍维护者 mugi995 的客户端插件 DSH-forJP-TUI(仓库 mugi995/DSH-forJP-TUI,目录页 SkillHub)。截至 README 记载(2026-10-21),纵向切片 v0 已完成,UI 大改仍在进行中;阶段实现 S0~S12 中仅 S8b(goal)保留,其余已落地。
这是什么¶
DSH-forJP-TUI 是 dsh 的日语原生 TUI 表面:在终端里与智能体对话、查看工具结果、处理审批与用户提问。它与官方应用商店无从属关系;SkillHub 等社区目录是独立站点,安装前请自行阅读源码与 MIT 许可证。
插件以当前 dsh 进程权限运行;接入方式采用 in-process 的 Cordis bundle(dsh.bundle.patch),以便实现审批、用户提问、模型切换等人机交互——README 指出官方 SDK / ACP 并无审批通道,因此这是既定方案之一。
核心功能(README 已核实)¶
在 PTY 上启动并逐字节校验的前提下,当前版本已覆盖的能力包括:
- 对话与流式输出:响应流式显示、失败信息展示。
- 阅读与导航:替代屏幕(vim 风格)与滚动(
PgUp/PgDn/Home/End、滚轮)。 - 工具卡片:
terminal/diff/search/read等调用与结果展示。 - 安全交互:审批(
y允许、n拒绝;不回答视为拒绝,fail-closed);执行中可用Ctrl+C/Esc取消。 - 后台与提问:后台任务逐次输出;智能体提问(选项、
Tab自由输入、前后移动、跳过)。 - 辅助信息:思考展示、TODO、子智能体列表、
web卡片(模型依赖,无则[skip]);上下文用量与 Cache Hit 进度条。 - 日文输入:日语 IME,转换中的文字会出现在输入栏。
输入栏与上下文条已实现;正文装饰类 UI 仍在重做(见 README 状态说明)。
设计取向(便于判断是否适合你)¶
| 目标 | 要点 |
|---|---|
| 自研外观 | 自握绘制层,默认不堆装饰 |
| 日语原生 | 文案自始 catalog 化,不把日语挤进语言包 |
| 上游稳定 | 尽量少依赖 dsh 非公开契约,并持续计量 |
| 可替换边界 | UI 与 harness 分层;运行时对 DSH 的依赖刻意压到 ctx.get() / ctx.on() 两个导出名(src/host-contract.ts) |
绘制基于 fork 的 Ink v8.0.0(置于 src/ink/),鼠标选择、命中测试、滚动固定等由项目自行扩展。Node 要求 >=22.19(见 package.json)。
安装与启用¶
资料中的用法是从仓库构建并安装 profile,而非凭插件名拼接 dsh plugin add。步骤如下。
先安装依赖并构建(顺序必须为 yoga → ink → main):
pnpm install
pnpm build
将 profile 安装到 $DSH_HOME(默认 ~/.dsh):
pnpm profile:install
在配置好 API 密钥后,用指定 profile 启动 dsh:
COMMANDCODE_API_KEY=... dsh --profile forjp-tui
也可通过包内入口 dsh-forjp(lib/bin.js)启动;入口行为可用环境变量切换(见下节)。
隔离开发时,可把 profile 装到工作区内的 home:
pnpm profile:install --home .dsh-home
典型用法与快捷键¶
对话操作(来自 README):
- 输入后
Enter发送;Alt+Enter/Ctrl+J换行(输入区最多约 5 行)。 Ctrl+C或连按两次Esc退出。- 审批或提问面板出现时,键盘由面板接管。
常用环境变量:
| 变量 | 值 | 含义 |
|---|---|---|
FORJP_ENTRY |
auto(默认) |
先试 in-process,失败则子进程回退 |
in-process |
仅 in-process,失败则异常退出 | |
child |
强制子进程 dsh --profile |
|
FORJP_PROFILE |
默认 forjp |
profile 名称 |
DSH_FORJP_HOST_PACKAGE |
未设置 | 显式指定 @deepseek-ai/dsh 包目录 |
验证是否在另一版 DSH 上可用:
pnpm verify:host --host <dsh 的包目录>
UI 端到端冒烟(PTY,调用真实模型,约 10~15 分钟):
pnpm test:ui
适用场景与注意¶
适合:需要日语界面与 IME、希望在终端 TUI 里完整走审批/提问/工具卡片流程的 dsh 用户;愿意从源码构建、接受 UI 仍在改版中的现状。
注意:
- 插件与 dsh 同权限运行,安装前请审查
cordis.patch.yml、bundle 与脚本。 - README 写明自研 host-entry 失败时会回退到
dsh --profile子进程;若需强制行为,请设置FORJP_ENTRY。 - 测试默认不写
$HOME/.dsh,而是通过DSH_HOME指向工作区.dsh-home/(见 README 开发节)。 - 更完整的状态、架构与坑点集中在仓库
docs/HANDOFF.md;接棒开发应先读该文档。
结尾¶
DSH-forJP-TUI 把「日语原生 + 自研 TUI 层 + 最小 harness 契约」做成可运行的纵向切片,适合作为客户端定制与 UX 实验的参考实现。当前星标为 0,属早期社区项目;跟进进展可看 GitHub 与 SkillHub 目录页。