CM - CASSメモリシステム
AIコーディングエージェントのための手続き型メモリ。散在するセッションを永続的でクロスエージェントなメモリに変換します。人間の専門知識発達を模倣した3層の認知アーキテクチャを使用します。
存在理由
AIコーディングエージェントは貴重な知識を蓄積しますが、以下の問題があります:
- セッションに閉じ込められている - セッション終了時にコンテキストが失われる
- エージェント固有 - ClaudeはCursorが学習したことを知らない
- 非構造化 - 生のログは実用的なガイダンスではない
- 崩壊の危険 - 単純な要約では重要な詳細が失われる
今月、認証バグを異なるエージェント間で3回解決しました。毎回ゼロから始めていました。
CMはクロスエージェント学習でこれを解決します。Cursorで発見されたパターンは、Claude Codeで即座に利用可能になります。
3層認知アーキテクチャ
┌─────────────────────────────────────────────────────────────────────┐
│ エピソード記憶 (cass) │
│ すべてのエージェントからの生のセッションログ — 「グラウンドトゥルース」 │
│ Claude Code │ Codex │ Cursor │ Aider │ PI │ Gemini │ ChatGPT │ ...│
└───────────────────────────┬─────────────────────────────────────────┘
│ cass search
▼
┌─────────────────────────────────────────────────────────────────────┐
│ 作業記憶 (Diary) │
│ 構造化されたセッション要約: 成果、決定など │
└───────────────────────────┬─────────────────────────────────────────┘
│ reflect + curate (自動化)
▼
┌─────────────────────────────────────────────────────────────────────┐
│ 手続き記憶 (Playbook) │
│ 信頼度追跡と減衰を備えた蒸留ルール │
└─────────────────────────────────────────────────────────────────────┘
すべてのエージェントのセッションが共有メモリにフィードされます。Cursorで発見されたパターンは、次のセッションでClaude Codeを自動的に支援します。
必要なコマンド
cm context "<タスク>" --json
重要なタスクを開始する前にこれを実行してください。 以下を返します:
- relevantBullets - タスク関連性でスコア付けされたPlaybookのルール
- antiPatterns - 問題を引き起こしたこと
- historySnippets - 過去のセッション(自分のものと他のエージェントのもの)
- suggestedCassQueries - より深い調査のための検索
履歴のソースによるフィルタリング
historySnippets[].origin.kind は "local" または "remote" です。リモートヒットには origin.host が含まれます:
{
"historySnippets": [
{
"source_path": "~/.claude/sessions/session-001.jsonl",
"origin": { "kind": "local" }
},
{
"source_path": "/home/user/.codex/sessions/session.jsonl",
"origin": { "kind": "remote", "host": "workstation" }
}
]
}
信頼度減衰システム
ルールは不滅ではありません。再検証なしに信頼度は減衰します:
| メカニズム | 効果 |
|---|---|
| 90日半減期 | フィードバックなしで90日ごとに信頼度が半減 |
| 4倍有害乗数 | 1回のミスは1回の成功の4倍としてカウント |
| 成熟度進行 | candidate → established → proven |
スコア減衰の可視化
初期スコア: 10.0 (今日10の役立つマーク)
90日後 (半減期): 5.0
180日後: 2.5
270日後: 1.25
365日後: 0.78
実効スコア計算式
effectiveScore = decayedHelpful - (4 × decayedHarmful)
// 減衰係数 = 0.5 ^ (daysSinceFeedback / 90)
成熟度ステートマシン
┌──────────┐ ┌─────────────┐ ┌────────┐
│ candidate│──────▶│ established │───▶│ proven │
└──────────┘ └─────────────┘ └────────┘
│ │ │
│ │ (有害率 >25%) │
│ ▼ │
│ ┌─────────────┐ │
└────────────▶│ deprecated │◀─────────┘
└─────────────┘
遷移ルール:
| 遷移 | 条件 |
|---|---|
candidate → established | 3+ 役立つ、有害率 <25% |
established → proven | 10+ 役立つ、有害率 <10% |
any → deprecated | 有害率 >25% または明示的な非推奨化 |
アンチパターン学習
悪いルールは単に削除されるわけではありません。それらは警告になります:
"パフォーマンスのために認証トークンをキャッシュする"
↓ (3つの有害マーク)
"落とし穴: 有効期限検証なしで認証トークンをキャッシュしないでください"
ルールが複数回有害とマークされた場合(3+マークで有害率>50%)、自動的にアンチパターンに反転されます。
ACEパイプライン(ルールの作成方法)
Generator → Reflector → Validator → Curator
| ステージ | 役割 | LLM? |
|---|---|---|
| Generator | タスク前コンテキストハイドレーション (cm context) | いいえ |
| Reflector | セッションからのパターン抽出 (cm reflect) | はい |
| Validator | cass履歴に対するエビデンスゲート | はい |
| Curator | 決定論的デルタマージ | いいえ |
重要: CuratorはLLMを使用しません。反復的なドリフトによるコンテキスト崩壊を防ぐためです。LLMはパターンを提案します。決定論的ロジックがそれらを管理します。
科学的検証
ルールがPlaybookに追加される前に、cass履歴に対して検証されます:
提案ルール: "認証デバッグの前に常にトークンの有効期限を確認する"
↓
エビデンスゲート: これが適用されたセッションをcassで検索
↓
結果: 5セッション見つかり、4件成功 → 承認
履歴的エビデンスのないルールは、証明されるまでcandidateとしてフラグ付けされます。
コマンドリファレンス
コンテキスト取得(主要ワークフロー)
# メインコマンド - 重要なタスクの前に実行
cm context "ユーザー認証を実装" --json
# トークン予算に応じて結果を制限
cm context "バグ修正" --json --limit 5 --no-history
# ワークスペースフィルター付き
cm context "リファクタリング" --json --workspace /path/to/project
# 自己文書化説明
cm quickstart --json
# システムヘルス
cm doctor --json
cm doctor --fix # 問題を自動修正
# 類似ルールの検索
cm similar "エラーハンドリングのベストプラクティス"
Playbook管理
cm playbook list # すべてのルール
cm playbook get b-8f3a2c # ルール詳細
cm playbook add "最初にテストを実行する" # ルール追加
cm playbook add --file rules.json # ファイルから一括追加
cm playbook add --file rules.json --session /path/session.jsonl # ソース追跡
cm playbook remove b-xyz --reason "古い" # 削除
cm playbook export > backup.yaml # エクスポート
cm playbook import shared.yaml # インポート
cm playbook bootstrap react # 既存にスターター適用
cm top 10 # 最も効果的なルール
cm stale --days 60 # 最近フィードバックのないルール
cm why b-8f3a2c # ルールの由来
cm stats --json # Playbookヘルスメトリクス
学習とフィードバック
# 手動フィードバック
cm mark b-8f3a2c --helpful
cm mark b-xyz789 --harmful --reason "リグレッションを引き起こした"
cm undo b-xyz789 # フィードバックを取り消し
# セッション結果(位置指定: ステータス, ルール)
cm outcome success b-8f3a2c,b-def456
cm outcome failure b-x7k9p1 --summary "認証アプローチが失敗"
cm outcome-apply # Playbookに適用
# 振り返り(通常は自動化)
cm reflect --days 7 --json
cm reflect --session /path/to/session.jsonl # 単一セッション
cm reflect --workspace /path/to/project # プロジェクト固有
# 検証
cm validate "null参照の前に必ずチェックする"
# セッションをルールに対して監査
cm audit --days 30
# 完全に非推奨化
cm forget b-xyz789 --reason "より良いパターンに取って代わられた"
オンボーディング(エージェントネイティブ)
既存のエージェントを使用したゼロコストのPlaybook構築:
cm onboard status # 進捗確認
cm onboard gaps # カテゴリギャップ
cm onboard sample --fill-gaps # 優先順位付けられたセッション
cm onboard sample --agent claude --days 14 # エージェント/時間でフィルタリング
cm onboard sample --workspace /path/project # ワークスペースでフィルタリング
cm onboard sample --include-processed # セッションを再分析
cm onboard read /path/session.jsonl --template # リッチコンテキスト
cm onboard mark-done /path/session.jsonl # 処理済みとしてマーク
cm onboard reset # 最初からやり直し
トラウマガード(安全システム)
cm trauma list # アクティブなパターン
cm trauma add "DROP TABLE" --description "大量削除" --severity critical
cm trauma heal t-abc --reason "意図的なマイグレーション"
cm trauma remove t-abc
cm trauma scan --days 30 # トラウマをスキャン
cm trauma import shared-traumas.yaml
cm guard --install # Claude Codeフック
cm guard --git # Git pre-commitフック
cm guard --install --git # 両方
cm guard --status # インストール確認
システムコマンド
cm init # 初期化
cm init --starter typescript # テンプレート付き
cm init --force # 再初期化(バックアップ作成)
cm starters # テンプレート一覧
cm serve --port 3001 # MCPサーバー
cm usage # LLMコスト統計
cm privacy status # プライバシー設定
cm privacy enable # クロスエージェントエンリッチメント有効化
cm privacy disable # エンリッチメント無効化
cm project --format agents.md # AGENTS.md用にエクスポート
スタータープレイブック
空のPlaybookから始めるのは大変です。スターターが厳選されたベストプラクティスを提供します:
cm starters # 利用可能なものを一覧表示
cm init --starter typescript # スターターで初期化
cm playbook bootstrap react # 既存のPlaybookに適用
内蔵スターター
| スターター | 焦点 | ルール数 |
|---|---|---|
| general | 普遍的なベストプラクティス | 5 |
| typescript | TypeScript/Node.jsパターン | 4 |
| react | React/Next.js開発 | 4 |
| python | Python/FastAPI/Django | 4 |
| node | Node.js/Expressサービス | 4 |
| rust | Rustサービスパターン | 4 |
カスタムスターター
~/.cass-memory/starters/ にYAMLファイルを作成:
# ~/.cass-memory/starters/django.yaml
name: django
description: Djangoウェブフレームワークのベストプラクティス
bullets:
- content: "データベース操作には必ずDjangoのORMを使用する"
category: database
maturity: established
tags: [django, orm]
インラインフィードバック(作業中)
コードコメントにフィードバックを残します。振り返り中に解析されます:
// [cass: helpful b-8f3a2c] - このルールのおかげで無駄な調査を回避できた
// [cass: harmful b-x7k9p1] - このアドバイスは私たちのユースケースには間違っていた
エージェントプロトコル
1. 開始: cm context "<タスク>" --json
2. 作業: ルールに従うときにルールIDを参照(例: "b-8f3a2cに従っています...")
3. フィードバック: ルールが役立った/害を及ぼしたときにインラインコメントを残す
4. 終了: ただ終了する。学習は自動的に行われます。
以下を行う必要はありません:
cm reflectを実行する(自動化が処理します)cm markを手動で実行する(インラインコメントを使用してください)- 手動でルールをPlaybookに追加する
ギャップ分析カテゴリ
| カテゴリ | キーワード |
|---|---|
debugging | error, fix, bug, trace, stack |
testing | test, mock, assert, expect, jest |
architecture | design, pattern, module, abstraction |
workflow | task, CI/CD, deployment |
documentation | comment, README, API doc |
integration | API, HTTP, JSON, endpoint |
collaboration | review, PR, team |
git | branch, merge, commit |
security | auth, token, encrypt, permission |
performance | optimize, cache, profile |
カテゴリスタータスしきい値:
| ステータス | ルール数 | 優先度 |
|---|---|---|
critical | 0ルール | 高 |
underrepresented | 1-2ルール | 中 |
adequate | 3-10ルール | 低 |
well-covered | 11+ルール | なし |
トラウマガード: 安全システム
「熱いストーブ」の原則—過去のインシデントから学び、再発を防止します。
仕組み
セッション履歴 トラウマレジストリ ランタイムガード
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ rm -rf /* (しまった)│ ──────▶ │ パターン: rm -rf │ ──────▶ │ ブロック: この │
│ 「すみません、 │ scan │ 重大度: FATAL │ hook │ コマンドは │
│ 間違えました...」│ │ セッション: abc123│ │ トラウマパターン │
└─────────────────┘ └─────────────────┘ └───と一致します───┘
内蔵の破壊パターン(20以上)
| カテゴリ | 例 |
|---|---|
| ファイルシステム | rm -rf /, rm -rf ~, 再帰的削除 |
| データベース | DROP DATABASE, TRUNCATE, WHERE句なしのDELETE FROM |
| Git | main/masterへのgit push --force, git reset --hard |
| インフラ | terraform destroy -auto-approve, kubectl delete namespace |
| クラウド | aws s3 rm --recursive, 破壊的なCloudFormation |
パターンストレージ
| 範囲 | 場所 | 目的 |
|---|---|---|
| グローバル | ~/.cass-memory/traumas.jsonl | 個人パターン |
| プロジェクト | .cass/traumas.jsonl | チーム用にリポジトリにコミット |
パターンライフサイクル
- アクティブ: 一致するコマンドをブロック
- ヒーリング: 一時的にバイパス(理由とタイムスタンプ付き)
- 削除済み: 削除された(再追加可能)
MCPサーバー
エージェント統合用にMCPサーバーとして実行:
# ローカルのみ(推奨)
cm serve --port 3001
# 認証トークン付き(非ループバック用)
MCP_HTTP_TOKEN="<ランダム>" cm serve --host 0.0.0.0 --port 3001
公開ツール
| ツール | 説明 |
|---|---|
get_context | タスクコンテキストを取得 |
add_rule | ルールを追加 |
submit_feedback | フィードバックを送信 |
search_cass | cass履歴を検索 |
list_active_traumas | アクティブなトラウマを一覧表示 |
.cassrc設定
cm init 時に ~/.cass-memory/.cassrc に生成されます。例:
# ~/.cass-memory/.cassrc
cass_path: ~/.cass-memory
api_keys:
anthropic: sk-ant-...
openai: sk-proj-...
enrichment: true
mcp:
port: 3001
プライバシー: エンリッチメントが有効な場合、cm context は他のエージェントのセッションと照合します。無効にすると、ローカルセッションのみが使用されます。
より深く掘り下げる
シェル補完
cm completion zsh > ~/.zsh/completions/_cm
cm completion bash > /etc/bash_completion.d/cm
システムログ
# デバッグ出力を表示
cm context "タスク" --json 2>&1 | head -100
# キャッシュ
cm doctor --fix # キャッシュの問題を修正