DBDelve
Dive deep into your data. A fast, native, multi-engine database client written in Rust. Free and open source, no telemetry.
翻訳待ち
Loading the full README. The saved excerpt is shown below.
プラグインで組み替えられる、ターミナル向けの小さなコーディングエージェント(TypeScript / Bun)。 コアに入っているのは、エージェントループ、プロバイダー、4つの組み込みツール(read / write / edit / bash)、TUI、セッション、権限確認だけ。それ以外の振る舞いは、すべて公開のプラグインAPIで足す。組み込みツールも同じAPIで登録している。MCPサーバーとAgent Skills(SKILL.md)はそのまま使える。小型モデルでも実用になるよう、形式の崩れたツール呼び出しの修復と、同じ文の繰り返しの抑止も同梱している。 図や設定の一覧を含む詳しい説明は sasanokusa.com/sasacode/docs にある。要件は docs/requirements.md。マイルストーンM0〜M4はすべて完了した(検証の記録は docs/milestones.md)。 ~/.sasacode/.env には、対応プロバイダーのキーが空欄で並んでいる。使うものだけ埋めればよく、空欄は未設定として扱う。モデルを指定しなければ、キーが書かれている最初のプロバイダーの既定モデルを使う。Read the full README ↗
プラグインで組み替えられる、ターミナル向けの小さなコーディングエージェント(TypeScript / Bun)。
コアに入っているのは、エージェントループ、プロバイダー、4つの組み込みツール(read / write / edit / bash)、TUI、セッション、権限確認だけ。それ以外の振る舞いは、すべて公開のプラグインAPIで足す。組み込みツールも同じAPIで登録している。MCPサーバーとAgent Skills(SKILL.md)はそのまま使える。小型モデルでも実用になるよう、形式の崩れたツール呼び出しの修復と、同じ文の繰り返しの抑止も同梱している。
図や設定の一覧を含む詳しい説明は sasanokusa.com/sasacode/docs にある。要件は docs/requirements.md。マイルストーンM0〜M4はすべて完了した(検証の記録は docs/milestones.md)。
curl -fsSL https://sasanokusa.com/sasacode/install.sh | sh # ~/.local/bin/sasacode に入る
sasacode --version # 初回起動で ~/.sasacode/.env ができる
$EDITOR ~/.sasacode/.env # 使うプロバイダーのキーを書く
sasacode
~/.sasacode/.env には、対応プロバイダーのキーが空欄で並んでいる。使うものだけ埋めればよく、空欄は未設定として扱う。モデルを指定しなければ、キーが書かれている最初のプロバイダーの既定モデルを使う。
curl -fsSL https://sasanokusa.com/sasacode/install.sh | sh
WindowsではPowerShellから入れる(%LOCALAPPDATA%\Programs\sasacode\sasacode.exe に入り、PATHに追加される)。
irm https://sasanokusa.com/sasacode/install.ps1 | iex
bash ツールはそのGit Bashでコマンドを実行する(winget install --id Git.Git -e)。標準以外の場所に入れた場合は SASACODE_GIT_BASH_PATH に bash.exe のパスを指定する。キーは %USERPROFILE%\.sasacode\.env に書く(OSのキーチェーンからの読み出しはmacOS / Linuxのみ)。npm install -g sasacode で入れられる。npmのパッケージは起動用の小さなスクリプトで、初回の実行時に同じ版のバイナリをGitHub Releasesから取得してSHA256を検証し、~/.sasacode/npm-bin に置く。更新は npm install -g sasacode@latest。install.sh / install.ps1 へのリダイレクト。gh attestation verify sasacode-darwin-arm64.tar.gz --repo sasanokusa/sasacode。リリースから落としたファイルに対して。install.sh も同じ)。SASACODE_VERSION=v0.15.2 で版を固定でき、SASACODE_INSTALL_DIR で置き場所を変えられる(どちらのインストーラーでも)。sasacode update(インストーラーと同じ検証つき。--check で確認だけ)。新しい版が出ていると起動時に一度だけ静かに知らせる("updateCheck": false で止める)。ソースから動かしている場合は git pull と bun install。web_search)に使うRustXNGは sasacode web-search install(TUIでは /web-search install)で入る。公式リリースをチェックサムで確かめて ~/.sasacode/bin に置き、再起動しなくても使える。もう一度実行すると最新版に更新する。ソースから使う場合(Bun 1.4 以上)は次のとおり。
git clone https://github.com/sasanokusa/sasacode && cd sasacode
bun install
ln -s "$PWD/packages/cli/src/main.ts" ~/.local/bin/sasacode
sasacode # 対話モード(TUI)
sasacode -p "テストを直して" # ヘッドレス:答えを stdout に、進捗を stderr に
sasacode -p "…" --output jsonl # 全イベントを JSONL で
sasacode -p "…" --output jsonl --control stdio # 親プロセスが stdin で承認に答え、メッセージを送り、中断できる([ヘッドレスの制御](#ヘッドレスの制御))
echo "$LOG" | sasacode -p "原因は?" # パイプした入力は -p の後ろに付く(5 秒何も来なければ読まない。--stdin で終わりまで待つ)
sasacode -c # このディレクトリの直近のセッションを再開
sasacode -r <id> -p "続き" # セッション ID を指定して続ける(tmux がなくても会話を続けられる)
| オプション | 内容 |
|---|---|
-m <provider/model> | モデル(例 anthropic/claude-opus-5、openai/gpt-5.5、ollama/gemma4:e4b)。プロバイダーのモデル一覧にない名前なら、近い名前を示してエラーで終わる(一覧を取れないときは確かめない) |
--permission <edits|ask|agent|auto> | 権限モード(既定 edits) |
--thinking <off|low|medium|high|xhigh|max> | 推論の深さ |
--max-turns <n> | 1回の実行のターン数の上限(既定 200、0 で無制限) |
--control stdio | -p --output jsonl と併用。親プロセスがstdinで承認に答え、メッセージを送り、実行を中断できる(ヘッドレスの制御) |
--append-system-prompt-file <path> | ファイルの中身(UTF-8)を、設定の instructions の後ろにシステムプロンプトとして足す。読めないファイルはエラーで終わり、空のファイルは何も足さない。TUIでも使える |
-c / -r <id> / --no-session | 再開 / IDを指定して再開 / 保存しない |
--trust-project | プロジェクトを確認なしで信頼する(ヘッドレス向け。プロジェクトの信頼) |
sasacode plugin search|install|update|remove|list|publish | プラグインを探す・入れる(npmかgit URL)・更新する・npmに公開する(共有) |
sasacode endpoint add|remove|list | 自前のサーバーの追加(形式は自動判別) |
sasacode login [status|logout] | ChatGPTプランでログイン(openai-codex/… のモデル用) |
-h, --help / -v, --version | 使い方 / 版を出す |
ほかのプログラムが sasacode -p "…" --output jsonl を子プロセスとして動かすときは、--control stdio を付けると、確認が必要な呼び出しにstdinで答えたり、実行中のモデルにメッセージを送ったり、実行を中断したりできる。-p と --output jsonl の両方が必要で、欠けているとエラーで終わる。stdinは制御に使うので、パイプした入力はプロンプトに付かない。
stdoutには、これまでのJSONLのイベントに混ざって、次の行が1件ずつ出る。
{"type":"approval_request","id":"approval-1","callId":"call_1","tool":"bash","args":{"command":"touch x"},"reason":"…","cwd":"/path/to/project"}
{"type":"approval_cancelled","id":"approval-1"}
{"type":"control_error","error":"not valid JSON"}
stdinは1行1件のJSON(JSON Lines)で読む。
{"type":"approval","id":"approval-1","decision":"allow"} // "allow" | "always" | "deny"
{"type":"approval","id":"approval-1","decision":"deny","feedback":"理由"}
{"type":"message","text":"テストも見て"}
{"type":"abort"}
approval_request は、確認が必要な呼び出しごとに1行出る。呼び出しは答えが届くまで実行しない。id は答えに付ける。callId は会話の中のtool_callのid、tool と args は呼び出しの中身、reason は確認が必要な理由。approval の decision は、allow が今回だけ許可、always が許可に加えて同じ呼び出しを許すルールの追加(TUIの「常に許可」と同じで、プロセスの終了まで有効)、deny が拒否。feedback は deny のときモデルに渡る。message は、TUIで実行中に打った入力と同じで、モデルの次のターンに届く。実行中の作業に指示を足したり、方向を変えたりするのに使う。text は空でない文字列。abort はCtrl+Cと同じで、実行を中断する(agent_end の cause は aborted、終了コードは1)。approval_cancelled を出す。そのidへの答えは control_error になる。type、不明な id、不正な値)は control_error を出して読み続ける。feedback は the controlling process closed stdin。実行は中断しない。This is the beginning of the README. Read the rest at the original. Read the full README ↗