前例

ZENREI

「その提案、前例があります」

Zenreiは、AI駆動開発のための意思決定メモリ。 採用・却下・保留の決定をgitで記録し、MCP経由ですべてのAIエージェントに配ります。 エージェントが却下済みの設計を蒸し返したら——止まります。

エージェント: スキーマ生成チャットの承認フロー、廃止して 直接適用にしませんか? zenrei › check_proposal ⚠ 抵触する前例があります [rejected/却下済み] スキーマ生成チャットの承認フロー廃止 (2026-07-08, repo: weave-cms) 理由: 「AIに書かせる前に影響を見せる/追跡・巻き戻せる」 制御層が堀そのものだから。承認を外すことは差別化の放棄になる。

↑ 実際の運用リポジトリに記録されている決定と、実際の応答。

課題

AIエージェントは、過去の議論を覚えていない

優秀なエージェントほど、良かれと思って提案してきます——3週間前にあなたが却下したのと同じ設計を。 記録がなければ、議論は何度でも最初からやり直しです。

仕組み

mdファイルが正。Zenreiは索引して配るだけ

決定は各リポジトリの decisions/*.md(公開仕様のfrontmatter付きMarkdown)。 Zenreiはそれを索引し、MCPの5ツールで全エージェントに配信します。 書き込みは常にgitのコミット——Zenreiがデータを所有することはありません。

リポジトリA decisions/*.md リポジトリB decisions/*.md リポジトリC decisions/*.md Zenrei 索引・照合 データを持たない AIエージェント Claude Code / Cursor / CI 人間(あなた) 決定するのは人間だけ 索引(読むだけ) MCP・5ツールで照合 「却下済み。理由: …」 record_decision=pending起票のコミット 承認=status変更のコミット
読み・書きの全経路。エージェントが作れるのは「承認待ち(pending)」の候補まで。 それを決定に変えられるのは、人間の承認コミットだけ。

軽さ

決定が増えても、プロンプトは太らない

決定をCLAUDE.mdに書き溜める方式は、全文が毎セッション注入されるため、記録するほどトークン課金が増えエージェントが遅くなります。 Zenreiは逆の構造です——プロンプトに常駐するのは運用3行だけ。決定本体は、必要な時にツール応答として要約されて返ります(get_contextは12件×1行、check_proposalは上位5件・理由300字まで)。

決定22件(本文1.5万字)決定1,000件(本文74万字)
全文注入方式約1万トークン/セッション数十万トークン/セッション
Zenrei(応答)約1,900字約1,800字——ほぼ不変

実測値。応答サイズは設計上の上限を持つため、決定数に比例しません。 照合そのものはLLMを使わない決定論的処理(1,000件で44ms)なので、Zenrei側のAI原価もゼロです。

場面

こういうときに効く

こんな覚えがあれば、Zenreiの出番です。

1. プロジェクトを横断する — あっちの決定を、こっちのエージェントが知っている

Zenreiの索引は全リポジトリを跨いで1つ。別プロジェクトで働くエージェントも、組織全体の前例に当たります。

# 別プロジェクト(study リポジトリ)での作業中 エージェント: ブログ基盤、WordPressで立てましょうか? zenrei › check_proposal 関連する前例があります [accepted/採用済み] コーポレートサイトは Astro SSG + Tessera CMS ブログ + Cloudflare で構築する(2026-08-11, repo: corporate)

技術選定・構成・ポリシーの前例が組織の共有財産になる。合わせるにせよ逸脱するにせよ、「前例を知った上で」の判断になります。

2. セッションが変わっても、蒸し返されない

3週間前に却下した設計を、新しいセッションのエージェントがまた提案してくる——冒頭のデモの場面です。記録がある限り、何度でも同じ場所で止まります。

3. 3ヶ月後の自分が「なぜこうした?」と聞く

search_decisions で理由・日付・経緯リンクごと返ってきます。git logを掘るより速く、しかも「結論と理由」だけに要約済みです。

4. 保留が、条件付きで生き返る

再検討条件つきで保留した案は、条件が成立したとき堂々と再提案できます。却下や保留が議論の打ち切りではなく条件付きの前例になる——実際の運用でも「実需要の確認」を条件に保留した機能が、需要発生とともに正式に復活しています。

5. ツールを乗り換えても、記憶が引っ越す

Claude Code・Cursor・CI、どれも同じMCPを叩くだけ。エージェントを替えても決定は残り、同じように配信されます。

状態

決定には、必ず判が押してある

すべての決定はステータスを持ち、check_proposal の応答はこの判に従います。

道具

MCPツールは5つ。増やさない

check_proposal提案を過去の決定と照合。「2026-07-08に却下済み。理由: …」を返す看板機能
search_decisionsキーワード・ステータス・スコープ・期間で決定を検索
record_decision決定候補の起票。作れるのは pending まで
list_pending承認待ち・保留中の一覧
get_contextセッション開始時に注入する「決定済み事項・してはいけないこと」のパック

5つで照合・検索・起票・一覧・文脈注入のすべてを覆う。ツールを増やす提案は、まず疑う——これ自体もZenreiに決定として記録されている。

導入

まず手元で試す。育ったらチームへ

ローカル版とホスト版は同じ照合エンジン・同じ5ツールで動きます。 応答は一字一句同じ。違うのは「決定をどこから読み、どこへ書くか」だけです。

ローカル版

1人・オフライン・永久無料(MIT)

  • 手元の decisions/*.md を直接スキャン。保存した瞬間に反映
  • APIキー不要・オフライン動作・LLM原価ゼロ
  • 横断範囲は --root で並べたリポジトリ
claude mcp add zenrei --scope user -- \
  npx -y zenrei --root /path/to/repo

ホスト版 Team

チームで回す

  • 複数人の承認(scope別の承認者・PR経由承認)
  • 通知: 承認待ちの滞留・週次ダイジェスト
  • PRのマージブロック(ステータスチェック)
  • 横断監査ビュー: 誰がいつ何を承認・却下したか
  • セマンティック照合・決定候補の自動抽出

ローカル版・決定フォーマット・データの取り出しには永久に課金しません。 決定はいつでもあなたのgitの中にあり、乗り換えも離脱もデータ移行なしで済みます。 Team(準備中)は「組織で回す仕組み」に対してのみ課金します。

原則

データを人質に取らない

立場

記憶ではなく、ガバナンス

エージェント記憶レイヤーは「何が起きたか」をファジーに思い出します。 Zenreiが答えるのは別の問い——「何が決定済みで、何をしてはいけないか」

記憶レイヤー

  • 会話から自動抽出されたファジーな記憶
  • 正しさは確率的。誰も承認していない
  • データはサービスのDBの中に

Zenrei

  • 人間が承認した権威ある決定
  • ステータス・理由・日付・上書き関係を持つ構造化データ
  • データはあなたのgitの中に

仕様

決定は、このかたちで書く

decisions/2026-08-08-no-database-in-m0.md

---
id: 2026-08-08-no-database-in-m0
status: rejected
date: 2026-08-08
scope: [zenrei]
supersedes: []
---

# M0でデータベース(SQLite等)を導入する案

## 決定
却下。M0はDBを持たず、mdファイルをスキャンして索引する。

## 理由
数百ファイル規模ならフルスキャンで十分速く、DBは
「mdが正なのにDBが古い」という新しい故障モードを持ち込むだけ。

## 再検討条件
索引構築が体感で遅くなった場合(目安: 1秒超)。

実在の決定ファイル。この「再検討条件」があるから、却下は議論の打ち切りではなく、条件付きの前例になる。