Brevet について
Brevetは、既存のAIエージェントの学習を管理するローカル優先のPythonランタイムです。変更の審査が必要なチーム向けに、修正を評価・承認済みの署名付きリリースへ変換し、後から撤回できます。
主な機能
- 01理由とともに修正内容を記録
- 02繰り返す修正から候補機能を提案
- 03人による承認と評価のゲート
- 04機能マニフェスト付き署名リリース
- 05証跡の追跡と撤回・ロールバック
活用シーン
- 01公開前のエージェント動作変更の審査
- 02学習機能の承認者の追跡
- 03誤りと判明した機能の撤回
MCP 対応
`uvx brevet mcp`でMCPサーバーを提供し、MCPクライアントに記録、審査、リリース、撤回の操作を公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx brevetBREVET_HOMEThe Brevet workspace to serve: a folder holding agent.yaml and .brevet/. It is created on first use; run 'brevet init' there to write a starter manifest.BREVET_AUTO_CAPTURESet to true to have sessions record corrections without being asked. Leave unset to record only on request.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
14掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| tags | string | いいえ | |
| task | string | はい | |
| draft | string | はい | |
| final | string | いいえ | |
| family | string | はい | |
| rationale | string | いいえ | |
| participant | string | いいえ |
詳細
ウェブサイト · ドキュメント · 論文 · PyPI · CHAP
AI エージェントは、作業中に自らの振る舞いを変えるようになりました。記憶を保存し、新しいスキルを自ら作成し、自分自身への指示を書き換えます。こうした変更の多くは役に立ちます。しかし、そのどれも、組織が人による業務の進め方の変更に求める手順を踏んでいません。変更内容を書き留める人も、承認する人もおらず、変更が誤りだと判明しても、以前のバージョンに戻す手段がありません。
Brevet は、そうした手順を加えます。すでにお使いのエージェントをラップし、その学習をガバナンスされた進化ループとして実行する、ローカルファーストの Python ランタイムです。専門家がエージェントの下書きを修正すると、Brevet は修正内容とその理由をオーバーライドとして記録します。オフラインのドリームサイクルでは、繰り返し発生するオーバーライドが候補機能になります。これは提案されたルールやその他の学習された振る舞いであり、実行権限はありません。ドーンゲートでは、指名された人間またはミッショングループ(説明責任を担う審査委員会)が、どの候補を昇格させるかを決定します。次に、オーバーライドを評価テストとして再実行し、いずれか半数の結果を悪化させるリリースを保守的ゲートが阻止します。昇格した機能は署名付きのリリースとして提供され、capabilities.lock に記載されます。誤りだと判明した機能はリコールでき、その機能を含むすべてのリリースにフラグが付けられます。すべての手順は、ハッシュで連結されたエビデンスチェーンに記録されます。
エージェントは差分を提案し、エビデンスがそれを検証し、人間が昇格させます。 ランタイムが実行するのは、署名済みバージョンだけです。
| 問い | Brevetによる回答 |
|---|---|
| エージェントは何を学習しましたか? | 各リリースには、部品表にあたる capabilities.lock が含まれます。学習した各機能、その出所、正確な内容のハッシュに加え、そのリリースで実行されるハーネス(プロンプト、スキル、ツール、設定、ライブラリ)が記録されています。 |
| 誰が承認しましたか? | 各機能には、夜明けのゲートで昇格させた担当者またはミッショングループと、その判断を正当化したオーバーライドが記録されます。ワークスペースで署名が必須になると、登録済みのキーで署名されます。 |
| どうすれば取り消せますか? | その機能をリコールするか、以前のリリースにロールバックします。Brevetは、その機能を含んでリリースされたすべてのリリースにフラグを立て、実行中のエージェントへの提供を停止し、各エージェントによる確認を記録します。 |
具体例
製薬工場の品質審査担当者は、設備の問題ごとにエージェントが付ける深刻度を確認しています。エージェントは、洗浄中のポンプの振動を「軽微」と評価します。ところが、その振動はシールの摩耗の初期兆候であるため、担当者は毎回「重大」にオーバーライドします。4回オーバーライドすると、ドリームサイクルが候補ルールを提案します。夜明けにミッショングループがそれを昇格させ、リリース 0.2.0 にはそのルールが capabilities.lock に含まれて公開されます。数か月後、エンジニアが振動の原因はセンサーの故障だと突き止めたため、ミッショングループはルールをリコールし、Brevetはリリース 0.2.0 にフラグを立てます。
同じ話をコードで見る
ここでのエージェントは通常のPython関数です。実際のフレームワークでは、代わりにエージェントオブジェクトを渡します。
import brevet
agent = brevet.wrap(triage_agent) # wrap the agent you already have
# Work and override: the agent drafts; the reviewer corrects the draft and says why.
result = agent.run("Pump P-301: vibration high during cleaning",
task_family="equipment_triage")
agent.record_final(result.task_id, "severity: major",
participant="human:[email protected]",
rationale="Vibration during cleaning is an early sign of seal wear.",
tags=["vibration-during-cleaning"])
# Dream: once the same override keeps recurring, it becomes a candidate.
agent.dream()
candidates = agent.dawn() # the dawn queue
rule = next(c for c in candidates if c.kind == "prompt_rule")
# Dawn: a named mission group promotes the rule and the eval cases compiled
# with it. A dream:* approver is rejected.
for cap in candidates:
agent.dawn(decide=(cap.capability_id, "promote"),
approver="mission_group:quality_team")
# Evals: replay the overrides as tests, on the current release and on the next.
before = agent.evaluate(baseline=True)
# ...the agent now receives the promoted rule with each task...
after = agent.evaluate()
# Release: bound to those two runs, and refused unless the conservative gate passes.
agent.release(to_version="0.2.0", channel="trial",
approver="mission_group:quality_team", evals=(before, after))
# Recall: the rule proves wrong. Then verify the whole evidence chain.
agent.recall(rule.capability_id, reason="The vibration came from a faulty sensor.",
issued_by="mission_group:quality_team")
agent.verify()
スクリプトの全体はexamples/pump_vibration.pyにあり、ABOUT.mdではその出力を確認できます。
クイックスタート
pip install brevet
brevet demo # the whole loop as one command
brevet playground # step through the loop in your browser
すべてご自身のマシン上で動作し、モデルやネットワーク接続は必要ありません。上記の例を実行するには、Brevetをインストールしてリポジトリをクローンし、python examples/pump_vibration.pyを実行します。クリックしながら進められるガイド付きツアーを見るには、クローンしたリポジトリからdocs/demo.htmlをブラウザーで開きます。
お使いのエージェントにそのまま対応
brevet.wrap()は、LangGraph、Claude Agent SDK、DeepAgents、AutoGen、LlamaIndex、Pydantic AI、Google Agent Development Kit、CrewAI、OpenAI Agents SDKで構築されたエージェントを認識し、任意のPython関数も受け付けます。エージェントの実行は引き続きお使いのフレームワークが担います。Brevetは各タスクで、ガバナンス対象のルールをエージェントに提供し、フレームワークがツールを公開している場合は、各ツール呼び出しがリリースで宣言されたティアに準拠しているか確認します。uvx brevet mcpを使うと、任意のMCPクライアントで取り込み、レビュー、リリース、リコールができるようになります(セットアップ方法はABOUT.mdを参照してください)。また、examples/claude-coworkでは、Claude自身が学習する内容を管理するためにこれを利用しています。
本番運用を想定した設計
各判断で、許可された署名者のファイルまたはGitHubと照合した承認者の署名を必須にできます。リリースは数値の根拠となる評価実行に紐付けられ、どのリリースもロールバックできます。リコールされたルールは実行中のエージェントに提供されず、その確認は記録に残ります。ツールブローカーは、エージェントのツール呼び出しがマニフェストで付与されたティアに準拠しているか確認します。また、エビデンスチェーンはワークスペース外にアンカーされるため、チェーンが書き換えられた場合も検出できます。それぞれの機能を有効にする方法はABOUT.mdを参照してください。署名付き承認および本番環境での実行をご覧ください。
詳細を見る
- ABOUT.md:7つの段階、権限の階層、対応フレームワーク、MCP サーバーとコマンド、Brevet と CHAP および Metis の関係、リポジトリの構成について説明しています。
- GLOSSARY.md:各用語を、まず平易な意味から説明しています。
- SPEC.md:すべての実装が従う必要のあるルールを記載しています。
- BENCHMARK.md:ガバナンスされた適応のベンチマークについて説明しています。
brevet benchmarkは、ワークスペースを4つの評価軸で採点します。
引用
研究で Brevet を使用する場合は、CITATION.cff の記述に従って引用してください。関連論文は Brevet: Change Control for What Self-Evolving AI Agents Learn(Shahid、Suttie、Black、2026年)です。
ライセンス
Apache-2.0 です。LICENSE をご覧ください。Brevet は Brightbeam のプロジェクトです。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。