AIコーディングエージェントに「脳・手・目」を与えた:CtxNestを紹介

Dev.to / 2026/5/3

📰 ニュースDeveloper Stack & InfrastructureTools & Practical UsageIndustry & Market MovesModels & Research

要点

  • この記事では、通常のチャット型アシスタントがセッションごとに文脈を忘れてしまう課題を超えるために、永続的な記憶と確実なフィードバックループを追加するローカル型のAIコーディングエージェント基盤「CtxNest」を紹介します。
  • CtxNestは機能を「Brain(脳)・Hands(手)・Eyes(目)」の3要素に分け、Brainはフルテキスト検索やgitベースのバージョン管理を備えたナレッジ保管庫、Handsは安全に実行できるMCPツール、Eyesは差分に基づく観測とジャーナリングで状況を学習に結びつけます。
  • Handsは、ユーザーが宣言したコマンドのみを名前空間付きのMCPツールとして公開し、作業ディレクトリの固定、パラメータ検証、タイムアウト、必要に応じた人の承認などでエージェントの実行範囲を厳格に制限します。
  • Eyesは整形された出力や差分に基づく観測を行い、ジャーナル投稿として学びをBrainへ書き戻すことで、実行のたびにエージェントが時間とともに賢くなるよう設計されています。
  • この仕組みはMCP経由でユーザーの手元のマシンだけで動作することを目指しており、クラウド利用、サブスクリプション、ベンダーにコードベースへのアクセスを許さない点を強調しています。

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-videoctxnest.jsonconfirm: 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 ページにあります。

github.com/safiyu/ctxnest

これは v7.2.2 です。Hands 機能は v7.0.0 で入ってきて、ここから本当に面白くなりました。ぜひ試して、イシューを提出して、どこが壊れているのか教えてください。

エージェント型コーディングの未来を見据えて丁寧に作りました。そして、AI の金魚みたいな記憶に対する軽いフラストレーションもあります。