Shimとは
Shimは、ターミナルユーザー向けに設計された、小規模でローカルファーストなAIエージェントハーネスです。デスクトップアプリケーション、バックグラウンドデーモン、データベース、Docker、Node.js、Pythonを必要とせず、対応するモデルAPI、Agent Skills、Model Context Protocolサーバーを接続するための共通インターフェースを提供します。
Shimは静的バイナリとして配布され、設定には通常のJSON、セッションには追記専用のJSONLファイルを使用します。APIキーはShimの設定に書き込まず、環境変数から読み取ります。
Shimは推論エンジンではなく、ハーネスです。ローカルモデルの重みは、Ollama、LM Studio、llama.cppなどの推論サーバー、または互換性のある別のサービスを通じて実行する必要があります。ホスト型モデルは、対応するHTTP API経由で公開する必要があります。
主な機能
- 会話形式と明示的な操作: 自然言語で管理リクエストを入力するか、完全なスクリプト対応CLIを使用できます。
- ローカルコマンドルーティング: オプションのローカル小型モデルにより、管理リクエストを許可リストに登録されたShimコマンドへ変換できます。
- 複数のモデルプロバイダー: ShimはOpenAI互換API、Anthropic Messages、ローカルプロバイダーのプリセット、カスタムエンドポイントに対応しています。
- Agent Skills:
SKILL.mdファイルを検出し、必要な場合にのみ完全な指示を読み込みます。 - MCP統合: stdioまたはStreamable HTTPのMCPサーバーに接続し、そのツールをエージェントに公開できます。
- 権限制御: 読み取り専用、確認後に実行、自動実行から選択できます。
- ポータブルな状態: 設定とセッションには通常のJSONおよびJSONLファイルを使用します。
- テレメトリなし: ネットワーク通信は、明示的なモデル呼び出し、スキルのダウンロード、ローカル検出、設定済みMCPサーバーに限定されます。
Shimをインストールする
方法1: リリースをダウンロードする
Shimのリリースページから、Windows、macOS、Linux用の静的バイナリをダウンロードします。実行ファイルをシステムのPATHに配置してから、Shimを初期化します。
shim setup
shimPowerShellで現在のディレクトリからダウンロードした実行ファイルを直接実行する場合は、.\shim.exeを使用します。
方法2: Goでインストールする
Go 1.25以降が利用可能な場合は、次のコマンドでShimをインストールします。
go install github.com/Balanov/shim/cmd/shim@v0.1.0
shim setup方法3: ソースからビルドする
リポジトリをクローンし、テストを実行して、バイナリをビルドします。
git clone https://github.com/Balanov/shim.git
cd shim
go test ./...
go build -trimpath -ldflags="-s -w" -o shim ./cmd/shim
./shim setupリポジトリには、Windows用のscripts/build.ps1とUnixシステム用のscripts/build.shも含まれています。
モデルに接続する
ローカルモデルサーバーを検出する
Ollama、LM Studio、llama.cpp、または互換性のある別のローカルサーバーがすでに実行されている場合は、Shimに利用可能なモデルを検出して設定するよう依頼します。
shim model discover --addShimにモデルの重みは含まれておらず、バックグラウンドでダウンロードされることもありません。ローカルモデルの実行は、引き続きモデルサーバーが担当します。
ホスト型プロバイダーを追加する
Shimには、OpenAI、OpenRouter、Anthropic、Gemini、GitHub Models、Hugging Face、および複数のローカルプロバイダー用のプリセットが含まれています。モデルを追加する前に、プロバイダーの認証情報を環境変数に設定します。
たとえば、PowerShellでは次のようにOpenRouterを設定できます。
$env:OPENROUTER_API_KEY = "..."
shim model add openrouter your/model --name main --use
shim model test mainその他の認証情報用変数には、OPENAI_API_KEY、ANTHROPIC_API_KEY、GEMINI_API_KEY、GITHUB_TOKEN、HF_TOKENがあります。永続的な認証情報には、オペレーティングシステムまたはシェルの標準的な秘密情報管理機能を使用してください。Shimのプロジェクト設定にAPIキーを記載しないでください。
ホスト型モデルを追加する例:
shim model add openrouter anthropic/claude-sonnet-4.5 --name claude --use
shim model add openai gpt-5 --name gpt --use
shim model add huggingface org/model --name hf --useカスタムエンドポイントを追加する
対応するOpenAI互換エンドポイントには、ベースURLとモデル識別子を指定します。
shim model add custom my-model --name mine \
--base-url http://127.0.0.1:8000/v1 --useカスタムプロバイダーでは、OpenAI互換アダプターまたはAnthropicアダプターを使用できます。カスタムサービスでは認証情報は任意で、設定可能です。
最初のエージェントタスクを実行する
ワンショット実行を使用する
リポジトリを調査する最も安全な方法は、読み取り専用で実行することです。
shim run --read-only "explain this repository"ファイルの編集や検証コマンドの実行が必要なタスクでは、--yesを使用してその実行中の操作を承認し、--verboseで追加の出力を表示します。
shim run --yes --verbose "fix the tests and verify the result"--yesは、ワークスペース、モデル、依頼されたタスクを信頼できる場合にのみ使用してください。
対話型ターミナルを起動する
サブコマンドを指定せずにShimを実行すると、対話型セッションが開始されます。
shimその後、次のようなエージェントリクエストを入力できます。
fix the failing tests in this repositoryshim helpを実行すると、利用可能なすべてのコマンドを確認できます。
自然言語でShimを操作する
Shimは、一般的な英語およびロシア語の管理操作について、決定的なオフラインフレーズを認識します。その他の言語や、より柔軟な解釈を使用する場合は、コマンドルーターとしてモデルを設定します。
shim router use ollama/qwen3:4bルーターはコマンドではないチャットテキストを受け取り、それが設定リクエストに該当するか、通常のエージェントタスクかを判断します。変更を伴うコマンドを提案した場合、Shimは実行前に確認を求めます。
ルーティングをマシン内にとどめる必要がある場合は、ループバックモデルのエンドポイントを使用してください。ルーターが管理するのはコマンドの解釈だけです。選択されたプライマリモデルが、対応する言語で通常の会話を処理します。
エージェントスキルを追加する
Shimは、設定ファイルと同じ場所にあるグローバルなskills/ディレクトリ、およびワークスペース内の.shim/skills/、.agents/skills/、.claude/skills/ディレクトリにあるSKILL.mdファイルを検出します。
最初にシステムプロンプトへ追加されるのは、スキル名と説明だけです。完全な手順はload_skillを通じて必要なときに読み込まれるため、不要なプロンプト内容を減らせます。
リポジトリ参照、GitHub URL、またはローカルパスからスキルを追加します。
shim skill add owner/repository
shim skill add https://github.com/owner/repository
shim skill add ./local/skill-or-collection次のコマンドで、インストール済みスキルを確認・管理できます。
shim skill list
shim skill show name
shim skill remove nameスキルは信頼できない指示です。特にシェル実行やネットワークアクセスを要求する場合は、使用前に確認してください。
MCPサーバーに接続する
Stdioサーバーを追加する
次の例では、現在のディレクトリ用にMCPファイルシステムサーバーを登録し、そのツールを一覧表示して、1つのツールを直接呼び出します。
shim mcp add filesystem npx -y @modelcontextprotocol/server-filesystem .
shim mcp tools filesystem
shim mcp call filesystem list_allowed_directories '{}'Streamable HTTPサーバーを追加する
名前とURLを指定して、リモートのStreamable HTTPエンドポイントを登録します。
shim mcp add internal https://mcp.example.com/mcp設定済みのサーバーは、次のコマンドで一覧表示または削除できます。
shim mcp list
shim mcp remove filesystemMCPツールは、mcp_filesystem_list_allowed_directoriesのような名前で公開されます。デフォルトの権限モードでは、MCP呼び出しに確認が必要です。
HTTPヘッダーとstdioの環境変数は、ShimのJSON設定で追加できます。値は${ENV_VAR}の展開に対応しているため、設定ファイルではなく環境変数にシークレットを保持できます。
権限モードを選択する
Shimのデフォルトはaskモードです。ワークスペースファイルの読み取り、一覧表示、検索は許可されますが、ファイルへの書き込み、編集、シェルコマンド、MCP呼び出しには確認が必要です。
グローバルな権限ポリシーは、次のコマンドで選択します。
shim permissions read-only
shim permissions ask
shim permissions auto- read-only: 書き込み、シェルコマンド、MCP呼び出しを無効にします。
- ask: 影響の大きい操作について確認を求めます。
- auto: 確認プロンプトなしでエージェントが操作できるようにします。
一時的な変更には、グローバルのデフォルトを変更せず、shim run --read-onlyまたはshim run --yesを使用してください。
Shimはオペレーティングシステムのサンドボックスではありません。シェルコマンドとMCPサーバーは、ユーザーアカウントの権限で実行されます。信頼できないワークロードには、コンテナ、仮想マシン、またはOSサンドボックスを使用してください。
Shimのファイルツールは、ワークスペースからの字句的なパストラバーサルやシンボリックリンクによる脱出を拒否しますが、これらのチェックで悪意のあるプロセスを封じ込めることはできません。モデルの出力、リポジトリの内容、スキル、MCPの応答は、信頼できないデータとして扱ってください。
セッションと設定を管理する
セッションの確認、新しいセッションの開始、または以前のセッションの継続を行います。
shim session list
shim session new
shim run --resume SESSION_ID "continue"問題の調査には、診断コマンドと設定コマンドを使用します。
shim status
shim doctor
shim config path
shim config show主な設定ファイルは、オペレーティングシステムのユーザー設定場所にあるshim/config.jsonです。SHIM_CONFIG環境変数または--configオプションでパスを上書きできます。セッション記録は、設定ファイルと同じ場所に追加専用のJSONLファイルとして保存されます。
高度なヒント
- 読み取り専用モードで開始する。編集やコマンド実行を許可する前のリポジトリ分析には、
--read-onlyを使用します。 - モデル設定をテストする。プロバイダーを追加したら、
shim model test NAMEを実行して接続と認証情報を確認します。 - ルーティングをローカルに保つ。自然言語によるコマンド分類をコンピューター内にとどめる必要がある場合は、ルーターにループバックモデルを割り当てます。
- MCPのシークレットには環境変数の展開を使用する。シークレットの値を直接保存せず、設定内で
${ENV_VAR}を参照します。 - 実行ごとの権限を優先する。グローバルポリシーを
autoのままにせず、個々のタスクには--read-onlyと--yesを使用します。 - 第三者の指示を確認する。ダウンロードしたスキルを調査し、シェル、ファイルシステム、ネットワークへのアクセスを許可する前にMCPサーバーの動作を検討します。
- まず診断を実行する。
shim statusやshim doctorなどのコマンドで、エージェントを実行する前に設定の問題を特定できます。
まとめ
Shimは、対応するモデルAPI、Agent Skills、MCPサーバーを接続するためのコンパクトなターミナル層を提供します。静的バイナリ、プレーンファイルによる設定、環境変数ベースの認証情報、明示的な権限モードを備えているため、軽量で確認しやすいAIエージェントのワークフローを求めるユーザーに適しています。まず読み取り専用のタスクから始め、各プロバイダーやツールを確認し、必要な場合にのみ広い権限を付与してください。
