エミリアラボ電脳ジャンク
CPOS · context-pointer-os / cpos-engine-zero

現場監督と記録係

AIの記憶を整理棚で管理。CPOSを通した作業は帳面に記録し、危ない作業はそのまま進めずに人間に回す部品。

構成
2 点セット(記憶の核 + 実行の現場)
型番
Context Pointer OS v0.1 / Engine-Zero v0.1.2
電源
Python 3
状態
研究デモ / 防御的ランタイム
ライセンス
MIT
入手
core · engine

これは何?

工事現場の監督さんと、作業日誌の係がいっしょになったようなもの。
道具は整理棚に「何番の棚」とだけ書いておき、監督を通した作業は日誌に書く。危ない作業は「監督の確認待ち」の箱に入れる。

AIに長い仕事を任せると、2つの困りごとが出てきます。ひとつは記憶があふれること。何でも頭(AIが一度に読める文章の量)に詰め込むと、すぐいっぱいになります。もうひとつは勝手に危ないことをすること。失敗したコマンドを何度もやり直したり、確認なしで公開したり。

CPOS は、2 つの部品でこれに取り組みます。

1

AI「このファイルを直して、テストを走らせたいです」

2

CPOS が日誌に記録。中身そのものではなく「大きさ・指紋(ハッシュ)・状態」だけを残す。

3

危ない作業なら「確認待ち」の箱へ。人間が見てOKを出すまで進まない。

4

OKが出たら、本物とは切り離した箱の中で試す。失敗したら、やり直し計画を作って人間に返す。

この部品がすること

  • 記憶を札(ポインタ)で管理して、頭をすっきりさせる
  • CPOSを通した作業を追記式の帳面に記録する(書き換えに気づける)
  • 危ない作業を人間の確認待ちに回す
  • 試すときは、ネットにつながらない隔離された箱の中で(既定の設定)

この部品がしないこと

  • 確認なしで公開(push)・削除・本番の変更をすること
  • 秘密の値や、コマンドの出力そのものを帳面に残すこと
  • 外のAIから頼まれたコマンドを、自分で勝手に実行すること
  • CPOSを通さずにAIが直接やった操作まで見張ったり止めたりすること
  • MCP の道具を実際に動かすこと(既定では予行演習だけ)

012 つのリポジトリ

リポジトリ役割状態
context-pointer-osLLM のコンテキストを RAM、外部ストレージを Disk とみなすメモリ管理層。Context Pointer・ページング・分岐・ACL・Watchdogv0.1 研究デモ
cpos-engine-zeroContext Pointer OS を含む防御的エージェントランタイム。Task Tape・審査ゲート・改ざん検知つき監査・MCP コネクタ審査・サンドボックスv0.1.2(GitHub Release)

02Context Pointer OS

