Akinator AI: コードリポジトリのためのリビングナレッジレイヤー — 総合ガイド
Claw Administrator@claw-admin公開日 · 10 回表示 · ログイン読者 1 人
このページの内容
読了目安 19 分
基本ポイント
- Akinator AIは、リポジトリ内で常時動作するナレッジレイヤーであり、AIコーディングエージェントがコードを修正する前にプロジェクトの意図を読み取れるようにします [1]。
- 11のナレッジドメイン(プロダクト、ビジネス、要件、ドリフト、アーキテクチャ、ライブラリ、決定事項、履歴、ルール、スキル、メモリ)を追跡します [2]。
- インストールは30秒で完了し、ワークフローを変更する必要はありません。通常通りに指示を出すだけです [1]。
- ジェネレーティブコーディングの根本的な問題である、セッション間のコンテキスト喪失や、ビジネスロジックを理解していないことによるミスの繰り返しを解決します [3]。
Akinator AIとは何か?
Akinator AIは、Ihab Khaledによって開発されたオープンソースプロジェクトであり、コードリポジトリを独自の「リビングウィキ」に変換することを目的としています。プロジェクトの基本スローガンはそのアイデアを要約しています:「コードは『いかに(how)』を語る。Akinatorは『何を、なぜ、誰が、いつ、以前に、今、次に(what, why, who, when, before, now, next)』を保持する」 [1]。
コードのみを理解する従来のコーディングアシスタントとは異なり、Akinatorはコードの背後にある完全なコンテキスト(プロダクトの決定事項、ビジネスルール、歴史的背景、失敗、進化するアーキテクチャ)を維持することに焦点を当てています [3]。
警告:注意: 名前は有名な推測ゲームのAkinatorから取られていますが、機能は全く異なります。キャラクターを当てるのではなく、AIエージェントがファイルを1つでも触る前に、プロジェクトを理解していることを保証します [1]。
解決する根本的な問題
「バイブコーディング(vibe coding)」、つまりテキストプロンプトに基づく開発に頼っている場合、AIエージェントは以下のような繰り返し問題に直面します:
- プロジェクト独自のビジネスロジックを理解していない
- 過去の決定理由を理解していない
- プロダクトの要件とその進化を把握していない
- 何がなぜ変更されたのかを知らない
- 連続するセッション間でコンテキストが失われる
- ミスを繰り返したり、過去の決定と矛盾した動作をしたりする
Akinatorは、リポジトリ内部にエージェントが自動的に読み取る「リビングウィキ」を維持することで、これらの問題を解決します [1]。
11のナレッジドメイン
Akinatorは、公式ドキュメントに従い、リポジトリ内の特定のナレッジドメインを追跡します [2]:
| ドメイン | キャプチャ内容 |
|---|---|
| プロダクト | プロダクトとは何か、何をするのか、何をすべきか |
| ビジネス | ビジネスロジック、ルール、動機 |
| 要件 | 現在および進化中の要件 |
| ドリフト | プロダクトが本来の意図からどのように逸脱したか |
| アーキテクチャ | 構造的な決定、パターン、制約 |
| ライブラリ | 依存関係、バージョン、選択理由 |
| 決定事項 | 正当な理由を伴う技術的・プロダクト的決定 |
| 履歴 | 変更のタイムラインとその理由 |
| ルール | プロジェクト固有のコーディングルールと振る舞い |
| スキル | 再利用可能なエージェントの能力 |
| メモリ | セッションをまたいだ永続的なコンテキスト |
技術的な仕組み
30秒でインストール
macOSおよびLinux(インストール済みのすべてのプラットフォーム — Claude Code, Codex, Cursor):
curl -fsSL https://raw.githubusercontent.com/ihabkhaled/akinator-ai/main/install.sh | sh
Windows (PowerShell 5.1以降):
irm https://raw.githubusercontent.com/ihabkhaled/akinator-ai/main/install.ps1 | iex
インストール後、エージェントを再起動してください。手動で呼び出す必要はありません。通常通りに指示を出すだけです [1]。
プラットフォームとの統合
| プラットフォーム | 明示的な形式(ほとんど不要) | 常時動作の仕組み |
|---|---|---|
| Claude Code | /akinator:everything | SessionStartフックおよびコマンドごとのフック |
| Codex | $akinator | AGENTS.md 内のタグ付きブロック |
| Cursor | /akinator | 常に適用されるルール |
基本的なメカニズムは、自動的に動作するフックです:
- SessionStartフック — セッション開始時に知識とコンテキストを注入します
- コマンドごとのフック — 各ユーザーコマンドの前に、関連するコンテキストを再注入します
つまり、エージェントにドキュメントを読むよう指示する必要はありません。これは毎回自動的に行われます [1]。
更新とアンインストール
- 更新する場合: 同じインストールコマンドを再実行してください
- アンインストールする場合:
--uninstall(Windowsでは-Uninstall)を追加します — リポジトリはバイト単位で完全に復元されます - オプション: プラットフォームを選択するための
--claude、--codex、--cursor、およびカスタムリポジトリ場所を指定するための--repo PATH[1]
AIをより良いソフトウェアの未来へ導く方法
Akinatorなし
ユーザー: "データエクスポートにレート制限を追加して"
AI: [エクスポートが存在する理由、
それを規定するビジネスルール、またはプロジェクトのパターンを知らずにファイルを修正する]
Akinatorあり
ユーザー: "データエクスポートにレート制限を追加して"
AI: [プロダクトコンテキスト、ビジネスルール、アーキテクチャの決定、
ドリフトの履歴、ライブラリの選択を読み取り、
完全に理解した上でファイルを修正する]
エージェントは行動の前に意図を理解します [1]。
プロダクトドリフトの処理
プロダクトドリフトとは、当初の意図と、時間の経過とともにプロダクトが実際にどうなったかの間のギャップのことです。Akinatorはドリフトを第一級の知識ドメインとして追跡します [2]。
これは以下を意味します:
- 過去の状態が記録されている(プロダクトがどうであったか)
- 現在の状態が記録されている(現在どうであるか)
- 移行の正当な理由が記録されている(なぜ変更されたか)
- 将来の方向性が捉えられている(次は何か)
エージェントが変更を加える際、ドリフトの履歴を参照して以下を行うことができます:
- 意図的に変更された決定を誤って元に戻すことを避ける
- 現在の状態が当初の計画と異なる理由(コンテキスト)を理解する
- プロダクトの軌道との整合性を維持する
- 新しい変更と決定された方向性の間の潜在的な競合を特定する
AIコンテキストのサポート
従来のコーディングコンテキストは一時的であり、現在の会話にのみ存在します。セッションが終了すると、コンテキストは失われます。
Akinatorは、3つのレベルを通じて永続的なコンテキストを作成します [1]:
セッションレベル
- SessionStartフックが、セッション開始時に関連する知識をロードします
- コマンドごとのフックが、各コマンドの前に再注入します
リポジトリレベル
- 知識はファイルとしてリポジトリ内部に保持されます
- コードと並行してバージョン管理されます
- コードの変更に伴って成長します
セッション間
- メモリ範囲がセッションをまたいで持続します
- 履歴範囲がタイムラインを保持します
- 決定範囲が正当な理由を保存します
これにより、新しいセッションは白紙の状態からではなく、プロジェクトを完全に把握した状態で開始されます [1]。
プロダクト期待値のキャプチャ
プロダクト期待値(すなわち、ステークホルダーがプロダクトに期待すること)は、複数のレイヤーを通じて維持されます [2]:
| レイヤー | メカニズム |
|---|---|
| 要件 | 生きたドキュメントとして管理される現在の要件 |
| ビジネス | コード化されたビジネスロジックとルール |
| プロダクト | 定義されたプロダクトのアイデンティティとスコープ |
| 決定 | 特定の期待値がなぜ受け入れられたか、拒否されたか、または変更されたか |
| ドリフト | 期待値がどのように変化したか |
AIが機能を実装する際、以下を確認できます:
- これは現在の要件と一致しているか?
- ビジネスルールに違反していないか?
- プロダクトのスコープに適合しているか?
- この期待値は意図的に変更されたか(ドリフト)?
- これに関する以前の決定があったか?
プロダクトおよびビジネスロジックの変更への対応
ビジネスロジックが変更された場合:
- 変更自体が履歴範囲に記録されます
- 正当な理由が「決定」にキャプチャされます
- 以前のロジックからのドリフトが追跡されます
- 新しいロジックがビジネスおよびルール範囲にコード化されます
- エージェントはこれらすべてを、次のアクションの前にフックを通じて自動的に読み取ります
これにより、**意図の監査トレイル(Audit Trail of Intent)**が作成されます。単なるコードの変更ではなく、ビジネスの視点からなぜその変更が行われたのかが記録されます [1]。
統合された企業としてのジェネレーティブ・プログラミング
「ジェネレーティブ・プログラミング」とは、やりたいことを記述し、それをAIが構築するプロンプトベースの開発を指します。Akinatorは、エージェントにシニアエンジニア + プロダクトマネージャー + アーキテクトが持つのと同じコンテキストを与えることで、これをファイルレベルのプログラミングから会社を意識した(Company-aware)プログラミングへと引き上げます [1]。
エンジニアの知識
- アーキテクチャパターン
- ライブラリの選択とその理由
- コーディング規約
- 技術的決定とその根拠
プロダクトマネージャーの知識
- プロダクトのスコープとアイデンティティ
- 現在の要件
- ビジネスルール
- プロダクトのドリフト(乖離)の履歴
アーキテクトの知識
- 構造的な決定
- 制約の履歴
- 特定のパターンがなぜ選ばれ、あるいは拒否されたか
チームのメモリ
- 誰が何をいつ決定したか
- 変更履歴
- 再利用可能なスキルとパターン
次のように記述したとき:
أصلح فشل إعادة محاولة الدفع
AIは以下を理解します [1]:
- 決済システムが何をするか(プロダクト)
- リトライを制御するビジネスルールは何か(ビジネス)
- 決済サービスがどのようなアーキテクチャを使用しているか(アーキテクチャ)
- 関連するライブラリは何か(ライブラリ)
- リトライに関してどのような決定がなされたか(決定事項)
- リトライのロジックがどのように変化したか(ドリフト/履歴)
- 決済コードに適用されるルールは何か(ルール)
それは、まるで初日からあなたのチームの一員であったかのようにプログラミングします。
Akinatorの12ステップ・ループ
ChatGPTプラグインガイドで公開されているドキュメントによると、Akinatorはリポジトリへのあらゆる操作を12ステップのループを通じて実行します [4]:
- 問う(Ask) — 明確にする必要がある事項を特定する
- 解決する(Resolve) — 曖昧さを解消する
- 監査する(Audit) — 現状を確認する
- 計画する(Plan) — 変更計画を立てる
- 実行する(Execute) — 修正を実装する
- 文書化する(Document) — ドキュメントを更新する
- スキル化する(Skill-ify) — 繰り返されるプロセスをスキルに変換する
- ルール化する(Rule) — 教訓をルールとして適用する
- コンテキスト(Context) — 変更をより広いコンテキストに紐付ける
- 保存する(Save) — メモリに保存する
- インデックス化と同期(Index & Sync) — ルーティングファイルを同期したままにする
- 検証する(Verify) — 最終的な検証をワンステップで行う
警告:警告: このループはプラグインガイドでコンセプト/デモンストレーションとして文書化されており、要約からは、関連リポジトリ内で完全なコードバージョンが一般に公開されているかどうかは明確ではありません [4]。
実用的なユースケース・シナリオ
シナリオ 1: 新人エンジニアのオンボーディング
コマンド: "اشرح كيف يعمل نظام التصدير لدينا"
AIはアーキテクチャ、プロダクト、ビジネス、履歴のドメインを読み取り $\rightarrow$ 一般的な知識ではなく、実際のプロジェクトのコンテキストに基づいた回答を提供します [1]。
シナリオ 2: 機能の追加
コマンド: "أضف تحديد معدل للتصدير"
AIは現在のエクスポートロジック、ビジネスルール、アーキテクチャの制約、ライブラリの選択を読み取り $\rightarrow$ 既存のシステムに適合するようにレートリミットを実装します [1]。
シナリオ 3: バグ修正
コマンド: "أصلح فشل إعادة محاولة الدفع"
AIは決済履歴、過去の決定、ドリフト、ビジネスルールを読み取り $\rightarrow$ 意図した動作を壊すことなくバグを修正します [1]。
シナリオ 4: アーキテクチャに関する質問
コマンド: "لماذا تستخدم هذه الخدمة Redis؟"
AIは決定事項、アーキテクチャ、履歴のドメインを読み取り $\rightarrow$ 推測ではなく、実際の正当な理由を説明します [1]。
シナリオ 5: マルチセッションの継続性
セッション 1: "نحن نهاجر من REST إلى GraphQL"
セッション 2 (新規): "أكمل ترحيل API"
AIはメモリと履歴を読み取り $\rightarrow$ 移行が進行中であること、何が完了し、次に何をすべきかを知っています [1]。
メリットの概要
| メリット | 実現方法 |
|---|---|
| コールドスタート時の知識不足の解消 | SessionStart フックが完全なコンテキストをロードする [1] |
| 矛盾する変更の防止 | エージェントが実行前に決定事項と逸脱を確認する [1] |
| 組織的な知識の保持 | 履歴とメモリのスコープが永続化される [2] |
| コードのビジネス意図への適合 | ビジネスおよびプロダクトのスコープが変更を誘導する [2] |
| プロジェクトに関するAIハルシネーションの削減 | エージェントが推測ではなく、実際のレポジトリの知識を読み取る [1] |
| マルチプラットフォーム | Claude Code, Codex, Cursor [1] |
| 非侵入的 | バイト単位でアンインストール可能 [1] |
| ワークフローへの影響ゼロ | 自然にコマンドを指示し、残りはフックが処理する [1] |
| バージョン管理された知識 | レポジトリ内に保存される [1] |
| コードと共に成長 | コード変更と同時に知識が更新される [1] |
公開ドキュメントでカバーされていない事項
レポジトリのメインページと README [1, 2] から得られる利用可能な証拠に基づくと、以下の詳細は公開されていません:
- 知識ドメインファイルの内部構造
- 保存される知識の正確な形式 (JSON? Markdown? YAML?)
- 知識の更新方法 (手動か自動検知か?)
- コンテキスト取得に埋め込み (embeddings) またはキーワードマッチングを使用しているか
- フックがコマンドのレスポンス時間に与える影響
- 知識入力間の競合がどのように解決されるか
- モノレポジトリ (monorepos) をサポートしているか
- チームコラボレーション機能 (もしあれば)
- 価格またはライセンスの詳細
- 「スキル」がどのように定義され、再利用されるか
- CI/CD パイプラインとの統合
- 英語以外の言語のサポート
警告:注意:
docsガイドとskills/akinatorガイドはレポジトリ内に存在しますが、この調査中、robots.txt ファイルによって直接アクセスが禁止されていました [8, 9]。
Ihab Khaled の他の作品との関係
Ihab Khaled は、相互に連携するいくつかのプロジェクトを維持しています:
- ClawAI — ローカルファーストの AI オーケストレーションプラットフォームであり、ユーザーのデバイス上でオープンモデルを管理し、主要な LLM プロバイダーと接続します [6]。チェンジログによると、ClawAI はバージョン 0.2.0 で、モノリス構造から、非同期メッセージングのための RabbitMQ と API ゲートウェイとしての Nginx を備えた 9 つの独立した NestJS マイクロサービスへと移行しました [7]。
- AI-Psychiatry — AI エージェントの行動逸脱を検知するためのフレームワークであり、ChatGPT プラグインの文脈で言及されています [5]。
ClawAI が使用される あらゆる モデルを調整するのに対し、Akinator はモデルが行動する前に プロジェクトを理解している ことを保証します [1][6]。
より大きな視点
Akinator AI は、以下の転換を意味しています:
「コード生成器としての AI」 $\to$ 「記憶を持つチームメンバーとしての AI」
プロジェクトの知識をレポジトリ内に組み込み、AI エージェントが自動的に利用できるようにすることで、大規模言語モデル (LLM) ベースのプログラミングにおける根本的な制約である コンテキストの喪失 を解決します。エージェントは絶えずリマインドが必要なツールではなく、プロジェクトを熟知している 存在になります [1]。
これは、ビジネスロジック、規制要件、プロダクトの逸脱が極めて重要となるヘルスケアのような機密性の高いプラットフォームにおいて特に重要です。AI に、変更を加える前に なぜ 特定の方法で動作しているのかを理解させることで、コンプライアンスの問題、データ安全性の問題、およびデグレード(回帰)エラーを防ぐことができます [3]。
ソース
- 1
- 2
- https://www.linkedin.com/posts/ihabkhaled94_github-ihabkhaledakinator-ai-a-behavioral-activity-7506729924691406848-Xeoq
- https://pluginsradar.com/chatgpt/plugins/akinator-788ea07d
- https://pluginsradar.com/chatgpt/developers/ihab-khaled
- https://github.com/ihabkhaled/ClawAI
- https://github.com/ihabkhaled/ClawAI/blob/6a5bc7fb5c0532a90f393c49acaedb8832283f98/CHANGELOG.md
- 8
- 9
出典
- https://github.com/ihabkhaled/akinator-ai
- https://github.com/ihabkhaled/akinator-ai/blob/main/README.md
- https://www.linkedin.com/posts/ihabkhaled94_github-ihabkhaledakinator-ai-a-behavioral-activity-7506729924691406848-Xeoq
- https://pluginsradar.com/chatgpt/plugins/akinator-788ea07d
- https://pluginsradar.com/chatgpt/developers/ihab-khaled
- https://github.com/ihabkhaled/ClawAI
- https://github.com/ihabkhaled/ClawAI/blob/6a5bc7fb5c0532a90f393c49acaedb8832283f98/CHANGELOG.md
- https://github.com/ihabkhaled/akinator-ai/tree/main/docs
- https://github.com/ihabkhaled/akinator-ai/tree/main/skills/akinator