dsh-agent-lang

August 31, 2026 · View on GitHub

简体中文 | English | 日本語 | 한국어

エージェント言語制御 —— DeepSeek Harness (DSH) のモデル出力におけるツール説明・モデルの思考・回答の3チャネルをそれぞれ設定可能:GUI言語に従う / 指定言語で強制 / オフ。ワンクリックで全同期・全オフにも対応。デフォルトはツール説明チャネルのみ有効です。

なぜ必要か

DSH のツール呼び出しには必須の description 引数があり、それがそのまま UI の呼び出しカードラベルとして表示されます。しかしツールスキーマ内のこのフィールドの説明は英語の文言と英語の例("5-10 words … Examples: 'Count TODO markers…'")で書かれているため、GUI の言語に関係なくモデルは常に英語で書いてしまいます。

本プラグインはプロンプト側だけを変更します。グローバルな動的 runtime-context ディレクティブを 1 件登録し、現在の GUI 表示言語を伝えて、すべてのツール呼び出しの description をその言語で書くよう指示します。preset・persona・ツールスキーマは一切変更しません(それらはアップグレードで上書きされるデプロイ資産です)。

対応範囲

モード / preset対応備考
standard
ptc(旧称 code)run_codedescription も対象
cordis(Creation モード)
ユーザー preset(ptc-cordis、dsh-gitbash-shell の gitbash 系を含む)ホスト面での登録により、封鎖されていないすべての preset に適用
minimal❌(設計上)minimal は complete な persona を持ち runtime context を抑制するため、プロンプトが完全に封鎖されています。プロンプトレベルのプラグインでは侵入不可能です

仕組み

  • 検出順序(auto モード):設定 → 全般 → 言語での明示的な選択 > ブラウザーから報告された現在の言語。英語も通常のターゲット言語です(v0.3.0 以降)——モデルによっては思考・回答で多言語が混在するため、英語の明示的指定も同様に補正します。完全に未検出の場合のみ注入しません。
  • 注入チャネル:systemPrompt.context() —— サンドボックス/承認ポリシーと同じ、リクエストごとに再評価される runtime-context スナップショット。リクエスト末尾近くに描画されるため、ツールスキーマの英語ガイダンスを新しい情報が上書ちます。GUI 言語の切り替えは次のリクエストから即時反映されます。
  • 設定カード:設定 → プラグイン に本プラグインのカードが現れます(ホスト側でサービス中の設定名前空間とカードが自動ペアリング)。動作切り替え(GUI言語に従う / BCP 47 タグによる強制(zhja など)/ オフ)と検出チェーンの表示が可能です。

インストール

dsh plugin --profile web add dsh-agent-lang

ピュア JS、ビルドなし、インストール依存なし(schemastery は peer として profile 経由で解決)。インストール後、DSH を再起動してください。

検証

  1. インストールして DSH を再起動し、一度ハードリフレッシュ(⌘/Ctrl+Shift+R、下記の既知の境界 #1 を参照);
  2. ~/.dsh/settings.yamlagent-lang: セクション(uiLocale)が現れる;
  3. minimal 以外の任意のモードで新規セッションを実行 → ツール呼び出しカードの description が GUI 言語になる;
  4. 設定 → 全般 → 言語 を切り替える → 次のリクエストから description が追随;
  5. 設定 → プラグイン → ツール説明言語カードで動作を切り替えテスト。

既知の境界

  • 新規インストール/更新後の初回起動はハードリフレッシュが一度必要(2026-08-31 実機検証):初回ページロードがクライアントモジュールテーブルの再構築と重なると、新規パッケージが一時的に除外される場合があります(設定カードが出ないが、settings.yaml への報告は残る)。ハードリフレッシュで復旧。通常の再起動では再現しません。
  • minimal モード:プロンプトが封鎖されているため影響しません(上表参照)。
  • ブラウザーページがない場合(純 CLI デプロイなど):検出チェーンは「明示的な選択」のみ。設定で言語を選択したことがなければ注入しません。
  • 複数ブラウザー/リモートページ:GUI 言語はグローバルの単一値で、最後に開いたページの報告が優先されます。
  • サブエージェント / workflow のモデルにも同じディレクティブが見えます(それらの description も UI に表示されるため、意味的に一貫しています)。

ライセンス

MIT