chamber について
chamberは、ローカルノートを使うAIエージェント向けのMCPサーバーです。決定的な文字列照合で、回答中の数値や名前などが引用箇所に含まれるか確認し、引用元の変更も追跡します。確認処理にモデルやネットワークは使いません。
主な機能
- 01数値、名前、ドメイン、ファイル名の照合
- 02ローカルノートのインデックス化と検索
- 03引用箇所の変更確認
- 04出典のない主張の引用負債管理
- 05文ごとの引用チェック
活用シーン
- 01ノートから引用した数値の誤り検出
- 02記録済みの主張を支える根拠の変更検出
- 03ノートから出典付き回答を作成
MCP 対応
MCPサーバーは、主張と引用ノートを照合するchamber_checkを提供します。設定により、モデルが必要なchamber_askも利用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @bu7umaid/chamberCHAMBER_PYTHONPath to a Python interpreter with onnxruntime, used by the local embedder. Optional: defaults to python3 on PATH; without onnxruntime, semantic search degrades and Chamber says so.CHAMBER_API_KEYシークレットAPI key for the configured model endpoint. Only read when model.base is not a loopback address; a local endpoint needs no key.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
4掲載時のツール一覧 · 4 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| claims | array | はい | 確認する主張と、それぞれの出典メモ。 |
| record | boolean | いいえ | SUPPORTED の主張を信念としてコミットし、出典をピン留めして chamber_verify によるドリフト確認に備えます。デフォルトは false で、何も書き込まれません。 |
詳細
Chamber
AI エージェントが、引用したノートにない数字や名前を出していないか検出します。Claude Code(または任意の MCP ホスト)がノートをもとに回答するとき、各主張をまず chamber_check に通すよう指示されます。実際の出力を一部抜粋します。
2 claim(s): 1 supported · 1 terms absent · 0 nothing to check · 0 not judged
[TERMS_ABSENT] Q3 revenue was $420k, up 18% on Q2.
the cited text does not contain: 420k
checked: q3-review.md#p0
[SUPPORTED] Enterprise renewals moved to Dana Ortiz in August.
every term Chamber recognises occurs in the cited text
checked: q3-review.md#p0
ノートには $240k とありますが、エージェントは $420k と書きました。その後ノートを編集すると、同じチェックで新しいテキストが判定され、インデックスには古いコピーが残っているため、結果に index is behind this file と追加されます。
Claude Code では、プラグインとして使えます。ノートのフォルダーを尋ね、サーバーと chamber-check スキルを追加します。
/plugin install chamber --marketplace abm9111/chamber
2.1.275 より前の Claude Code では、まず /plugin marketplace add abm9111/chamber を実行してから、/plugin install chamber@chamber を実行します。プラグインに渡すのは、絶対パスまたは ~/ で始まるパスのフォルダー 1 つと、スキップするフォルダーのカンマ区切りリスト(.obsidian,*sync-conflict*。名前にカンマは使用できません)です。どちらも /plugin configure chamber@chamber で変更できます。プラグインはバージョンが固定された Chamber リリースを実行します。シェルを介さずに npm の npx を起動する、小さなランチャー(plugin/launch.mjs)を使います。npx を直接実行しても、ネイティブ Windows では起動しません。
Claude Code はサードパーティーのマーケットプレイスを自動では更新しません。新しいバージョン固定を取得するには、自動更新を有効にする(/plugin の Marketplaces タブで chamber を選び、Enable auto-update を選択する)か、claude plugin update chamber@chamber を実行します。claude mcp add でサーバーも手動で追加している場合、chamber_check が 2 回表示されます。プラグイン側を残し、claude mcp remove chamber を実行してください。
または、任意の MCP ホストでサーバーのみを使うこともできます。
claude mcp add -s user chamber -- npx -y @bu7umaid/chamber mcp --notes ~/Notes
{
"mcpServers": {
"chamber": {
"command": "npx",
"args": ["-y", "@bu7umaid/chamber", "mcp", "--notes", "/absolute/path/to/Notes"]
}
}
}
Codex では、CLI、IDE 拡張機能、デスクトップアプリがすべて同じ ~/.codex/config.toml を読み込みます。CLI でサーバーを追加します。
codex mcp add chamber -- npx -y @bu7umaid/chamber mcp --notes /absolute/path/to/Notes
または、そのファイルに手動で追加します。初回起動時はパッケージをダウンロードするため、Codex がサーバーの起動を待つ 10 秒を超えることがあります。そのため、このテーブルではより長い時間を設定しています。
[mcp_servers.chamber]
command = "npx"
args = ["-y", "@bu7umaid/chamber", "mcp", "--notes", "/absolute/path/to/Notes"]
startup_timeout_sec = 60
この形式は、OpenAI の Codex MCP ページに基づいています。codex mcp add、command と args を含む [mcp_servers.<name>] テーブル、およびデフォルトが 10 の startup_timeout_sec を使います。Chamber は Codex でテストされていません。
モデルもアカウントもネットワークも不要です。このチェックは、node:sqlite とディスク上のファイルを使った決定論的な文字列照合です。数字、大文字で始まる名前、ドメイン、ファイル名、件数をチェックします。意味はチェックしないため、ノートにある言葉だけで作られた否定文や、内容を逆転させた文でもチェックを通過します。検証済みの引用が証明することと、証明しないことをご覧ください。
チェックに加えて、出典を引用する回答や、信頼していた結論の根拠となる情報源に変更があったとき、毎日知らせてくれるジョブも用意されています。
チェックを実行する
上記の npx コマンドがあれば、ほとんどの場合は十分です。--exclude <pattern> は --notes の後に複数回指定できます。設定で指定した取り込みルートとその除外設定も対象になります。ほかに 2 つの方法があります。
チェックアウトから実行(Node 23.6 以降)。 TypeScript はビルド手順なしで、リポジトリから直接実行できます。try は一時的なワークスペースを作成し、実際のコードパスを実行してから削除します。公開パッケージは Node 22 で動作します(実測は 22.23.1 で、Node の experimental-SQLite 警告が表示されます)。node:sqlite がないため、Node 20.20.2 では ERR_UNKNOWN_BUILTIN_MODULE で終了します。チェックアウトで使用する場合の最低バージョンは、引き続き Node 23.6 です。
git clone https://github.com/abm9111/chamber.git && cd chamber && npm ci && node --experimental-strip-types src/cli.ts try
/mcp に chamber_check が表示されない場合、 ホストは最小限の PATH でサーバーを起動しています。自分のシェルで command -v node を実行してインタープリターのパスを取得し、公開版の bin またはチェックアウト内の src/mcp_server.ts を指定してください。これらは別のファイルです。
# published bin: bin/chamber.js loads dist/. This is not src/mcp_server.ts.
claude mcp add -s user chamber -- "$(command -v node)" /path/to/node_modules/@bu7umaid/chamber/bin/chamber.js mcp
# checkout only. src/mcp_server.ts is not in the npm install.
claude mcp add -s user chamber -- "$(command -v node)" --experimental-strip-types /path/to/chamber/src/mcp_server.ts
取り込みと chamber_ask には設定が必要です。取り込みルートが設定されている場合、チェックも設定を読み取ります。設定:取り込み、chamber_ask、チェックの設定ルートをご覧ください。
実際に人々がしていること
Chamber ユーザーの公開された記録はまだありません。以下は X で見られる関連する失敗例であり、このチェックが存在する理由です。
- Claude Code に Obsidian フォルダーを指定すると、ファイルを読み込みます。文の検証はしません。Richard Kovacs、2026年9月28日: Claude はソースの一覧を返し、本人が確認します。本人が挙げている残る失敗は確証バイアスであり、それを自制の問題として扱っています。
- エージェントが呼び出すことを覚えていなければならないツールは、ゲートではありません。
Saksham Arora、2026年10月2日:
共有メモリ MCP は、もう一方のエージェントが検索すると判断した場合にしかセッションを思い出せなかったため、すべてのメッセージの前にフックを設置しました。
chamber_checkも同じ仕組みです。MCP のinstructionsは Claude に呼び出しを促します。呼び出しをスキップしても、ターンをブロックするものはありません。レシートを必須とする Stop フックが不足している要素ですが、まだこのリポジトリにはありません。 - バイラルなボルトの投稿(再現率99.7%、数分で数千件のリンク)は測定結果ではありません。このリポジトリにある数値は、
docs/KNOWN_LIMITATIONS.md§2 の200件の主張セットです。捏造された値はほとんど検出されますが、否定は検出されません。
2分で確認する
上記のチェックアウトコマンドは使い捨てのワークスペースを構築し、その中で実際のコードパスを実行してから削除します(中を見たい場合は --keep を指定します)。データベースは開きません。

