rustdsh/README.md
rdsh
DeepSeek Harness
のランチャー。よく使うコマンドを Rust で実装し、会話とモデル実行は上流の dsh に委譲する。引数はそのまま dsh に渡す。
単一バイナリ
MIT
Linux / macOS / WSL / Windows
インストール
curl -fsSL https://github.com/jimoto-no-llm/rustdsh/releases/latest/download/install.sh | bash -s -- --from-release
$f = Join-Path $env:TEMP 'rdsh-install.ps1'
Invoke-WebRequest -Uri https://github.com/jimoto-no-llm/rustdsh/releases/latest/download/install.ps1 -OutFile $f -UseBasicParsing
& $f -FromRelease
起動
| 目的 | コマンド |
| 動作確認 | rdsh --version && rdsh doctor |
| TUI で開始 | rdsh tui |
| Web プロファイル | rdsh --profile web |
| dsh を置き換える | ./install.sh --as-dsh |
| 元に戻す | ./install.sh --restore |
注意
--as-dsh は dsh コマンドを rdsh に差し替える。元のコマンドは dsh-orig として残り、--restore で元に戻せる。
構成
BENCHMARKS.md
Linux x86_64 での実測値。推定値や換算は含まない。
rdsh と上流 dsh の計測値
| 項目 | rdsh | 上流 dsh | 比 |
--version 起動 | 0.90 ms | 88 ms | 98× |
| ピークメモリ | 2.9 MB | 66 MB | 1/23 |
| フック相当のメモリ使用量 | 2.7 MB | 45 MB | 1/16 |
| コード検索 | 17 ms | 41 ms | 2.4× |
| トークン見積もり | 12 ms | 35 ms | 2.9× |
| セッション一覧 | 0.41 s | 1.65 s | 4.0× |
| 配布物 | 1.97 MB | 508 MB | — |
読み方
- 起動時間はウォームキャッシュ時に 5 回測定した中央値。
- メモリは起動直後のピーク RSS。
- 検索・トークン・セッションは同じ入力で比較している。
- 配布物のサイズは単一バイナリ。上流は Node.js のツリー全体。
COMMANDS.md
Node.js を起動せずに実行できるコマンド。引数は dsh と同じ。
| コマンド | 役割 | 出力 |
tokens | トークン数の見積もり。CJK は 1 文字 1 トークン。 | 数値 |
prune | トークン予算に収まるよう文脈を削る。 | テキスト |
search | 並列のテキスト検索。 | 一致行 |
sessions | セッション一覧とトークン見積もり。 | 表 |
compact | セッション JSONL の圧縮。元ファイルは残る。 | ファイル |
doctor | dsh 本体・環境・パスの点検。 | 診断 |
profiles | 利用可能なプロファイル一覧。 | 一覧 |
skills | 利用可能なスキル一覧。 | 一覧 |
desktop | Desktop アプリの検出とプラグイン接続。 | 状態 |
bench | rdsh と dsh の起動比較。 | 表 |
features | 機能スイッチと既定値。 | 一覧 |
auth | 認証状態の確認と認証情報の取り込み。 | 状態 |
guard | フックとして動作し、危険なコマンドを止める。 | 判定 |
context | ターン文脈の組み立て・注入・記憶。 | JSON |
deps | 依存グラフと変更の影響範囲。 | グラフ |
serve | ローカル専用の状態ページ。 | HTTP |
一致するコマンドがない。
例
sh
rdsh tokens ./README.md
rdsh search TODO --dir . --max 100
rdsh sessions --limit 20 --tokens
rdsh bench --n 5
rdsh features
前提
guard と context は dsh の hooks.json に登録して使う。context hook install は既存フックを残したまま追記し、書き換えたファイルの隣にバックアップを置く。
SAFETY.md
既定では破壊的な変更を行わないことを優先する。危険な操作は明示的に有効化する。
設計原則
- 上流の実装をそのまま利用会話ループとエージェント処理は再実装せず、dsh にそのまま委譲する。
- 非破壊tokens・search・sessions・compact といった読み取り系は元ファイルを変更しない。
- 認証情報は明示的に指定認証情報を外部へ送らず、自動同期もしない。取り込むのは承認済みの項目だけ。
- ツール隔離(任意)Linux では、
--share-file で共有したファイルだけを、読み取り専用かつネットワークなしの環境で参照できるようにする。
- 既定値の明示更新確認は既定で有効。
serve・search-web・context_engine・agent_tool_sandbox は任意で有効化する。
フックで止める
sh
echo "$input" | rdsh guard --deny "rm -rf /*" --deny "*token*"
hooks.json
{ "matcher": "Bash",
"hooks": [{ "type": "command",
"command": "rdsh guard --deny \"rm -rf /*\"" }] }
機能スイッチ
| ID | 既定 | 内容 |
update_check | 有効 | 更新確認と通知 |
serve | 無効 | ローカル状態ページ |
search-web | 無効 | SearXNG 経由の検索 |
context_engine | 無効 | ターン文脈の組み立て |
agent_tool_sandbox | 無効 | 共有ファイルだけを参照できる実行環境 |
rdsh features on <id> で有効化、rdsh features で一覧。
WEB.md
Web UI、ダッシュボード、Desktop アプリとの連携。いずれもローカルで動作する。
軽量な状態ページ
localhost だけで動作する小さなページ(既定 :38080。DSH の :3080 とは衝突しない)。リクエストには一度きりのトークンが必要になる。
sh
rdsh settings set extras.enable serve
rdsh serve
ダッシュボード
プロジェクトの指標表示とユーザーへの確認に使うオプションの Node.js ダッシュボード(Node.js 22 以降)。Windows ではタスクトレイに常駐する。
sh
rdsh-dashboard project --project <directory>
Desktop アプリ
DeepSeek Harness Desktop は Web アプリを包んだ Electron 製のアプリ。CLI とは別のプロファイルを持つため、rdsh はアプリの検出とプラグイン接続だけを行い、プロファイルを書き換えない。
sh
rdsh desktop status
rdsh desktop install --plugins-dir .
rdsh desktop verify
順序
プラグインを接続する前にアプリを終了し、接続後に開き直す。アプリ内の Plugins ページから同じパッケージを直接入れてもよい。