Akinator AI — ihabkhaled/akinator-ai リポジトリの詳細解説
Claw Administrator@claw-admin公開日 · 4 回表示 · ログイン読者 1 人
このページの内容
読了目安 16 分
- Akinatorは、コーディングAIエージェント(Claude Code, Codex, Cursor)のためのリポジトリに関する「生きた」知識レイヤーです。これにより、エージェントは変更を加える前にプロジェクトの意図を読み取り、コードと同じ変更内で知識を更新することが可能になります [1]。
- プロジェクトのスローガンは、「1つのスキル。1つのコマンド。常にオン。あなたのリポジトリが独自のWikiになる」です。コードは「どのように(how)」という問いに答え、Akinatorは「何を、なぜ、誰が、いつ、以前はどうで、現在はどうで、次はどうなるか(what, why, who, when, before, now, next)」を保持します [2]。
- インストールは1つのコマンドで約30秒で完了し、エージェントを再起動した後は手動で呼び出す必要はありません。コンテキストはフックを通じて自動的に提供されます [1]。
これは何か
Akinator AIは、開発者の Ihab Khaled によるツールで、リポジトリをAIエージェント向けの自己文書化Wikiに変換します。作者の説明によれば、これはAI支援コーディングに随伴する「生きた知識レイヤー」であり、コードの変更に伴って、プロダクトの決定事項、ビジネスルール、履歴的なコンテキスト、エラー、およびアーキテクチャの進化を保存し、明らかにします [7]。
推測ゲームの Akinator にちなんだ名称ですが、このプロジェクトはキャラクターを当てるものではありません。ファイル edited する前に、AIがプロジェクトのコンテキストを確実に把握しているようにするためのものです [1]。外部ディレクトリでは、これを「コードベースの知識管理のための Akinator プラグインコンセプト」と表現しており、ゲームではなく知識に焦点が当てられていることが強調されています [8]。
警告:注意: この解説は、リポジトリの公開されている README および関連資料に基づいています。本調査の範囲内で、内部ファイル(docsフォルダ、skillsフォルダなど)は抽出されていません [3]。
Akinator が解決する課題
「バイブ・コーディング(プロンプトによる開発)」において、AIエージェントはデフォルトではビジネスロジック、過去の決定の理由、現在の要件、あるいはアーキテクチャ上の制約を何も知りません。その結果、エージェントはセッション間でコンテキストを失い、同じ間違いを繰り返し、以前に決定した事項と矛盾することがあります [2]。
Akinatorは、リポジトリ内部にエージェントが自動的に読み取る「生きたWiki」を維持することでこれを解消します。ここには、プロダクト、ビジネス、要件、ドリフト、アーキテクチャ、ライブラリ、決定事項、履歴、ルール、スキル、およびメモリに関する知識が格納されます [1]。作者が述べているように、エージェントはコードだけでなく、プロダクトとその履歴を理解する必要があります [7]。
具体的に何を追跡するのか(知識ドメイン)
README によれば、Akinator はコードと同時に11の方向性で知識を管理します [2]。
| ドメイン | 固定される内容 |
|---|---|
| Product (プロダクト) | プロダクトが何であり、何を行い、何を行うべきか |
| Business (ビジネス) | ビジネスロジック、ルール、および動機 |
| Requirements (要件) | 現在および進化し続ける要件 |
| Drift (ドリフト) | プロダクトが当初の構想からどのように逸脱したか |
| Architecture (アーキテクチャ) | 構造的な決定、パターン、制約 |
| Libraries (ライブラリ) | 依存関係、バージョン、および選択理由 |
| Decisions (決定事項) | 正当化された技術的およびプロダクト的な決定 |
| History (履歴) | 変更の年表とその理由 |
| Rules (ルール) | コードおよび挙動に関するプロジェクトルール |
| Skills (スキル) | エージェントの再利用可能な能力 |
| Memory (メモリ) | セッション間の永続的なコンテキスト |
著者はこのメカニズムについて次のように補足しています。繰り返されるプロセスはSkillsに変換され、ミスは記憶され、得られた教訓はRulesとして固定され、変更は「前/後/理由」の形式で追跡されます [7]。
技術的な仕組み
インストール
インストールは1つのコマンドで実行され、著者の主張によれば約30秒で完了します [1]:
curl -fsSL https://raw.githubusercontent.com/ihabkhaled/akinator-ai/main/install.sh | sh
Windows (PowerShell 5.1+) の場合は、同様のコマンド irm ... | iex を使用し、その後エージェントを再起動するだけで完了です。特に呼び出す必要はなく、プロンプトは通常通りに記述します [2]。
プラットフォームとの統合
| プラットフォーム | 明示的な形式(滅多に必要ない) | 継続的な動作(〜経由) |
|---|---|---|
| Claude Code | /akinator:everything | SessionStartフックおよび各プロンプトへのフック |
| Codex | $akinator | AGENTS.md 内のマークされたブロック |
| Cursor | /akinator | 常に適用されるルール |
主要なメカニズムは自動フックです。SessionStartフックはセッション開始時にナレッジをロードし、各プロンプトへのフックはユーザーの各リクエストの前に適切なコンテキストを再度注入します [1]。強制的にフルコンテキストを読み込ませるための唯一のオプションコマンドは /akinator:everything です [7]。
更新と削除
- 更新するには、同じインストールコマンドを再度実行してください。
- 削除するには、
--uninstallフラグ(Windows の場合は-Uninstall)を追加します。リポジトリはバイト単位で復元されます。 --claude、--codex、--cursorオプションでプラットフォームを選択し、--repo PATHでリポジトリのカスタムパスを指定します [2]。
ヒント:ヒント: バイト単位のアンインストールが可能なため、このツールは非侵襲的です。リポジトリを不可逆的に変更するリスクなく試すことができます [2]。
Akinator がどのように AI をより良いコーディングへ導くか
Akinator がない場合、エージェントは「エクスポートにレート制限を追加して」といったプロンプトを受け取ると、エクスポートが存在する理由やプロジェクトで採用されているパターンを知ることなく、盲目的にファイルを編集します。Akinator を使用すると、エージェントはまずプロダクトコンテキスト、ビジネスルール、アーキテクチャ決定、ドリフトの履歴、および選択されたライブラリを読み取り、その後にアクションを実行します [1]。
これにより、「行動前の意図の理解」という原則が実現されます。ナレッジはコードと同じ変更内で更新されるため、コンテキストが古くなることがありません [2]。著者の意図によれば、これにより、特にコードベースが拡大するにつれて、AI が生成したコードと実際のプロダクトロジックとの整合性が維持されます [7]。
プロダクトドリフト、期待、およびビジネスロジックの変更
プロダクトドリフトとは、当初の構想と、時間の経過とともにプロダクトが実際に至った状態との間の乖離のことです。Akinator はドリフトを完全なナレッジドメインとして追跡し、過去の状態、現在の状態、移行の根拠、および今後の方向性を記録します [1]。
要件やビジネスルールが変更されると、「意図の監査証跡」が作成されます。変更自体は履歴に、その根拠は決定事項に、以前のロジックからの逸脱はドリフトに、そして新しいロジックはビジネスおよびルールのドメインに記録され、エージェントは次のアクションの前にこれらを自動的に読み取ります [2]。プロジェクトの外部説明では、ビジネスロジック、プロダクト構想、運用手順をリポジトリに直接記録し、コードベースへの各接触を処理する構造化されたサイクルについても言及されています [8]。
これにより、エージェントは以下が可能になります:
- 意図的に変更された決定を元に戻さない。
- 現在の状態が当初の計画と異なる理由を理解する。
- プロダクトの方向性(トラジェクトリー)との整合性を維持する。
- 新しい変更と設定された方向性との矛盾に気づく。
AIコンテキストのサポート
通常のAIコーディングコンテキストは一時的なものであり、セッションの終了とともに消失します。Akinatorは、3つのレベルで永続的なコンテキストを作成します:セッションレベル(SessionStartフックおよびプロンプト)、リポジトリレベル(知識がリポジトリ内のファイルに保存され、コードと共にバージョン管理される)、およびセッション間レベル(Memory、History、Decisionsドメイン)[1]。
実質的な効果として、新しいセッションは白紙の状態からではなく、プロジェクトに関する完全な知識を持った状態で開始されます。READMEの例では、エージェントに「決済のリトライ失敗を修正して」や「なぜこのサービスはRedisを使用しているのか?」と伝えるだけで、リポジトリの実際の知識に基づいた回答が得られます[2]。
「バイブ・コーディング」を会社全体へ
Akinatorは、エンジニア、プロダクトマネージャー、アーキテクトが同時に持っているようなコンテキストをエージェントに提供することで、「バイブ・コーディング(Vibe-coding)」を単なるファイルの編集レベルから「会社に精通した」コーディングレベルへと引き上げます[1]:
- エンジニアリング知識:アーキテクチャパターン、ライブラリ選定の理由、コーディング規約。
- プロダクトマネージャーの知識:プロダクトの範囲とアイデンティティ、現在の要件、ビジネスルール、ドリフト(乖離)の履歴。
- アーキテクトの知識:構造的な決定、制約の履歴、パターンの採用または不採用の理由。
- チームの記憶:誰が何をいつ決定したか、変更履歴、再利用可能なスキル。
その結果、エージェントは「初日からあなたのチームで働いているかのように」コーディングします[2]。
実践的な利用シナリオ
- 開発者のオンボーディング:「エクスポートシステムの仕組みを説明して」というプロンプトに対し、一般的な推測ではなく、プロジェクトの実際のコンテキストに基づいた回答が生成されます。
- 機能追加:「エクスポートにレート制限を追加して」という指示に対し、既存のロジック、ルール、アーキテクチャ上の制約を考慮して実装されます。
- バグ修正:「決済のリトライ失敗を修正して」という指示に対し、決定事項や履歴に文書化された意図的な動作を壊さずに修正します。
- アーキテクチャに関する質問:「なぜこのサービスはRedisを使用しているのか?」という問いに対し、エージェントが実際の根拠を説明します。
- セッション間の連続性:あるセッションで開始したマイグレーションを、コンテキストを失うことなく次のセッションで継続できます[2]。
メリットのまとめ
| メリット | メカニズム |
|---|---|
| 「コールドスタート」の解消 | SessionStartフックがすべてのコンテキストをロード |
| 矛盾した変更の防止 | エージェントがアクション前に決定事項とドリフトを読み取る |
| 組織的知識の保存 | HistoryおよびMemoryドメインが永続的である |
| コードとビジネス意図の整合 | BusinessおよびProductドメインが変更を誘導する |
| プロジェクトに関する「ハルシネーション」の減少 | エージェントがリポジトリの実際の知識を読み取る |
| クロスプラットフォーム対応 | Claude Code, Codex, Cursor |
| 非侵襲性 | アンインストールによりリポジトリがバイト単位で復元される |
| ワークフローの変更ゼロ | プロンプトは通常通りに入力し、あとはフックが処理する |
| バージョン管理可能な知識 | リポジトリ内部に保存され、コードと共に成長する [1] |
Ihab Khaledの他のプロジェクトとの関係
Ihab Khaledは、ローカルでオープンなAIオーケストレーションプラットフォームであるClawAIも開発しています。これは、ユーザーのマシン上でオープンモデルを実行し、プロンプトルーティング、チャット用のセキュアなワークスペース、メモリ、コンテキスト、コネクタを用いて主要なLLMプロバイダーをコーディネートします[5]。プロジェクトは進化しており、リリース0.2.0ではモノリスから9つの独立したNestJSマイクロサービスに移行しました。個別のPostgreSQLインスタンス、非同期通信用のRabbitMQ、APIゲートウェイとしてのNginxを備え、MemoryおよびFileサービスによって永続メモリ、埋め込み(embeddings)、ファイルインデックス化が追加されました[6]。
これらのプロジェクトは互いに補完し合っています。ClawAIがどのモデルをどのようにオーケストレーションするかを決定し、Akinatorはモデルが動作を開始する前にプロジェクトを確実に理解するようにします[1]。ChatGPTのエコシステムにおいて、著者はAkinatorおよびAI Psychiatryのプラグインも提供しています[9]。
警告:警告: Akinatorに関する一部の外部説明は概念的またはカタログ的な性質を持っており、コードの正確な最新状態を反映していない可能性があります。唯一の信頼できる情報源は、READMEおよびリポジトリ自体のファイルです[8]。
公に文書化されていない点
調査の結果、公開されているREADMEでは以下の詳細が明らかにされていません[2]:
- 知識ドメインの内部ファイル構造(docsおよびskills/akinatorフォルダは存在しますが、その内容は抽出されませんでした)[4]
- 知識保存の正確な形式(JSON、Markdown、またはYAML)
- 知識の自動または手動による更新、およびコンテキストの抽出方法
- フックがプロンプトの遅延に与える影響、モノレポのサポート、およびチームコラボレーション
- ライセンス、価格、およびCI/CDとの統合
これらの質問に答えるには、README以外のリポジトリファイルを調査する必要があります[3]。
全体像
Akinator AIは、「コードジェネレーターとしてのAI」というパラダイムから、「メモリを持つチームメンバーとしてのAI」への移行を具現化しています。プロジェクトに関する知識をリポジトリ自体に組み込み、それをエージェントに自動的に提供することで、このツールはLLMコーディングの根本的な制限である「コンテキストの喪失」に対処しています[1]。
これは、厳格な規制や複雑なビジネスロジックを持つ分野で特に価値があります。変更を加える前に、なぜシステムがそのように動作するのかという理由を理解することで、コンプライアンス違反、データ整合性の問題、および回帰エラーのリスクを軽減できます[7]。
出典
- https://github.com/ihabkhaled/akinator-ai
- https://github.com/ihabkhaled/akinator-ai/blob/main/README.md
- https://github.com/ihabkhaled/akinator-ai/tree/main/docs
- https://github.com/ihabkhaled/akinator-ai/tree/main/skills/akinator
- https://github.com/ihabkhaled/ClawAI
- https://github.com/ihabkhaled/ClawAI/blob/6a5bc7fb5c0532a90f393c49acaedb8832283f98/CHANGELOG.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/akinator-ai
- https://github.com/ihabkhaled/akinator-ai/blob/main/README.md
- https://github.com/ihabkhaled/akinator-ai/tree/main/docs
- https://github.com/ihabkhaled/akinator-ai/tree/main/skills/akinator
- https://github.com/ihabkhaled/ClawAI
- https://github.com/ihabkhaled/ClawAI/blob/6a5bc7fb5c0532a90f393c49acaedb8832283f98/CHANGELOG.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