DSH-forJP-TUI
DeepSeek Harness (dsh) のための日本語ネイティブ TUI。
状態: Phase 0(走路骨格)完了。描画は未着手。
自作バンドルが DSH の Cordis 木に載り、自前の入口(C)から起動し、C が壊れれば
dsh --profile 子プロセス(B)へフォールバックし、session/event の生イベントを捕捉できる。
検証は node scripts/verify-bundle.mjs(12検査)。
これは何か
dsh の TUI サーフェスを、日本語を第一級に扱う形で自作する。
既存の dsh-TUI を参考にしつつ、
コードは共有せず、描画層から自分で設計する。
目的
| # | 目的 | 設計要求 |
|---|
| P1 | 見た目を自分で設計できる | 描画層を自前で握る。装飾演出を既定で入れない |
| P2 | 日本語ネイティブ | 文言を最初からカタログ化。日本語を言語パックに追い出さない |
| P3 | 上流更新で崩れにくい | 依存する上流の非公開契約を最小化し、その数を常時計測する |
| P4 | UX 研究の土台 | UI 層とハーネス層を分離し、UI の反復試行を安くする |
| P5 | 将来ハーネスごと差し替える(思想として保持) | ハーネス境界を1箇所に閉じ込める |
| P6 | ハーネスチューニング研究 | ハーネスの挙動を外から差し替え可能に保つ |
確定している方針
- DSH への載せ方: in-process の Cordis バンドル(
dsh.bundle.patch)。承認・ユーザー質問・モデル切替を
人対話で行うには、これ以外の経路が存在しない(公式 SDK / ACP には承認チャネルが無い)
- 起動: 自前のフル host-entry を持つ。ただし失敗時は必ず
dsh --profile 子プロセスへフォールバックする
- 描画層: upstream の Ink v8.0.0(commit
26d2c3f8)を fork し、
src/ink/ に置いて自前で拡張する。Ink 本体はマウス選択・ヒットテスト・スクロール固定を持たないため、
これらは自作する
- v0 の範囲: 入力解析 / 差分描画 / 全角幅 / 入力欄 / ストリーム表示 / ツールカード /
承認パネル / ユーザー質問パネル / セッション結線 / 中断と終了
ドキュメント
調査ノートには環境依存のローカル絶対パスをマスクしてある($HOME/<workspace>/...)。
開発
pnpm install
pnpm build
node scripts/verify-bundle.mjs # 構造検査(A〜D)
COMMANDCODE_API_KEY=... node scripts/verify-bundle.mjs # 実モデル実行まで(E)
検証は $HOME/.dsh に一切書き込まない。DSH_HOME をワークスペース内の .dsh-home/ に向けて
プロファイルとバンドル解決を完結させる(理由)。
入口は lib/bin.js(dsh-forjp)。環境変数で挙動を切り替えられる:
| 変数 | 値 | 意味 |
|---|
FORJP_ENTRY | auto(既定) | C を試し、失敗したら B へフォールバック |
| in-process | C のみ。失敗したら異常終了 |
| child | B を強制 |
FORJP_PROFILE | 既定 forjp | プロファイル名 |
DSH_FORJP_HOST_PACKAGE | 未設定 | ホスト @deepseek-ai/dsh のパッケージディレクトリを明示 |
ライセンス
MIT(LICENSE)。
fork 元の Ink も MIT であり、src/ink/ に取り込む時点で
Ink のライセンス表示を同梱する。