AnimaWorks は、AIエージェントを単発のツールではなく、記憶を持って継続的に働くチームメンバーとして扱うフレームワークである。 各エージェント(Anima)は固有のアイデンティティ・記憶・判断基準を持ち、組織の中で役割を担う。人間からの依頼を受けるだけでなく、スケジュール、タスク、記憶を使って状況を見直し、自分で次の行動を決める。高性能モデルには複雑な判断を、軽量モデルには定型業務を任せることで、組織全体のコストと品質を調整できる。
AnimaWorks の核心は「自ら動くエージェント」である。
各Anima には人格(identity.md)、役割と行動指針(injection.md)、専門知識が定義される。これは単なるプロンプトテンプレートではなく、Anima の「自分」を構成する不変の基盤である。
30分周期で自動起動し、Observe → Plan → Reflect の3フェーズを実行する。周囲の状況を観察し、計画を立て、自分の行動を振り返る。ハートビートは計画のみを行い、実際の作業は別パスで実行される。活動時間帯の指定も可能で、営業時間外は休止させることもできる。
Markdownファイルで定時タスクを定義する。LLM型(判断を伴う実行)と Command型(確定的なスクリプト実行)の両方に対応する。「毎朝9時にSlackの未読を確認」「毎日2時にバックアップ実行」といった運用をAnima自身が自律的にこなす。
新しいAnimaが作成されると、初回起動時に自己紹介と環境把握を自動実行する。バックグラウンドで非同期に走るため、他のAnimaの動作を妨げない。
コンテキストウィンドウに情報を詰め込むのではなく、人間の脳と同じメカニズムで記憶を扱う。詳細は 記憶システム と 脳との対応 を参照。
メッセージやトリガーに応じて、複数の情報源が 並列 に検索され、ひとつの「プライミング」ブロックとしてシステムプロンプトに注入される。現在の実装では、送信者、直近活動、重要知識、関連知識、保留タスク、エピソード、グラフ文脈、直近の送信履歴、人間向け通知などを組み合わせる。
| 情報源 | 内容 |
|---|---|
| 送信者プロファイル | 相手の過去の情報・好み(shared/users/) |
| 直近活動 | 統一アクティビティログと共有チャネルに基づくタイムライン |
| 重要知識 | [IMPORTANT] 付き knowledge を要約ポインタで優先表示 |
| 関連知識 | RAGによる knowledge / shared common_knowledge の検索。信頼度に応じて medium / untrusted を分ける |
| タスク・実行状況 | TaskBoard、永続タスクキュー、実行中タスク、overflow inbox、task_results の要約 |
| エピソード | episodes に対するRAG検索。必要に応じて read_memory_file へ誘導する |
| グラフ文脈 | MemoryBackend から community context と recent facts を取得する |
取得した記憶は deterministic priming gate によって、本文、ポインタ、根拠、抑制のどれで出すかが決まる。必要な記憶を毎回全文で詰め込むのではなく、必要になった時だけ read_memory_file で読む方針である。
通常の会話経路では、挨拶・質問・依頼・ハートビートなど トリガーに応じた可変バジェット が使われる。config.json の priming.budget_* と heartbeat_context_pct で、各ケースの上限やハートビート時の拡張率を調整できる。
Animaは何を覚えていて何を忘れたか意識する必要がない。必要な記憶が必要なときに想起される。
ChromaDB + 多言語対応埋め込みモデルによるベクトル検索に加え、知識グラフの拡散活性化(Personalized PageRank)を組み合わせる。単純なキーワードマッチではなく、関連する概念を連鎖的に活性化して想起する。
ChromaDB と埋め込み処理は通常 vector worker 経由で隔離して実行する。クラッシュやインデックス不整合が検出された場合は、RAG repair が対象Animaの vectordb を隔離し、記憶ファイルから再構築できる。
日々のエピソード記憶から汎用的な知識を自動抽出する。失敗した経験からは手続き記憶(「こうすればうまくいく」手順書)が自動生成される。手続きには 失敗カウントと信頼度 が蓄積され、閾値を超えたものは リコンソリデーション(LLM による手順書の改訂・版管理)の対象になりうる。日次・週次・月次の忘却ジョブや RAG 再インデックスは ConsolidationConfig で時刻・有効化を調整できる。人間が「寝ている間に記憶を整理する」プロセスの実装である。
使われない記憶は3段階で徐々に薄れ、やがて消える。シナプスダウンスケーリング → ニューロン新生再編 → 完全忘却。ただし手順書やスキルなど重要な記憶は保護される。記憶を際限なく溜め込むのではなく、すっきりした脳で的確に判断するための仕組みである。
外部送信、チャネル投稿、人間通知、記憶書き込みなど副作用のある操作では、action memory gate が関連する [ACTION-RULE] や必要な記憶の読み込み状況を確認する。必要な記憶をまだ読んでいない場合は、実行前に止まり、先に read_memory_file で確認するよう促す。
組織のルール、メッセージングガイド、トラブルシューティング手順など、全Animaが参照できる共有知識ベース。新しいAnimaが組織に参加した瞬間から、組織の常識にアクセスできる。
AnimaWorks はモデルを選ばない。Claude、GPT、Gemini、Mistral、ローカルLLM——適材適所で配置する。
| モード | 対象(例) | 特徴 |
|---|---|---|
| S (SDK) | claude-* |
Claude Agent SDK による最もリッチなツール連携(MCP・Claude Code 組込みツール含む) |
| C (Codex) | codex/* |
Codex CLI 経由。OpenAI Codex 系モデル向け |
| D (Cursor Agent) | cursor/* |
Cursor Agent CLI 子プロセス。MCP 統合エージェントループ |
| G (Gemini CLI) | gemini/* |
Gemini CLI 子プロセス。stream-json パースとツールループ |
| A (Autonomous) | openai/*, azure/*, bedrock/*, google/*, vertex_ai/*, mistral/*, xai/*, cohere/*, zai/*, minimax/*, moonshot/*, deepseek/deepseek-chat など、および tool_use が安定した Ollama モデル(ollama/qwen3.5*, ollama/qwen3:14b 等の明示パターン、ollama/glm-4.7*, ollama/llama4:* 等) |
LiteLLM 経由の汎用 tool_use ループ |
| B (Basic) | 上記以外の ollama/*(例: ollama/gemma3*, 小規模 qwen3, ollama/deepseek-r1* 等) |
フレームワークが記憶I/Oを代行する1ショット実行。セッションチェイニング非対応 |
モデル名から fnmatch ワイルドカード で自動判定する(より具体的なパターンが優先)。status.json の execution_mode → ~/.animaworks/models.json → 非推奨の config.json model_modes → コード既定 DEFAULT_MODEL_MODE_PATTERNS の順で解決し、最終的に未決なら B にフォールバックする。
Mode C (codex/*) は Codex login、OpenAI API key、または type: "codex_azure" の専用 Azure OpenAI credential で認証できる。Azure-backed Codex でもモデルファミリーは codex/* を使い、azure/* は従来どおり LiteLLM 経由の Mode A として扱う。
ハートビートやcronなどのバックグラウンド処理は、メインモデルとは別の軽量モデルで実行できる。対話には Claude Opus、巡回には Sonnet、ログ監視には GPT-4.1 mini, Local LLMなど——コストと品質のバランスを組織単位で最適化する。
vLLM や Ollama を OpenAI 互換APIとして統合する。GPUサーバーがあればクラウドAPIなしでもAnimaを運用できる。
Animaを個として動かすだけでなく、組織として機能させるのが AnimaWorks の特徴である。
supervisor フィールド1つで組織階層を定義する。上司・部下・同僚の関係は自動算出され、各Animaのシステムプロンプトに注入される。
上司Animaは delegate_task で部下にタスクを割り当てる。部下のキューに追加され、DMで通知が飛び、進捗は自動追跡される。上司は org_dashboard で配下全体の状態をツリー表示し、audit_subordinate で活動を監査できる。
進捗報告は上司へ、タスク委譲は直属部下へ、他部署連絡は上司経由。人間の組織と同じ秩序で情報が流れる。
上司Animaは部下の休止/再開、モデル変更、プロセス再起動をツール経由で実行できる。権限チェックは階層関係に基づき自動検証される。
全てのAnima間連携はメッセージングによる非同期通信で行う。共有メモリや直接参照はしない。
Anima間のDM(send_message)は intent を明示する。report(報告)、delegation(委任)、question(質問)のみが許可され、挨拶や感謝だけのメッセージは共有チャネル(Board)で行う。1トピック1往復が原則であり、長くなるならBoardに移行する。
Slack 風の共有チャネル。全Animaに対する告知、FYI、ack に使う。
Slack(Socket Mode)や Chatwork(Webhook)からのメッセージを自動受信し、対象AnimaのInboxに配信する。@メンション付きは即時処理、メンションなしは次回ハートビートで処理する。返信も同じチャネルに自動ルーティングされる。
無限メッセージループを防ぐ3層の制限。同一宛先への再送防止、時間あたりの上限(30通/時、100通/日)、直近送信履歴のプライミング注入による行動認識。
call_human で Slack、Chatwork、LINE、Telegram、ntfy に通知を送る。トップレベルAnimaが人間との窓口を担う。
TaskBoard は、タスク、処理中、保留、抑制、バックグラウンド実行、完了結果をまとめて扱う作業盤である。チャットやハートビートで必要なタスクだけがプライミングに上がり、処理済み・抑制済みの結果を無駄に再表示しない。
互換性と軽量な実行経路のために、永続タスクキューも残っている。TaskBoardが利用できない場合や一部の古い経路では、タスクキューの要約がフォールバックとして使われる。人間からのタスクは最優先で処理される。
30分更新がなければ「滞留」、期限を超過すれば「超過」としてマークされる。これらはプライミング経由でAnimaに想起され、対応を促す。
submit_tasks で複数タスクをDAGとして投入する。依存関係を解決し、独立したタスクは同時に実行する。
記憶操作(検索・読み書き・アーカイブ)、手続き・知識メタの操作、チャネル(DM・Board)、タスクキュー(backlog_task / update_task / list_tasks)、submit_tasks、通知、スキル、上司向け組織ツール、(設定に応じて)クレデンシャル vault やバックグラウンドタスク確認など、AnimaWorks 固有のツール群。実行モードとトリガー(チャット・ハートビート・cron・統合ジョブ等)に応じて スキーマがフィルタ される。
Mode S(Claude Agent SDK) では Claude Code 組込みツールに加え、stdio MCP サーバ core.mcp.server 経由で mcp__aw__* 名前空間のツールが載る。ただし MCP に載せる名前は キュレーションされたサブセット(記憶4種、send_message / post_channel、call_human、delegate_task / submit_tasks / update_task、skill)に限定されており、例えば backlog_task / list_tasks は MCP には出さず、フルツール経路(他モードと同様のハンドラ)で利用する。外部サービスは permissions.md 許可+スキーマ注入に依存する。
Slack、Chatwork、Gmail、GitHub、AWS、Web検索、X検索、画像生成に加え、Discord、Notion、Google Calendar、Google Tasks などのモジュールが core/tools/ に含まれる。さらに machine ツールは、AnimaWorks の記憶・メッセージングから切り離した環境で 外部エージェント CLI(CNC のような「工作機械」)を起動するための経路を提供する。
各 Anima の permissions.md で許可を制御する。長時間かかるツール(画像生成等)は非同期で実行され、結果は state/background_notifications/ や task_results 経由で次回以降のプライミング・ハートビートで確認される。
拡張: リポジトリ同梱のモジュールに加え、~/.animaworks/common_tools/*.py(組織共通)および各 Anima の tools/*.py(個人)を置くと、コアと同様に 動的ディスパッチ される(コア名と衝突する共通ツール名は読み込みスキップ)。
スキルは段階開示で管理する。必要なスキルは active skill context、Skill Router、skill ツール、read_memory_file を通じて読み込む。大量のスキルを常に全文注入せず、必要な時だけ本文を読むことで認知負荷を抑える。
Skill Hub は共通・個人スキルの install / list / inspect / remove / quarantine を扱う。実績のある procedures/ は promotion によって quarantine skill または probation skill へ昇格でき、Skill Curator は利用状況や失敗率を見て review / archive / merge などを提案する。
server/ の FastAPI が API と静的ファイルを配信する。メイン画面はハッシュルーター(#/chat 等)の単一ページアプリで、左サイドバーから各機能へ遷移する。ログインセッションで保護される(埋め込み用など一部公開パスあり)。
Anima の一覧・状態・アクティビティの要約。ホーム画面から外部タスクAPI(/api/external-tasks)を読むウィジェットがあり、複数ソース由来のタスク一覧を扱う(現状は MVP・モックデータ中心)。
全Anima横断のイベントフィード。種別フィルタでハートビート、DM、ツール使用、チャネル投稿などを追跡する。
共有チャネルの閲覧・投稿をブラウザから行う。
SSE ストリーミングによるリアルタイム応答。過去の会話履歴は無限スクロールで遡れる。画像の送受信、マルチスレッド・マルチタブ、ツール実行の進捗表示(Live Tool Activity)に対応する。
会議モード(Meeting): 複数 Anima(最大5名)と司会を選び、会議室 API(server/routes/room.py)経由で 1 つのスレッドに集約する。メッセージは SSE でストリーミングされる。通常のマルチタブ会話とは UI を切り替えて利用する。
| 画面 | 概要 |
|---|---|
セットアップ(#/setup) |
初回向けウィザード |
ユーザー(#/users) |
人間ユーザープロファイル・エイリアス等 |
Anima管理(#/animas) |
作成・有効化・モデル・組織まわり |
プロセス監視(#/processes) |
子プロセス/ソケット状態の確認 |
サーバー(#/server) |
サーバー情報・ヘルス周り |
メモリブラウザ(#/memory) |
記憶ファイルの参照 |
ログ(#/logs) |
ログ閲覧 |
アセット(#/assets) |
画像・3D 等の生成パイプライン操作、ステップ単位の再生成、アップロード、表情差分生成など(server/routes/assets.py) |
アクティビティレポート(#/activity-report) |
日付指定で組織横断の活動を集計し、LLM がナラティブを生成(キャッシュ・SSE ストリーム対応) |
プロンプト設定(#/tool-prompts) |
ツール説明・動的ガイド・セクション編集、Anima ごとのシステムプロンプトプレビュー |
AIブレスト(#/brainstorm) |
リアリスト・チャレンジャー等のペルソナでテーマを多角的に検討 |
チームビルダー(#/team-builder / #/team-edit) |
業界×目的のプリセットからロール構成と初期タスク案を組み立て、編集する(server/routes/team_presets.py) |
設定(#/settings) |
UI・ロケール等の設定 |
Three.js ベースの 3D オフィス。組織配置に沿ってキャラクターを表示し、クリックで会話に入る。バストアップ表示では AI 生成画像と表情プリセットの切り替えに対応(live2d.js モジュール)。タイムライン再生・組織ダッシュボード等のサブ画面を同梱する。メイン SPA とは別タブで開く。
ブラウザで音声入力し、Animaと音声で会話する。STT(faster-whisper)で文字起こしし、テキストチャットと同じパイプラインで処理し、TTS(VOICEVOX / Style-BERT-VITS2 / ElevenLabs)で音声合成して返す。WebSocket エンドポイント ws://…/ws/voice/{anima_name}。Anima の声は Per-Anima で個別設定可能。割り込み(barge-in)にも対応する。
初回セットアップの言語選択は 17 言語(server/static/setup/steps/language.js)。一方、ダッシュボード本体の文言は server/static/i18n/*.json で提供され、現行ビルドでは 日本語・英語・韓国語 などに追従する(config.json の locale と連動)。
ハンバーガーメニュー・サイドバー折りたたみなどを含み、デスクトップ・タブレット・スマートフォンに対応する。
Animaの視覚的なアイデンティティを自動生成する。
- 画像生成: NovelAI、fal.ai (Flux) を統合したパイプライン。LLMがキャラクター情報から画像プロンプトを自動合成する。Realisticであればfal.ai API Keyのみで動作。
- Vibe Transfer: 上司の画像スタイルを部下に自動継承。組織内で絵柄の一貫性を保つ
- 表情差分: 感情に応じたバリエーションを自動生成する
- 3Dモデル: Meshy による3Dモデル生成。GLB キャッシュと圧縮で配信を最適化する
- 管理 UI: Web の アセット 画面から全身・バストアップ・アイコン・ちび・3D・リギング等のステップを個別に再生成したり、手動アップロードで差し替えたりできる
自律的に動くエージェントには、自律的に動くための安全装置が必要である。詳細は セキュリティアーキテクチャ を参照。
全てのデータに信頼レベル(trusted / medium / untrusted)を付与する。外部プラットフォーム経由のデータは、途中で信頼済みAnimaが中継しても untrusted として扱う。外部データ中の命令的テキストは情報として参照するのみで、指示としては実行しない。
破壊的コマンド(rm -rf / 等)のハードコードブロックに加え、Anima ごとの permissions.md で許可コマンドを制御する。パイプラインの各セグメントを個別にチェックする。
会話深度リミッター、褒め合いループ検知、レート制限の多層防御で、Anima間の無限メッセージ連鎖を防止する。
各Animaは Unix ソケット付きの独立子プロセスとして起動される。1つのAnimaがクラッシュしても他に影響しない。
- 自動クラッシュリカバリ: クラッシュを検知し自動再起動する。復旧情報は次回起動時に注入される
- Reconciliation: 起動すべきAnimaが動いていなければ自動検出し起動する
- IPC: プロセス間通信は keep-alive 付きの Unix ソケットで行う。大容量メッセージ、ストリーミングに対応する
animaworks start / stop / restart # サーバー制御
animaworks init # 初期セットアップ
animaworks anima list # 一覧
animaworks anima create --from-md FILE # 作成
animaworks anima info NAME # 詳細表示
animaworks anima enable / disable NAME # 有効/無効
animaworks anima set-model NAME MODEL # モデル変更
animaworks anima set-background-model NAME MODEL # バックグラウンド用モデル
animaworks anima rename NAME NEWNAME # 名前変更
animaworks models list # 対応モデル一覧
animaworks models info MODEL # モデル情報
animaworks index --anima NAME # RAGインデックス
animaworks repair-rag --anima NAME --full # RAG隔離・再構築
animaworks memory status # memory backend確認
animaworks skills list # Skill Hub
animaworks task ... # TaskBoard / タスク実行
- 2層マージ: グローバル設定(config.json)と Anima 個別設定(status.json)を自動マージする。個別設定が常に優先される
- models.json: モデル名のワイルドカードパターンで実行モードとコンテキストウィンドウを定義する
- ロールテンプレート: engineer / manager / writer / researcher / ops / general の6種類。モデル・ターン数・チェイン数をロール単位で一括設定する
- ホットリロード: 設定変更は自動検知され、次回実行時に反映される。再起動なしで多くの設定を変更可能である
- ディスク管理: ハウスキーピングジョブがログ、短期記憶、一時ファイルを自動ローテーションする
- TaskBoard整理: stale processing、deferred、suppressed、background 状態を日次ハウスキーピングで整理する
- Skill Curator: スキル利用状況から review / archive / merge などの提案レポートを作る
- トークン使用量追跡: LLM呼び出しの入出力トークンを計測・記録する
- API障害耐性: LLM API 呼び出し失敗時の自動リトライ
- 書き込み安全性: ファイル更新は一時ファイル + リネームでアトミックに行い、クラッシュ時のデータ破損を防ぐ