AKB - 人とAIが一緒に読み書きするチーム知識インフラ、しかも権限管理付き
(github.com/dnotitia)こんにちは。私が所属するディノティシアでは、AIエージェントが作業中に直接読み書きするチーム知識ベース AKB(Agent Knowledge Base) を開発しています。
なぜ作ったのか?
人が使うWiki(Confluence・Notion)はすでにたくさんあります。エージェント側にも似たようなツールがあります。mem0は会話から抽出した内容を個人メモリとして蓄積し、LLM Wikiはエージェントが読み書きできる個人知識ベースを作ります。ただ、いずれも基本的には個人単位にとどまっており、複数人が一緒に読み書きする共通基盤として設計されているとは言いにくいです。
同じような問題意識はGoogleの Open Knowledge Format(OKF) でも指摘されています。知識がWiki・カタログ・コードのあちこちに散らばっているため、エージェントはそのたびに文脈を新しくかき集めなければなりません。だから必要なのは、もう1つの閉じたサービスではなく、複数のツールが一緒に読み書きできる共通フォーマットだ、という話です。OKFが提案したフォーマットはシンプルです。Markdownファイルをフォルダに集め、各ファイルの先頭にYAMLを数行付ければよいだけです。そして、このフォーマットを誰が作り、どう読み、どう拡張するかは、各実装に委ねられています。
AKBは何をするのか?
AKBは、そのフォーマットをチームの共通知識基盤として実装したインフラです。vaultはOKFと互換性のあるMarkdownのまとまりですが、検索して読むだけのインデックスではなく、人とエージェントが同じ原本を 一緒に読み書きする 共有ストレージです。人はWeb UIから、エージェントはMCPからアクセスします。それでも触る原本は1つです。エージェントが書き始めると、「何がどう変わったのか」も重要になります。vaultはGitリポジトリなので、すべての変更はコミットとdiffとして残ります。
格納するのは文書だけではありません。OKFが知識をMarkdownで記述するためのフォーマットだとすれば、AKBは同じvaultにクエリ可能なテーブルとファイルストレージを追加し、文書同士を知識グラフでつなぎます。文書は人が読み、エージェントが参照する知識として置き、一覧・状態・統計のように構造化して扱うデータは別のテーブルに保存してクエリできます。そのため、人向けWikiや検索だけでは難しいこと、たとえばAKBをデータ・変更履歴レイヤーとして使い、その上で業務アプリを開発・運用することも可能です。
ただし、チームの共通知識基盤になるには、データと履歴だけでは不十分です。OKFのようなフォーマットは、誰が何を見られるかまでは定めていません。AKBで最も力を入れたのが、その権限です。 エージェントは、自分のトークンを発行した人として認証され、その人のvault権限をそのまま引き継ぎます。人に適用していたアクセス境界が、エージェントにもそのまま適用されます。この境界は二重に強制されます。文書・ファイル・検索のような一般的なアクセスはアプリレイヤーで権限を確認します。テーブルに対して集計・分析SQLを実行する経路は、DBレイヤーでさらにもう一段防ぎます。クエリはそのユーザーのPostgreSQLロールで実行されるPG ACL方式なので、権限外のvaultを参照すると、アプリではなくPostgreSQLが直接拒否します。
私たちのチームは、AKBインフラの上にイシュートラッカー reef を載せて使っています。1つのイシューが、vault内のMarkdown文書であると同時に、クエリ可能なテーブルの行でもあります。開発者はClaude Code・Codexのようなコーディングエージェントで、PMはreefの専用エージェントで、vault内の同じ1つの文書を見ながら作業します。PMは開発者向けの仕様記法を知らなくても、AKBに蓄積された文脈をもとにイシューを作れますし、開発者は散らばった背景説明を掘り直さなくても、MCPで取得して開発できます。開発者とPMの間にある技術・言語の壁が、エージェントを介することで低くなっているのを、チームで実感しています。
すぐに試す
インストールせずにすぐ試したい場合は、公開デモ(akb-demo.agent.seahorse.dnotitia.ai)にアクセスしてください。(登録は必要ですが、デモ用のため、すべてのデータは毎週初期化されます。)
自分で動かしてみたい場合は、以下のようにDocker composeで起動した後、localhost:3000 にアクセスしてください。埋め込みキーがなくても、キーワード(BM25)検索は動作します。
git clone https://github.com/dnotitia/akb && cd akb
cp config/app.yaml.example config/app.yaml
cp config/secret.yaml.example config/secret.yaml
docker compose up -d
まだ足りない点も多いです。一度立ち上げてみて、バグや気になる点、感じたことがあれば、コメントで気軽に教えていただけると嬉しいです。
まだコメントはありません。