AIコーディングアシスタントは素晴らしいです。ぐちゃぐちゃのコードを...ほんの少しだけ整理されたぐちゃぐちゃのコードにリファクタできます。見たことのないコードを説明できます。ほぼ正しい解決策を自信満々に提案してきます。
できないことは、何かを覚えることです。タブを閉じると、あなたのAIの金魚はリセットされます。毎回、毎回。
私はそれに飽きました。そこでCtxNestを作りました。知識のための永続的なBrain、実行のためのサンドボックス化された一対のHands、そしてループを閉じるフィードバックとしてのEyes。すべてMCP上で。すべてあなたの手元のマシンで。クラウドなし、サブスクリプションなし、コードベースにアクセスできるベンダーなし。
"とにかくもっとコンテキストを貼れ" の問題点
お作法はわかっています。新しいチャットを開きます。READMEを貼ります。関連ファイルを貼ります。またアーキテクチャを説明します。エラーを貼ります。すでに試したことを説明します。するとAIは、2メッセージ前にやるなと言ったまさにそのことを、自信満々に提案してきます。
コード提案者は質問に答えます。エージェントはタスクを完了させます。違いはフィードバックループ——そしてほとんどのツールにはそれがないことです。
CtxNestは、そのループをローカルに構築します。
Brain → Hands → Eyes
Brain → Hands → Eyes → Brain → ...
Brainはエージェントは何を知る必要があるのか?に答えます——FTS5によるフルテキスト検索、ファイルごとのgitによるバージョン管理、きめ細かなセクション編集、そしてプロジェクト横断のコンテキストを備えたmarkdownの知識ヴォールトです。Obsidianのようなものですが、あなたが11時にチャット画面へ無理やり貼り付けなくても、AIが実際に読めます。
Handsはエージェントは安全に何をできるのか?に答えます——ctxnest.jsonでコマンドを宣言すると、CtxNestはそれらを名前空間付きのMCPツールとして公開します。シェルはありません。作業ディレクトリはロックされています。クリーンな環境。検証済みのパラメータ。厳格なタイムアウト。オプションで人間の承認。エージェントはツールを勝手に作り出したり、プロジェクトルートから脱出したり、自分自身のコマンド表面を改変したりできません。あなたができると言ったことしか実行できません。革命的な概念ですよね。
Eyesはいま何が起きたのか?に答えます——Handsの整形済みstdout、Brainのdiff_against_disk / whats_new / get_historyによる差分に基づく観測、そしてjournal_appendで学びを書き戻し、次のセッションが今回より賢く始まるようにします。
最後の部分——Brainへ戻るジャーナル矢印——こそが、複利を生むポイントです。エージェントは自分がやったことを記録し、明日のセッションはそのメモを見つけます。ループは実行のたびに賢くなります。あなたのAIは金魚から、実際の長期メモリを持つ何かへ進化します。
実例
Claude Codeにこう頼みます:"デモ動画を、対象アプリが要求する形式に変換して。"
前置きなし。「プロジェクトの構成はこうです」といった話もなし。その一文だけです。
1. Brain(コンテキスト収集)
-
search("target app video format")→standards.mdを見つける:対象アプリはH.264 MP4が必要 -
search("demo video source")→media-assets.mdを見つける:ソースはassets/raw/demo_raw.mov
2. Hands(実行)
- 解決したパスを使って
myproj__convert-videoを呼び出す ffmpegを安全にプロジェクトルートで実行する——シェルインジェクションなし、創造的なパストラバーサルなし、興奮なし
3. Eyes(検証)
- stdoutを読み取り、変換が成功したことを確認し、ファイルサイズと長さをチェックする
4. Brain(ジャーナリング)
-
journal_append:"demo_raw.movをH.264 MP4に変換しました。最終サイズ:14.2MB。"
プロンプトは1つ。エージェントはコンテキストを引き当て、実行し、検証し、そして文書化しました。明日には、すでに「これをやったこと」「どう進んだか」を知っています。
もしconvert-videoにctxnest.jsonへconfirm: trueが入っていたら、ステップ2は最初にあなたの承認のために一度止まります。というのも、「AIにあなたのファイルへffmpegをそのまま走らせておいていい」なんて、時と場合によってはノリに合わないことがあるからです。
比較すると
他のほとんどのエージェント型コーディングツールは、実行が最初から組み込まれています。知識ベースはありません。プロジェクトをまたいだコンテキストは持ちません。さらにあなたがコマンド表面を定義できるものもありません。
| Execution | Project knowledge base | Cross-project context | You control the commands | |
|---|---|---|---|---|
| Claude Code | ✓ | — | — | — |
| Cursor | ✓ | — | — | — |
| Windsurf | ✓ | — | — | — |
| CtxNest + Hands | ✓ | ✓ | ✓ | ✓ |
現時点で、実行はコモディティです。あらゆるコーディングエージェントがそれを持っています。ギャップは、実行の周りすべて——永続メモリ、プロジェクト横断の標準、そしてインフラのようにあなたが作成しレビューできるコマンド表面——であって、ベンダーが勝手に決めたものではありません。
そしてすべてローカルだからこそ:
- 決定的なリトリーバル — SQLite FTS5。ファンキーなベクター埋め込みではありません。クラス名や関数シグネチャに対する、幻覚めいた関連性などありません。
- 履歴対応 — エージェントは今日のスナップショットだけでなく、意思決定の履歴をもとに推論できます。「先月の認証について、どう決めたっけ?」がちゃんと機能します。
- ゼロのトークン浪費 — エージェントは引き出す前に閲覧します。コンテキストウィンドウが、ドキュメントフォルダ全部で詰まることなくクリーンに保たれます。
-
構成によるセキュリティ — リモートサンドボックスに資格情報を事前配置しない。マルチテナントの被害拡大範囲を作らない。サードパーティへデータを持ち出さない。キルスイッチは自分のプロセスで
Ctrl-C。脅威モデルは驚くほど退屈なものです。
はじめに
最短の手段はDockerです:
curl -fsSL https://raw.githubusercontent.com/safiyu/ctxnest/main/docker-compose.hub.yml \
| docker compose -f - up -d
UIはhttp://localhost:3000です。データは./ctxnest-dataに永続化されます。
DockerなしでMCPのみがいい?クライアントのmcpServers.jsonにこれを追加してください:
{
"mcpServers": {
"ctxnest": {
"command": "npx",
"args": ["-y", "ctxnest-mcp"],
"env": {
"CTXNEST_DATA_DIR": "/absolute/path/to/your/data"
}
}
}
}
}
Claude Code、Cursor、Gemini、Codex、そしてMCPを話せる他のあらゆるものと連携します。
実際に見てみる
Brain → Hands → Eyes のループ、Claude と Antigravity によるライブMCP統合、ナレッジ・ボールト(知識の保管)、ローカルRAGをカバーする完全なウォークスルー・デモ — こちらでご覧ください。
インストールせずに MCP のエンドポイントを試してみたいですか?インストール不要のインタラクティブデモが、Glama の CtxNest ページにあります。
これは v7.2.2 です。Hands 機能は v7.0.0 で入ってきて、ここから本当に面白くなりました。ぜひ試して、イシューを提出して、どこが壊れているのか教えてください。
エージェント型コーディングの未来を見据えて丁寧に作りました。そして、AI の金魚みたいな記憶に対する軽いフラストレーションもあります。