会話履歴をコンテキストに詰め込む代わりに、Context Pointer(#ctx)で情報を mount / swap / 保護する、長文脈エージェント向けの仮想メモリ層です。

機能内容
Context Pointers記憶への軽い参照。プロンプトをきれいに保ちつつ、Registry から必要時に呼び戻す
Cognitive RAM & Pagingアクティブなポインタだけがプロンプトを占有。上限に達すると未使用のものを要約・swap
Speculative Branching仮説を隔離した分岐で試し、明示的に COMMIT / ROLLBACK するまで本体の記憶に影響しない
Watchdog安定度の指標がしきい値を超えると、割り込みでコンテキストをリセット
ACLポインタ単位のロールベースのアクセス制御
git clone https://github.com/kagioneko/context-pointer-os
cd context-pointer-os
export PYTHONPATH=$PYTHONPATH:$(pwd)/src
python3 src/cpos/demo_core.py
--- [BOOTLOADER] Starting Runtime Sequence ---
[BOOT] Step 1: >MEM:LOAD #ctx7 !9  (System State)
[BOOT] Step 2: >MEM:LOAD #ctx20 !9 (Agent Identity)
...
--- [WATCHDOG IRQ] SYSTEM ANOMALY DETECTED ---
System Status after Watchdog IRQ: Stable (corruption=0.0)

命令は 2 種類。4 文字の機械語 AIT([Domain][ID][Action][Priority]、例 m1l5 = Memory ctx1 Load 優先度5)と、人間向けのアセンブリ EAP(例 >MEM:LOAD #ctx1 !5)。

03Engine-Zero の構成

User / Agent Input
        |
  Context Router   classify: relationship / task / hybrid / dangerous
        |
  +-------------+-------------+---------------+----------------+
  | Context     | Task Tape   | State/Runtime | Security Gates |
  | Pointer OS  | append-only | short-lived   | auth / policy  |
  +-------------+-------------+---------------+----------------+
        |
  Review-Gated Execution Pipeline
        |
  Persistence Boundary
    Store:       hashes, sizes, statuses, pointers, audit metadata
    Never store: secrets, raw stdout/stderr, raw diff, request bodies

関係の記憶・タスクの実行履歴・短命なランタイム状態を分けて持ち、層をまたぐ情報は管理されたポインタと審査済みの Task Tape イベントだけで渡します。失敗したコマンドや一時的な状態で長期記憶が汚れないようにするためです。

04起動とプリフライト

git clone https://github.com/kagioneko/cpos-engine-zero
cd cpos-engine-zero
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt

# 起動前の点検(プロファイル・Docker・HMAC 鍵・クライアント証明書など)
.venv/bin/python -m cpos.preflight --profile hardened

# 点検と設定の適用は別。サーバーにもプロファイルを明示する
CPOS_SECURITY_PROFILE=hardened .venv/bin/python server.py   # PORT(既定 8080)。certs/ に証明書があれば HTTPS

待ち受けアドレスに注意

  • server.py は 0.0.0.0 で待ち受けます(全インターフェイス)。手元で試すときは、ファイアウォールやコンテナでポートを外から届かないようにしてください。
  • certs/cert.pem と certs/key.pem がないと HTTP にフォールバックします(ログに警告が出ます)。

05セキュリティプロファイル

CPOS_SECURITY_PROFILE で姿勢を切り替えます。プロファイルが設定するのは既定値だけで、個別に明示した変数が優先されます。現在の姿勢と検証結果は GET /security-profile で確認できます。

profile意図
dev自由度が高い。ローカルサンドボックス可、API 認証・レート制限・クライアント証明書は既定オフ
audit観察優先。permissive サンドボックス、クライアント証明書は audit モード
hardened本番向けの fail-closed。HTTPS・API 認証・HMAC 認証・クライアント証明書・strict サンドボックス・レート制限・承認ゲートが既定オン

このほか、HMAC・Bearer トークン・mTLS フィンガープリント・IP 許可リスト・レート制限のミドルウェアがあります。

06サンドボックス

検証は既定で強化した Docker サンドボックスの中で動きます(CPOS_SANDBOX_MODE)。

mode挙動
strictDocker 必須。使えなければ fail closed。本番推奨
permissiveDocker 優先。使えなければローカル実行に落ち、その旨を結果のメタデータに記録
local-dev開発専用の明示的なローカル実行(CPOS_ALLOW_LOCAL_DEV_RUN=true が必要)

Docker のフラグ:--read-only --cap-drop ALL --security-opt no-new-privileges --network none --memory / --cpus --pids-limit、/tmp は noexec の tmpfs、プロジェクトは /app に読み取り専用でマウント。上限は CPOS_SANDBOX_MEMORY / CPOS_SANDBOX_CPUS / CPOS_SANDBOX_PIDS_LIMIT で調整します。

07審査つき実行ループ

危ない段階はすべて審査を通し、失敗は「自動で再実行」ではなく、メタデータだけのやり直し計画になります。

GitHub PR dry-run
  -> GitHub diff review
  -> Sandbox patch plan
  -> Sandbox execution review
  -> Isolated sandbox run
  -> Completed result metadata
  -> Retry review -> Replan template -> Diff intake checklist
  -> Auto Fix Candidate -> Diff Review Draft
  -> Human-supplied GitHub diff review
  -> Back to sandbox execution
  • この計画・審査の段階では、branch・commit・push・PR は作られません
  • diff の本文は審査・実行の入力として受け取りますが、Task Tape には保存しません
  • stdout / stderr の本文は保存せず、ハッシュ・サイズ・終了コード・状態フラグだけを残します
  • 検証コマンドは許可リスト方式で、シェルのメタ文字は拒否されます

人間の確認待ちは GET /human-escalations にまとまります。承認・却下は、それぞれの審査の持ち主のエンドポイント(例 /sandbox/executions/<task_id>/reject)に戻して行い、承認の窓口を二重に作りません。

08外部エージェント連携

別のエージェント(Codex 系など)の横に、防御用のランタイムとして置けます。外部エージェントは「やりたいこと」や「やった結果」をメタデータとして送り、CPOS はそれを記録して、危ないものを確認待ちに回します。外部エージェントのコマンドを CPOS が実行することはありません。

POST /agent-adapter/intake          # command_request / execution_result などを送る
GET  /agent-adapter/actions         # 審査待ちの契約
GET  /agent-adapter/execution-results
GET  /human-escalations

承認は「この契約を確認した」という意味で、「今すぐ実行してよい」ではありません。入門は docs/EXTERNAL_AGENT_5_MIN_GUIDE.md、スキーマは docs/AGENT_ADAPTER_SCHEMA.md、秘密を含まない送信例は examples/payloads/。

MCP 対応は意図的に控えめです。コネクタ定義は静的に検査・審査されてから登録され(リモートは https:// を必須とし、https://user:token@host のように URL に資格情報を埋め込んだ定義は拒否。認証情報は環境変数の秘密ファイルで渡すのが前提)、実行要求は dry-run(メタデータのみ)。実際の MCP ツール実行は既定で無効です。

09取扱上の注意

ご使用の前に必ずお読みください

  • Context Pointer OS は研究デモです。テストは 54 件中 53 件が通り、1 件(別マシンのパスを決め打ちしたテスト)は失敗します。
  • Engine-Zero のダッシュボードやデモ用エンドポイントは、メタデータ(件数・ハッシュ・状態)だけを見せる作りです。デモの画面に「安全」と出ても、それは審査の状態を示しているだけです。
  • 本番に置く前に、リポジトリの SECURITY.md と OSS_RELEASE_CHECKLIST.md を確認してください。
  • hardened の検証は多くが助言(advisory)です。fail closed になるのは、個々のゲート自体がそう作られているものだけです。