この録画は手動で撮影したものではなく、assets/demo.tape を使ったスクリプトから生成されています。そのため、出力が変わると再生成され、存在しなくなったバージョンの Chamber がひそかに表示され続けることはありません。以下はすべて、このチェックアウトコマンドの実際の出力を抜粋したものです。
$ chamber believe belief "Customers may return any purchase within 30 days of delivery."
committed blf_ddcf4f3c9b2e81b8
an unsourced assertion is not refused — it mints citation debt.
$ chamber debts
dbt_18bd1c1171cdbfcb [pending]
$ chamber pay-debt
proposed 2 source(s), 2 pinned; best=0.694
$ chamber verify
blf_ddcf4f3c9b2e81b8 2/2 pins verified
これが通常の状態です。根拠が現在も有効な信念です。その後、誰かがその信念の基になったノートを編集し、30 days が 14 days に変わります。
$ chamber ingest ./notes
ingested 2 file(s) as 4 passage(s)
$ chamber verify
blf_ddcf4f3c9b2e81b8 1/2 pins verified
hash_mismatch: refunds.md#p0
誰もその信念を再検討するよう求めてはいません。結論は変わっていませんが、その根拠が変わり、終了コードはゼロ以外になるため、スケジュールされたジョブがそれに応じて動作できます。これが製品のすべてです。
さらに4つのシナリオ(外部アンカーによって検出されるロールバック済み台帳、劣化するくらいなら拒否するサンドボックス、拒否される悪意あるツールカタログ)は demos/ にあり、コードとの乖離を防ぐため CI で実行されます。
上記の用語集
Chamber が行うことはすべて、1つの SQLite ファイル内の行として記録されます。トランスクリプト内の各用語は、テーブルまたはハッシュを指しています。
| 用語 | 実際の意味 |
|---|---|
| passage | 1つの Markdown ファイルから切り出した1つのチャンクです。refunds.md#p0 はファイルパスとチャンクインデックスを表します。 |
| belief | belief テーブルの1行です。1つの主張文と、それを支える passage が関連付けられています。 |
| pin | 引用した passage の保存済みタイトル、本文、参照情報から計算した sha-256 です。引用時点で取得され、belief_source に保存されます。 |
| verify | ピン留めされたすべての passage を読み直し、ハッシュを再計算して比較します。いずれかが一致しなければ、ゼロ以外で終了します。モデルは関与しません。 |
| citation debt | ソースなしで主張が確定したときに作成される citation_debt テーブルの行です。この負債が返済されるまで、同じ主張を再び確定することはできません。 |
| pay-debt | 検索によって負債のある主張に対する passage が提示され、それを承認するとピン留めされます。 |
| APORIA | 検索で得られた passage が回答を裏付けない場合の判定です。返答は「わかりません」で、そのように記録されます。 |
| gate | 1つの SQLite トランザクション内でのチェックと書き込みです。両方が確定するか、どちらも確定しません。 |
| audit log | 追記専用の audit_event です。各行のハッシュには直前の行のハッシュが含まれるため、履歴を編集すると、それ以降のすべてのハッシュが壊れます。 |
| anchor | データベースの外部に保存されるログのルートハッシュです。ログの切り詰めを検出できるため、気づかれずに済むことはありません。 |
| the scheduler | ingest と verify を実行し、ドリフトがある場合にのみ通知する launchd/systemd ジョブです。 |
隠された仕組みではありません。sqlite3 ~/.local/share/chamber/chamber.sqlite '.tables' を実行すると、全体を確認できます。
出典を引用した回答
モデルを設定すると、chamber ask は各文の引用を個別に判定します。同じ2つのサンプルノートを使い、ローカルの30Bモデルで実行した場合:
$ chamber ask "summarise our refund policy"
Customers may return any purchase within 30 days of delivery [2]. Refunds
are issued to the original payment method, usually within five working days
of the returned item arriving at the warehouse [2]. However, perishable goods
and personalised items cannot be returned once dispatched [1].
[ALLOWED] Customers may return any purchase within 30 days of delivery [2]. Refu
sources: refunds.md#p0 — refunds › Refund policy, refunds.md#p1 — refunds › Refund policy › Exceptions
モデルには [1]…[k] が表示され、ドキュメント ID やハッシュは一切表示されないため、原理的に引用を捏造できません。回答を書き終えた後に、番号をファイルに対応付けます。何も引用していない文には UNSUPPORTED と印が付き、記録されますが、根拠としては扱われません。引用先の文章に番号、名前、ドメインが含まれていない場合も、その引用は外され、欠けていた語句が示されます(terms_absent)。実際の文章でも、そこに含まれていない主張の根拠にはなりません。回答内の見出しは [HEADING] と表示され、記録されません。
コーパスでは回答できないことを尋ねた場合は、さらに重要です:
$ chamber ask "what should a customer do if they want to return a perishable
item after the office has closed?"
I don't know
[APORIA] I don't know
どちらのノートもインデックスにあり、どちらも関連しています。しかし、質問に答える内容はどちらにもないため、断片を組み合わせて回答を作ることはありません。
設定:ingest、chamber_ask、check の設定ルート
npm link # puts `chamber` on your PATH
chamber init # writes ~/.config/chamber/config.json
次に、その設定を編集してノートのフォルダーとモデルを追加します:
{
"database": "~/.local/share/chamber/chamber.sqlite",
"model": { "base": "http://127.0.0.1:8087/v1", "name": "your-model", "mode": "openai" },
"ingest": [{ "root": "~/Notes", "exclude": ["transcripts", "attachments"] }]
}
--exclude <pattern> は --notes の後に繰り返し指定できます。設定で指定した ingest のルートと除外対象も、check で宣言済みのフォルダーとして扱われます。また、該当する項目がない除外指定があると、そのフォルダーの読み込みは拒否されます。インデックス内の行にだけ記録されたルートでは、インデックスに保持されていないファイルの読み取りは許可されません。
model.base には、OpenAI 互換のエンドポイントを指定できます。ループバックアドレスでは API キーは不要です。それ以外の場合は、ファイルからではなく環境変数から CHAMBER_API_KEY を読み込みます。
chamber ingest # index every configured root
chamber ask "..." # ask, with citations
chamber verify # re-check stored pins against the corpus
chamber corpus # what is actually in the index
使用される埋め込みモデルは、インストール方法によって異なります。 npm または Docker でインストールすると、ローカルの Ollama サーバーが 127.0.0.1:11434 で応答するか、CHAMBER_EMBEDDER=ollama が設定されていない限り、警告なしで local-hash-v1 ベクトルを使って埋め込みます。npm パッケージと2つの Dockerfile には models/minilm/(23 MB の MiniLM 重み)が含まれていないため、ハッシュベクトルを使うと、chamber ingest と chamber_ask の背後にある検索は意味ではなく文字 n-gram で照合します。chamber_check には影響しません。モデルを使わないためです。MiniLM を使うには、リポジトリをクローンし、pip install --require-hashes -r scripts/requirements-embed.txt で Python の依存関係をインストールして、それらがインストールされたインタープリターを CHAMBER_PYTHON に設定します。onnxruntime がないインタープリターを使うと、クローンでもハッシュベクトルにフォールバックし、stderr に警告が表示されます。
最初の ingest の前に除外対象を設定してください。 デフォルトの除外リストはありません。エクスポートしたチャットログのフォルダーを指定すると、Chamber はそのすべてを問題なくインデックス化し、そこから回答します。詳しくは chamber corpus と docs/KNOWN_LIMITATIONS.md の項目11をご覧ください。ルートが Obsidian のボルトの場合は、最初の ingest の前に .obsidian、.trash、*sync-conflict* を除外してください。シンボリックリンクされたフォルダーは、リンク先ではなくリンクのパスでインデックス化されます。check でも ingest と同じエントリーごとのルールを使うため、実際のパスも読み込みます。宣言されたフォルダーの外に出るリンクは読み込まれません。
CI のドリフトゲートとして使う
同じ検証ループはリポジトリでも機能します。ドキュメント内の主張をコードやポリシーの文章に紐付け、基盤が変わったときに chamber verify --json でビルドを失敗させます。ワークフローに1行追加するだけです。このリポジトリにはアクションが含まれています:
- uses: abm9111/[email protected]
docs/CI_DRIFT_GATE.md は1ページで読める手順書です。実行可能なトランスクリプトは demos/06_ci_drift_gate.ts をご覧ください。
毎日実行する
deploy/launchd/com.chamber.verify.plist(macOS)と deploy/systemd/(Linux)は、スケジュールに従って ingest と verify を実行し、ドリフトがあった場合にのみ通知します。ほとんどの日に正しく何も報告しないチェックは、やがて読まれなくなります。そのため、変化があるまでは通知を控えます。
Obsidian で表示する
コンパニオンプラグインの Chamber Drift は、verify --json のレポートを保管庫のサイドバーパネルとノートごとのバナーに表示します。それだけです。検証も書き込みもしません。どちらも Chamber が Obsidian の外で、独自のスケジュールに従って行います。レポートを書き出すワンライナーや Obsidian Sync に関する注意点を含むセットアップについては、docs/OBSIDIAN.md をご覧ください。
AI コーディングエージェントから使う
独自のツールで保管庫を読むエージェントは、伝えようとしている内容を確認できます。chamber_check はエージェントの主張と、その根拠として挙げたノートを受け取り、主張ごとに次のように回答します(抜粋)。
[SUPPORTED] One NVIDIA A100 80GB or an L40S can serve about 1,000 users for code completion.
found in: ai-coding-setups-march-2026.md#p25
[TERMS_ABSENT] One NVIDIA A100 80GB can serve about 2,000 users for code completion.
the cited text does not contain: 2000
このチェックではモデルを使いません。パスが絶対パスで、ファイルが宣言済みフォルダー内にある場合は、ディスク上のファイルを読み取ります。インデックス作成後に変更されたノートも、ディスク上のテキストに基づいて評価され、結果に index is behind this file が追加されます。パッセージ参照は、インデックス内のテキストに基づいて評価されます。SUPPORTED は、認識された用語がそのテキスト内にあることを意味します。その文がテキストから導かれることを意味するわけではありません。続いて、主張に含まれるすべての数値、大文字で始まる名前、ドメイン、ファイル名、件数がノートにも含まれていることを確認します。これにより、捏造された値を検出できます。小文字で始まる名前や一般的な単語は確認せず、ノート内の語句を使って作られた否定文や反転した文も検出できません。何を検出できるかの測定結果については、docs/KNOWN_LIMITATIONS.md §2 をご覧ください。record: true を指定しない限り、何も書き込みません。指定した場合は、サポートされた主張がゲートを通じてコミットされ、根拠となるパッセージに固定されます。ノートを再取り込みすると、固定されたパッセージが変更された主張を chamber_verify が報告します。
サーバーは MCP の instructions でこのことをホストに伝え、Claude Code はそれをエージェントのコンテキストに含めます。これはプロンプトの契約であり、実行時のゲートではありません。
ツールは3つではなく、4つです。上記の chamber_check に加え、残りの3つが他の機能を担います。chamber_ask(Chamber が設定済みのモデルで回答し、同じく主張ごとの判定を返します)、chamber_verify(記録済みの主張のドリフトを確認します)、chamber_corpus(インデックスの内容を確認します)。CHAMBER_PYTHON は任意で、chamber_ask のセマンティック検索でのみ使われます。onnxruntime が見つからない場合は、ハッシュベクトルにフォールバックします。モデルが自分の根拠を再インデックスできないよう、取り込みは引き続き CLI から行います。
上記のコマンドでサーバーを登録してください。この npx は公開済みの bin(dist/)を実行します。
サーバーはツールを呼び出すたびに設定を読み直すため、model を編集すると再接続せずに次の呼び出しから反映されます。ただし、サーバー自身の環境に設定された CHAMBER_* 変数は、引き続きファイルより優先されます。例外はデータベースです。データベースを開いたままモデルの応答を待つ場合があるため、プロセスの存続中は切り替わりません。データベースを切り替えるにはサーバーを再接続してください。解決されたデータベース、モード、ベースは、初回使用時と変更時に stderr に出力されるため、ホストの MCP ログでサーバーが使用している設定を確認できます。
このインターフェースからスキルを有効にしたり、保留中の書き込みを承認したり、取り込みを実行したりすることはできません。これらのゲートは、人間が通過するために設けられています。モデルに承認権限を与えると、ゲートを弱めるどころか、その役割を逆転させてしまいます。
chamber_ask は読み取り専用ではなく、書き込みは単なる記録管理でもありません。すべての主張がコミットゲートを通過するため、検証済みの引用を持つ主張は根拠への固定情報を伴う信念として記録されます。これは、後でドリフトを再確認するために chamber verify が確認する対象そのものです。出典のない断定は引用の負債を生み、使用量も記録されます。これはコマンドラインでの chamber ask と同じ動作です。保証されるのは、ゲートが迂回されないことであり、何も書き込まれないことではありません。
検証済みの引用が証明すること、証明しないこと
Chamber が証明するのは、引用した箇所が引用元として示された箇所そのものであるということです。改変されておらず、今も存在し、引用で述べられているとおりの内容であることを証明します。
その箇所から主張が導かれるかどうかは判断できません。モデルが実在する情報源を引用しながら読み違えることはあり、その場合、ここにあるすべての層を通過します。これは明示された非目標であり、実際に起きていることも確認されていますが、解決されていません。
出力を信頼する前に、docs/KNOWN_LIMITATIONS.md をお読みください。そこには、特に都合の悪い2つを含め、21項目の制限が記載されています。サンドボックスはデフォルトで必須であり、デフォルトでは実行が拒否されます。ツールコード(tool-run、tool-synth、sandbox-test、MCP ツールの検証)は、bubblewrap のもとで、プローブによって bubblewrap が隔離機能を持つことが確認された後にのみ実行されます。そのようなバックエンドがなければ実行は拒否され、CHAMBER_SANDBOX_REQUIRED=0(または false、no、off)を指定すると、環境変数を削除した環境で通常のサブプロセスを実行する明示的なオプトアウトになります。このオプトアウトでは隔離されません。プローブ実行では $HOME が読み取られ、DNS が解決されました(docs/KNOWN_LIMITATIONS.md §1)。bubblewrap がない macOS では隔離をテストできません。この経路は chamber_check の対象外です。オプトアウト時に「サンドボックス」を隔離として解釈しないでください。引用の負債があると逐語的な繰り返しは確実に阻止されますが、それを経由する言い換えの判定はヒューリスティックです。調整の結果、言い換えと矛盾を区別できるコサイン類似度のしきい値は見つかりませんでした。数値と否定のチェックを追加し、最悪のケースは解消されました。負債のある主張を訂正するオペレーターは、言い換えたことを理由に拒否されなくなりました。しかし、真の言い換え5件のうち2件は依然としてすり抜け、数値も否定も含まない矛盾は今も繰り返しとして判定されます。
不変条件
アサーションは、そのチェックと書き込みが1つのトランザクション内でコミットされるゲートを通らない限り、実行可能、引用可能、または重要な根拠として扱われる状態になってはなりません。それ以外のものは、劣化したり、保留されたり、無効化されたりすることはあっても、決して暗黙に通過してはなりません。
| ゲート | 拒否する条件 |
|---|---|
commitBelief | 未解決のブロッキング引用負債があるアサーション、ピンが欠落または検証不能であること、反証情報を情報源として使用していること、ファストパスで信念型のコミットを行うこと |
tryActivateSkill | 未解決の保留事項、重要な根拠となる古い信念、直近の批評で承認されたハッシュと内容が異なること、機能マニフェストへの過剰な要求 |
両方のゲートは、ハッシュチェーン監査ログ(増分 Merkle ツリーを使用する entry_hash = sha256(prev_hash || canonical JSON))に書き込みます。そのため、過去の判断を変更すると、それ以降のすべてのハッシュが不整合になります。撤回の種類(defeater、unknown)は無条件にコミットでき、ブロッキング負債を発生させることはありません。
デフォルトでは拒否されます。メモリーとスキルへの書き込みには承認が必要で、学習したスキルは暗黙に適用されるのではなく隔離状態に置かれ、有効期限が切れた保留中の書き込みは承認済みではありません。
開発
npm test # 308 tests
npm run typecheck
npm run probes # adversarial probes; each one asserts a defect is absent
npm run probes は現在成功しますが、その事実は書かれた時点で古くなります。信頼するのではなく、実行してください。これらのプローブのうち2つ(sandbox_escape、debt_paraphrase)は、修正が取り込まれるまで、実際に存在していた未解決の欠陥に対して数週間にわたり失敗していました。再び失敗する可能性があるからこそ、ゲートとして組み込まれています。失敗できないゲートは、確認していない安全性を報告します。
構成
src/ask.ts retrieval → prompt → per-claim citation gate
src/mcp_server.ts MCP surface: ask, check, verify, corpus
src/commit_belief.ts the belief gate; check and write in one transaction
src/pins.ts content pins and drift verification
src/audit.ts hash-chained log + incremental Merkle
src/config.ts settings: flag → env → config file → default
src/db.ts opens the database, loads every schema
probes/ adversarial probes, run by npm run probes
demos/ the four scenarios above, run in CI so they cannot rot
docs/KNOWN_LIMITATIONS.md what does not work, and what it costs
docs/NEXT_LEVEL_PLAN.md historical plan; several items already shipped
MIT。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。