Skip to content

Latest commit

 

History

History
85 lines (63 loc) · 4.11 KB

File metadata and controls

85 lines (63 loc) · 4.11 KB

CodeCart プロトコル仕様 (v2.0)

English | 简体中文 | 繁體中文 | 日本語

目的

本書は CodeCart の「ラウンドトリップ・プロトコル」を定義し、あらゆる AI 製品・エージェントフレームワーク・ブラウザー拡張・スクリプトがユーザーのメモリーウォレットを読み書きし、互換性を保てるようにするものです。プロトコルは意図的に極小です:普通のチャット返信の中で、どの LLM でも確実に出力できなければなりません。

3つの構成要素

  1. キャリーブロック——ユーザーが AI に貼り付ける内容:有効なカード+モデルに更新の出力を求める指示。
  2. codecart ブロック——モデルが返信の最後に付けるメモリー更新(フェンス付きコードブロック)。
  3. ウォレットファイル——全カードを保持するエクスポート JSON。ユーザーが持ち運べる正準ストア。

1. キャリーブロック

[これは私の個人メモリーです(CodeCart ウォレット、<日付>)。すべての回答をこれに基づいてパーソナライズしてください。]
- (preference) 短く、結論から答える
- (fact) ネットショップを運営している
- (boundary) 月1万円の予算を超える提案はしない
---
<codecart ブロックの追加をモデルに求める指示——正準の文言はアプリ内を参照>

カードタイプ:preference(答え方の好み)、fact(安定した情報)、status(現在の関心事、変化する)、boundary(絶対ルール)。

2. codecart ブロックの文法

モデルは返信の最後にこう付けます:

```codecart
+ <type> | <内容>
~ <古いメモリー行からそのまま引用した断片> => <修正後の内容>
- <退役させるメモリー行の断片>
```
  • + はカード追加。<type> は4タイプのいずれか。省略時(+ <内容>)は fact として扱う——ただし誤検出を避けるためフェンス内のみ。
  • ~ は置き換え:テキストに <断片> を含む有効カードを(大文字小文字を無視して)探し、アーカイブして修正カードを追加。これがウォレットを肥大化させず最新に保つ仕組みです。
  • - は置き換えなしの退役(フェンス内のみ)。
  • 推奨モデルルール(キャリー指示に含まれます):最大5行;持続的な個人情報のみ;ユーザーの言語で書く;該当なしならブロック自体を省略。

パーサーはフェンス外の行も受け付けてよいが、明示的な <type> | 接頭辞がある場合に限ります。

3. ウォレットファイル (JSON)

{
  "version": 2,
  "cards": [
    {
      "id": "m3k9x1ab2",
      "type": "preference",
      "text": "短く、結論から答える",
      "status": "active",
      "created": 1720300000000,
      "updated": 1720300000000
    }
  ]
}

statusactivearchived。コンシューマーは active カードのみを持ち込み、インポート時は text の重複(大文字小文字・前後空白を無視)をスキップしてマージしなければなりません。

参考:API パイプラインでウォレットを使う

import json

with open("codecart-wallet.json", encoding="utf-8") as f:
    wallet = json.load(f)

carry = "\n".join(
    f"- ({c['type']}) {c['text']}"
    for c in wallet["cards"] if c["status"] == "active"
)
# carry を system prompt の先頭に付け、モデル出力中の
# ```codecart``` ブロックを上記文法でパースしてマージする。

互換性の約束

  • ブロックタグは常にリテラル文字列 codecart
  • 未知のカードタイプは fact として扱い、未知の JSON フィールドはラウンドトリップで保持すること。
  • v1.3 レガシーエクスポート(nodes + +CLAIM/+ANCHOR セマンティクス)の対応:anchor → boundaryclaim → factisSuperseded → archived