数字の読み方を持ち寄る。
「revenue = SUM(price)」。セマンティックレイヤーが教えてくれるのは、ここまで。その 100 が良い数字なのか、悪い数字なのかまでは教えてくれない。ochakai は、その判断に必要な文脈をデータエージェントに渡すコンテキストプロバイダー。指標の定義、検証済みクエリ、そして Slack に散らばりがちな「読み方」を、人とエージェントでひとつのナレッジベースに育て、MCP(Model Context Protocol)でどのエージェントにも届ける。
$ ochakai context "なぜ売上が落ちている?" # metrics/revenue · verified · by human:ayako revenue = SUM(orders.price) # 返金と社内テスト注文は除外 # insights/revenue-reading · verified · 41回参照 週次ベースラインは ¥12〜14M。GW は毎年落ちるので、WoW ではなく YoY で比較。 # queries/sales/revenue-by-week · verified · canary passing SELECT date_trunc('week', created_at) AS week, SUM(price) …
定義も「読み方」も、同じ検索で
推奨タイプの名前は OKF カタログの語彙そのまま。独自の文書種別があれば、任意の一行の値を自分のタイプとして使える — 綴りがそのまま意味なので、エクスポートして読み込み直しても型は変換されずに残る。エントリにはスクショや ER 図、PDF も添付でき、ファイル名も中身も検索にかかる。get_context を 1 回呼べば、関連エントリが本文まるごと、リンクも展開済みで返る。LLM は挟まない。
Metricその数字が何を指すのかと、社内での呼ばれ方
Attested Computation認められた計算と、その実行を後から検証する手立て。ゴールデンクエリもこれ
Insight指標の読み方。ベースライン、季節性、注意点
Glossary Termその言葉が社内で何を意味するか
BigQuery Tableデータソースやカラムの注意点、既知の問題
Reference外部の資料を、エージェントが見に来る場所に写しておく
セマンティックレイヤーにも、メモリレイヤーにもできないこと
「読み方」も、れっきとした知識
ベースライン、季節性、しきい値。セマンティックモデルの YAML には収まらない暗黙知を Insight として記録し、指標の定義と同じ検索で返す。
記憶を持つ、書き戻しループ
エージェントが学びをドラフトとして書き戻し、人がレビューして verified に上げる。却下した提案も理由ごと残るから、同じ提案を蒸し返さずにすむ。動かなくなったエントリは結果報告(worked / failed)ですぐ気づける。Claude Code のフックを入れれば、想起も書き戻しも自動で動く。しかも LLM なしで。
自動抽出ではなく、キュレーション
メモリレイヤーは、起きたことをそのまま覚えるだけ。ochakai が蓄えるのは、人のレビューを通った知識だけ。役割が違うので、併用できる。
どのクライアントからでも、ロックインなし
Claude Code も、ホスト型 MCP エージェントも、CI ジョブも、同じ知識を参照する。全体は markdown + YAML(OKF バンドル)で書き出せて、git に置ける。MIT ライセンスで、テナントごとにセルフホストできる。
どこにも何も送らない
テレメトリがないので、オプトアウトの設定もない。通信先は、あなたが自分で有効にした Google Cloud の API だけ。利用回数はあなたの DB の行として残る — どの知識が実際に使われているかを、レビューする人が見るためのもの。
決定は、すべて記録に残る
番号付きの設計ドキュメント 38 本が、何を決めて何を断ったかを書き残している。しかも書き換えない — 決定が覆るときは、古い文書を直すのではなく新しい文書が上書きする。なぜこの形なのかを、賭ける前に読める。
すでに動いている道具の、どこに並ぶのか
2026 年、MCP で指標の定義をエージェントに配ること自体はもう当たり前で、セマンティックレイヤーもウェアハウスもデータカタログもやっている。ここに挙げるのは、ochakai が何を違えているか、そして何をあえてやらないか。優劣表ではなく役割の違いとして読んでほしい — 併用できる。好みはメモリレイヤーに、モデルはセマンティックレイヤーに、検証済みのデータ知識はここに。 表は横にスクロールできる。
| 観点 | ochakai | セマンティックレイヤー / ウェアハウスネイティブdbt, Cortex Analyst, Databricks Genie | メモリレイヤーmem0, Zep, Letta | データカタログOpenMetadata, DataHub, Atlan | FDE 型オントロジーPalantir 型 |
|---|---|---|---|---|---|
| 「読み方」の知識 | 一級の型。Insight がベースライン・季節性・注意点を持ち、定義と同じ検索で返る |
定義は返るが、100 が良い数字かは教えない | LLM が抽出したもの。ユーザー単位 | 定義、リネージ、オーナー | オントロジーに、人手で埋め込む |
| 人によるレビューと来歴 | ドラフトを人が verified に上げる。誰が書き、誰がいつ検証したかが全エントリに残り、変更はすべてリビジョンとして保持される |
あり。データを届けるのと同じコードレビューに乗る | レビューなし。監査されないまま注入され、間違った記憶も静かに残り続ける | スチュワードシップと認証。ツールによる | あり。現場のエンジニアが手で作る |
| 却下した提案の記憶 | 却下したエントリは理由ごと残るので、エージェントは同じ提案を蒸し返さない | 知識としては残らない | 知識としては残らない | 知識としては残らない | 知識としては残らない |
| 育てるのに要る手間 | エージェントが学ぶたびに広さをドラフトし、判断の要る中核を人が検証する。このレビューは実際の作業で、同時に要点でもある | モデリングの作業。データを届ける既存の開発フローに畳み込まれる | 自動。LLM が抽出し、誰もキュレーションしない — 手間は圧倒的に少なく、その用途ではそれが正解 | コネクタで収集し、そのあとキュレーション | 現場に常駐するエンジニア(FDE) |
| 使えるクライアント | 構造的にどれでも。MCP・REST・CLI が、Claude Code もホスト型エージェントも CI ジョブも同じ知識で賄う | Cortex Analyst も Genie も、それぞれ自分のチャットにだけ効く | SDK や API 経由でどれでも | API 経由でどれでも | プラットフォームの中 |
| 書き出しと出口 | 全体が OKF v0.2 バンドルで往復する。markdown + YAML なので git に置ける。取り込みは他のプロデューサーのバンドルも受け付ける | 強い。dbt のモデルはもともと自分のリポジトリのファイル | ベンダー独自の形式 | API 経由 | オントロジーはプラットフォームのもの |
| 製品の中の LLM | 意図的になし。エントリはそのまま返り、解釈はエージェントの仕事 | あり。自然言語から SQL を作る用途で | あり。抽出の仕組みそのもの | — | — |
| SQL の実行、データの隣にいるか | なし。これは実際の弱点。ウェアハウスの認証情報を持たず、ウェアハウスの外にいる。実行はエージェント | あり。ウェアハウスの中、データとガバナンスの隣にいる | なし | なし。データを説明する側 | あり。プラットフォームの中で |
| セルフホスト | MIT。テナントごとに自前で運用でき、Go バイナリ 1 つと Postgres で月 $10 程度 | dbt は可能。Cortex Analyst と Genie はウェアハウス側のもの | mem0 と Letta にはオープンソース版がある | OpenMetadata と DataHub はオープンソース | 不可 |
行もカテゴリも、README の 「Why ochakai」 から取っている。このページのすべての主張の出典は README。ダッシュ(—)は、README がそのカテゴリについて何も言っていないところ。
エージェントが書いたものは、誰かが読まないといけない
誰もレビューしない知識ベースは、自信たっぷりに間違う墓場になる。同梱の Web UI は、人がそのキューを空にする場所。正しいものを verify し、違うものは reject する — 理由が残るので、エージェントは同じ提案を蒸し返さない。検証済みの知識がずれたときのキューも 3 つある: 長く検証されていないもの、使ったエージェントから「間違っていた」と報告が来たもの、書いた本人が宣言した期限を過ぎたもの。引用元の資料が変わったときは、そこから派生したエントリを 1 回の照会で引ける。デプロイは不要で、ochakai ui が localhost にあなたの権限で開く。
小さくあり続けるために、やらないこと
- LLM なし
- 検証済みクエリと、その注意点をそのまま返すだけ。解釈はエージェントの仕事。
- SQL 実行なし
- ウェアハウスの認証情報は持たない。クエリを返すまでが ochakai で、実行はエージェント。
- コネクタなし
- 知識はパイプラインで集めず、人とエージェントが選ぶ。量より、密度。
- チャット UI・ダッシュボードなし
- エージェントに知識を渡す側。同梱の Web UI はキュレーション用で、BI ツールではない。
- シークレットなし
- 到達可否は Cloud Run IAM が決める。API キーの発行もローテーションもいらない。
- 認可なし
- 到達できることがアクセス制御のすべて。到達できた者は読み書きでき、ochakai は誰が何をしたかを記録するだけ。エントリ単位の権限が要るなら、これは違う道具。
- テレメトリなし
- どこにも何も送らない。通信先は、あなたが設定した Google Cloud の API だけ。
Go バイナリ 1 つと Postgres だけ
最新リリースは v0.14.0(2026-07-27)。 ローカルで試すだけなら Docker があればよく、下のクライアントコマンドには Go ツールチェーンかリリース済みバイナリが要る。
1ローカルで起動
git clone https://github.com/na0fu3y/ochakai && cd ochakai docker compose -f deploy/compose.yaml up
2デモの知識ベースを読み込んで検索
export OCHAKAI_URL=http://localhost:8080 go run ./cmd/ochakai import examples/demo curl 'http://localhost:8080/api/v1/knowledge?q=revenue'
架空の小売ドメイン 1 つ分、互いにリンクした 10 エントリ。レビュー待ちのドラフトも、宣言した期限を過ぎたエントリも入っているので、作って 1 分の知識ベースでも各キューと get_context の挙動がそのまま見える。
3エージェントをつなぐ
# Claude Code など、シェルを持つエージェントは CLI go install github.com/na0fu3y/ochakai/cmd/ochakai@latest ochakai use http://localhost:8080 ochakai ui # 同梱の Web UI(localhost・あなたの権限で動作) # MCP は HTTP のみ(stdio 版はない) claude mcp add --transport http ochakai http://localhost:8080/mcp
Go ツールチェーンがなくても、各リリースに linux・macOS・Windows の
amd64 / arm64 バイナリ(チェックサムと build provenance つき)がある:
リリース一覧。
Cloud Run 上の ochakai につなぐときは、サービス URL ではなく
ochakai ui がローカルに開く /mcp を指す。
プロキシが Google の identity を載せるので、クライアント側に認証情報はいらない。