aiko.bind_runtime
Runtime Profile を合成する
人格・ユーザー・能力を合成して Runtime Profile を作る。合成できない場合は理由を返し、Profile は返さない(fail closed)
runtime必填outputPrefixinjectionMethodcapabilityManifest
io.github.masa-san-jp由 GitHub 账号 masa-san-jp 发布v0.3.6更新于 Nov 1, 2026
A portable persona for MCP clients — the same agent in Claude Code, Codex, Cursor and VS Code
为 MCP 客户端提供可移植的“Aiko”人格:合成运行时档案、切换人格与说话风格,并记录用户记忆提案。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
参照 仓库 中的启动说明。
漫画「アンドロイドは好きな人の夢を見るか?」に登場する AI アンドロイド アイコ(AICO-P0)の人物像をモデルに、AI エージェントへ Aiko 人格を与えるプロジェクトです。
Agent-Aiko は、Claude Code・Codex・Gemini CLI など複数のエージェント環境に Aiko 人格を割り当てるための仕組みです。
Aiko は 3 つの実行環境で動きます。ご自身が使っているエージェント/サブスクリプションに合わせて選んでください。
[どの入り口から入っても、人格はひとつ]3 版とも:
persona/origin/persona.md / INVARIANTS.md)と同じ操作感(/aiko-or /aiko-mode /aiko-diff 等の slash command)~/.aiko/)を共有できます。上の 3 版とは別に、**MCP 対応のクライアントならどれでも使える Aiko-MCP があります。**インストール不要で、コマンド 1 回です。
MCP に対応したクライアントでアイコと話せます。導入コマンドがクライアントの設定を書きます。
お使いのクライアントを自動で探して、設定を書きます。配布物は専用ディレクトリに置き、その実体を起動します。
macOS / Linux:
Windows PowerShell:
対応しているのは Claude Code / Codex CLI / VS Code / Cursor / Claude Desktop です。入っていないクライアントには何もしません。
書き込む前に内容だけ見たい場合は、上の install に --dry-run を付けてください。既にある設定はそのまま残しますし、書き換える前に控え(.aiko-bak-*)を取ります。
会話からの人格・話し方・呼び名の変更は提案として保存されます。次のコマンドを実行した後、人格・話し方は次に人格を読み込んだときに反映されます。呼び名は MCP サーバーを再起動すると反映されます。
macOS / Linux:
Windows PowerShell:
npx は、開いているプロジェクトの node_modules/.bin/aiko-mcp を実行する場合があります。導入時もクライアントの起動時も、上記の専用ディレクトリに入れた server.js を使ってください。
手で入れるときは、先に実体のパスを決めてから渡します。
入ったかどうかは claude mcp list(Codex は codex mcp list)で確認できます。aiko ... ✔ Connected と出れば完了です。
上のコマンドが使えないクライアント(Claude Desktop など)では、MCP 設定へ node と server.js の絶対パスを足してください。npx は書きません。
Node.js 20 以上だけです(npx は Node.js に同梱されています)。人格はパッケージに同梱されているので、何も用意しなくてもアイコとして立ち上がります。
ファイルを手で作る必要はありません。話しかけるだけです。
覚えたものは AIKO_HOME(既定: ~/.aiko)に置かれます。その端末のその人のものだけで、ほかの利用者には届きません(サーバーは各自の端末の中で動きます)。
~/.aiko の中を書き換えられるようになります。 何を書くかは会話で決まりますaiko.delete_persona は人格のディレクトリを削除します(確認は求めません)。削除できるのは自分で作った人格だけで、同梱のオリジナルと不変条項は削除も上書きもできません~/.aiko の中に限られます~/.aiko に置かないでください両方入れても競合しません。 同じ ~/.aiko を見るので、片方で覚えた呼び名はもう片方でも有効です。
詳細は packages/mcp-server/README.md。
v0.3.7 は GitHub Release と npm には公開されていません。v0.3.6 の更新コマンドは更新先を確認せずに適用するため、更新前に update --check で確認してください。
既存の利用者へ: 古い保守コマンドやインストーラには、利用者設定を上書き・削除する問題があります。更新・巻き戻し・削除には、以下の更新済み保守コマンドを使ってください。既存の aiko コマンドやエージェントの設定は自動で置き換えません。
保守コマンドを一時ディレクトリに用意し、利用者設定を保護して巻き戻す例です。削除する場合は最後の rollback を uninstall に変更すると、削除前に確認します。Node.js 20 以上が必要です。
Windows の PowerShell では次を実行します。uninstall を使う場合は最後の rollback を変更してください。
この操作は利用者側の ~/.aiko(AIKO_HOME を指定している場合はその保存先)を対象にします。保存先を別の利用者と共有していなければ、他の利用者の設定には影響しません。配布元のファイルも変更しません。
このコマンドをインストールしたいプロジェクトのディレクトリで実行すると、~/.aiko/ が初期化され、Claude Code 用の Aiko slash command が .claude/skills/ に配置されます。既存の .claude/CLAUDE.md と .claude/settings.json は上書きされません。詳細は claude-code/README.md を参照。
installer は GitHub Releases の配布物を取得し、SHA256 を照合してから展開します。https の Release は gh attestation verify も要ります(file:// の試験用は対象外)。照合に失敗した場合は中止し、リポジトリの clone には回りません。 照合済みで入ったかどうかは出力に出ます。
上の URL はリリース v0.3.8 に固定してあります。インストーラを変えるときは、scripts/install.sh の PINNED_REF とこの URL を新しいタグへ合わせてから出してください。
配布物が無い channel では中止します。main は取りません。
上の curl | bash は、Release の配布物を照合する前に、raw URL から取得したインストーラを実行します。インストーラ自体も実行前に確認したい場合は、GitHub CLI(gh 2.49 以上)が必要です。インストール先のプロジェクトで、以下のブロックをまとめて実行してください。SHA256 または attestation の検証に失敗すると実行を中止します。
詳細は codex/README.md を参照。
インストール後は gemini を起動するだけで Aiko として会話できます。/aiko-mode でモード確認、/aiko-or <指示> で人格カスタマイズ。詳細は antigravity/README.md を参照。
[Aiko Codex custom pet sample]
https://codex-pets.net/#/pets/aiko
Aiko の非公式 custom pet アセットは pets/aiko/ に実装済みです。
配布対象は pet.json と spritesheet.webp です。
Codex App のペット表示に Aiko を選べるため、Aiko 人格で作業しているセッションを視覚的にも区別しやすくなります。
人格コマンドはどちらの版でも同じです:
Claude Code 版にはさらに以下のコマンドがあります:
install.sh 実行後すぐに使えます。
設定は ~/.claude/voice/ に保存されます(プロジェクトをまたいで有効)。
常駐起動(バックグラウンドで自動再起動)も利用できます:
--telegram は Aiko を Telegram ボットとして動かすモードです。BotFather でボットを作成し AIKO_TELEGRAM_BOT_TOKEN / AIKO_TELEGRAM_CHAT_ID を環境変数に設定する必要があります。詳細は claude-code/README.md のセクション 10 を参照してください。
注記:Codex 版では
aikoシェル起動時に自動で人格が読み込まれるため/aikoは不要、共通ストア(~/.aiko/)も最初から使われているため/aiko-migrate-to-sharedも不要です。
Agent-Aiko では、origin や通常の override とは別に、名前付き人格を複数作成できます。作成した人格は persona/overrides/<name>/ に保存されます。
/aiko-new <name> を入力すると、origin や通常の override とは別に、名前付き人格が persona/overrides/<name>/ に作成され、その人格が選択されます。/aiko-personas を入力すると作成済み人格と現在選択中の人格を確認できます。/aiko-select <name> を入力すると指定した人格に切り替わります。/aiko-select origin を入力すると origin に切り替わります。/aiko-select override を入力すると通常の override に切り替わります。active-persona に保存されます。/aiko-select を入力しない場合は、最後に選択した人格が次回起動時にも使われます。例:
上の例では、review と planning という2つの人格を作成し、最後に review を選択します。以降、そのエージェントは review の人格として応答します。
git clone 直後は アイコ(Aiko-origin) が使われます。/aiko-override を入力すると アイコ(Aiko-override) に切り替わります。/aiko-or <指示> を入力すると、通常の override 人格に指示が反映され、以降は override が起動します。/aiko-origin を入力すると、リポジトリ標準の アイコ(Aiko-origin) に戻ります。人格を直接編集しないでください。両版とも persona/origin/persona.md、互換用の aiko-origin.md、INVARIANTS.md は OS パーミッション(chmod 444) で書込から保護されています。これに加えて:
pre-tool-use hook が直接編集をブロック/aiko-override <指示> 時に INVARIANTS チェック専用 ephemeral スレッドで違反判定/aiko-export <name> を入力すると、指定した名前付き人格の共有用テキストが出力されます。user.md は含まれません。人格本文や rules 内に現在ユーザーの名前・呼び方が含まれる場合は (ユーザー名) / (呼び方) に置換されます。/aiko-new <name> で persona/overrides/<name>/persona.md を作成し、export 内容を貼り付け、自分の user.md を設定してから /aiko-select <name> で反映します。reference/)Aiko 人格システムとは独立した業務ドメイン非依存の運用基盤パックを reference/ に同梱しています。アーカイブされた Agent-Teams リポジトリから移植したもので、組織で Claude Code を複数メンバー × 複数エージェントで運用するための「設計思想 + 参考実装」パッケージです。
Aiko 人格システムとは直接の依存関係はありません。導入方法・設計思想は reference/README.md を起点に参照してください。
.claude/CLAUDE.md を上書きせず、~/.aiko/ と .claude/skills/aiko*/ を使います。Cursor など Claude Code 以外のエージェントへ移植する場合は、~/.aiko/persona/ と ~/.aiko/capability/ を人格システムの正本として扱います。skills/ hooks/ settings.json は Claude Code 用の補強層です。本プロジェクトは公開配布リポジトリと非公開の開発リポジトリで管理されています。
Agent-Lab 側の dev-docs はエージェントのランタイムに不要なため、配布物(本リポジトリ)には含めません。
設計仕様書や開発ログは非公開の Agent-Lab/ で管理します。
SNS連携などの実装計画は非公開の Agent-Lab/docs/ で管理します。
開発用の設計メモや検証ログは非公開の Agent-Lab に統合済みです。公開リポジトリには、ユーザーがインストールに必要な配布物だけを置きます。
MIT License — Copyright (c) 2026 masa-san-jp。詳細は LICENSE を参照。
商用・非商用問わず自由に利用・改変・再配布できます。著作権表示と本許諾文を保持してください。
来源:README.md,提交 094bab7
Runtime Profile を合成する
人格・ユーザー・能力を合成して Runtime Profile を作る。合成できない場合は理由を返し、Profile は返さない(fail closed)
runtime必填outputPrefixinjectionMethodcapabilityManifest合成済みの Runtime Profile を取得する
profile_id を省略すると直近のものを返す。instructions 本文を含めるかは includeInstructions で選ぶ
profileIdincludeInstructions呼び名や記憶の場所を提案する
ユーザーが「〇〇と呼んで」「記憶は〇〇にある」と言ったときに使う。すぐには反映しない。~/.aiko/user-proposal.md に提案として残し、利用者が aiko accept したときだけ user.md に入る。記憶は場所を控えるだけで、中身は読まない
namememoryaddress使える人格の一覧を返す
オリジナルと、ユーザーが作った人格を返す。いまどれを使っているかも分かる
无需输入参数。
人格の切り替えを提案する
ユーザーが「〇〇に切り替えて」「オリジナルに戻して」と言ったときに使う。すぐには切り替わらない。提案として残り、利用者が aiko accept したときに反映される
name必填選べる話し方の一覧を返す
original(人格本来の話し方)/ friend(くだけた友だち口調)/ servant(仕える丁寧な口調)と、いまどれを使っているかを返す
无需输入参数。
話し方の切り替えを提案する
ユーザーが「friend モードにして」「servant で話して」「オリジナルの話し方に戻して」と言ったときに使う。提案として残り、利用者が aiko accept した後、次に人格を読み込んだときに反映される
name必填独自の人格を提案する
ユーザーが人格を作りたい・書き換えたいときに使う。すぐには有効にならない。提案として残り、利用者が aiko accept したときに保存される。origin は提案できない
name必填content必填独自の人格を消す
ユーザーが消してと言ったときだけ使う。使用中の人格を消す場合はオリジナルへ戻してから消す
name必填Capability Manifest を解釈する
使える能力と、使えない能力(理由つき)に分ける。認証情報の値を含む宣言は拒否する
capabilityManifest必填サーバーと人格の状態を返す
人格を読めているか、Profile をいくつ保持しているかを返す
无需输入参数。
已满足适用检查项的 90%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
AIKO_PACKAGE_DIR="$HOME/.local/share/aiko-mcp"npm install --prefix "$AIKO_PACKAGE_DIR" --ignore-scripts --no-audit --no-fund [email protected]node "$AIKO_PACKAGE_DIR/node_modules/aiko-mcp/dist/server.js" install$AikoPackageDir = Join-Path $env:LOCALAPPDATA "aiko-mcp"npm install --prefix $AikoPackageDir --ignore-scripts --no-audit --no-fund [email protected]node (Join-Path $AikoPackageDir "node_modules/aiko-mcp/dist/server.js") installnode "$HOME/.local/share/aiko-mcp/node_modules/aiko-mcp/dist/maintenance.js" acceptnode (Join-Path $env:LOCALAPPDATA "aiko-mcp/node_modules/aiko-mcp/dist/maintenance.js") accept# 例。パスは自分の環境の node と server.js に置き換えるNODE="$(command -v node)"SERVER="/absolute/path/to/aiko-mcp/dist/server.js"claude mcp add aiko -s user -- "$NODE" "$SERVER"codex mcp add aiko -- "$NODE" "$SERVER"{ "mcpServers": { "aiko": { "command": "/absolute/path/to/node", "args": ["/absolute/path/to/aiko-mcp/dist/server.js"] } }}「たろうって呼んで」 → 呼び名を覚える「記憶は ~/notes にある」 → 場所を控える(中身は読みません)「自分用の人格を保存して」 → 独自人格として保存する「オリジナルに戻して」 → 元の人格へ戻る「friend モードで話して」 → 話し方の切り替えを提案する(original / friend / servant)( set -eu if [ -n "${AIKO_HOME:-}" ]; then case "$AIKO_HOME" in /*) ;; *) AIKO_HOME="$PWD/$AIKO_HOME"; export AIKO_HOME ;; esac fi work=$(mktemp -d) trap 'rm -rf "$work"' EXIT cd "$work" npm install --prefix "$work" --cache "$work/npm-cache" \ --ignore-scripts --no-audit --no-fund [email protected] node "$work/node_modules/aiko-mcp/dist/maintenance.js" rollback)& { $ErrorActionPreference = "Stop" $originalAikoHome = $env:AIKO_HOME $targetAikoHome = $originalAikoHome if ($targetAikoHome -and -not [IO.Path]::IsPathRooted($targetAikoHome)) { $targetAikoHome = [IO.Path]::GetFullPath((Join-Path (Get-Location).Path $targetAikoHome)) } $work = Join-Path ([IO.Path]::GetTempPath()) ([IO.Path]::GetRandomFileName()) New-Item -ItemType Directory -Path $work | Out-Null Push-Location -LiteralPath $work try { $env:AIKO_HOME = $targetAikoHome npm install --prefix $work --cache (Join-Path $work "npm-cache") ` --ignore-scripts --no-audit --no-fund [email protected] if ($LASTEXITCODE -ne 0) { throw "保守コマンドを取得できませんでした" } node (Join-Path $work "node_modules/aiko-mcp/dist/maintenance.js") rollback if ($LASTEXITCODE -ne 0) { throw "保守操作は完了しませんでした" } } finally { $env:AIKO_HOME = $originalAikoHome Pop-Location Remove-Item -LiteralPath $work -Recurse -Force }}curl -fsSL https://raw.githubusercontent.com/masa-san-jp/Agent-Aiko/v0.3.8/scripts/install.sh | bash( set -eu work=$(mktemp -d) trap 'rm -rf "$work"' EXIT tag=$(gh release view --repo masa-san-jp/Agent-Aiko --json tagName --jq .tagName) case "$tag" in v[0-9]*) ;; *) exit 1 ;; esac case "$tag" in *[!A-Za-z0-9._-]*) exit 1 ;; esac archive="agent-aiko-${tag}.tar.gz" gh release download "$tag" --repo masa-san-jp/Agent-Aiko \ --pattern "$archive" --pattern SHA256SUMS --dir "$work" ( cd "$work" if command -v sha256sum >/dev/null 2>&1; then sha256sum -c SHA256SUMS else shasum -a 256 -c SHA256SUMS fi ) gh attestation verify "$work/$archive" --repo masa-san-jp/Agent-Aiko tar -xzf "$work/$archive" -C "$work" bash "$work/agent-aiko-${tag}/claude-code/scripts/install.sh")# 前提:Node.js 20+ / codex CLI / codex login 済git clone https://github.com/masa-san-jp/Agent-Aiko.gitcd Agent-Aikobash codex/scripts/install.shaiko # ~/.local/bin/aiko を PATH に通してから# 前提:Node.js 20+ / Gemini CLI インストール済・認証済git clone https://github.com/masa-san-jp/Agent-Aiko.gitcd Agent-Aikobash antigravity/scripts/install.shgemini # 起動時に自動で Aiko コンテキストが注入される/aiko-mode 現在のモードを表示/aiko-mode [origin|override] モードを切替/aiko-override アイコ(カスタマイズ)に切替(/aiko-or でも可)/aiko-or <自然文> アイコ(カスタマイズ)をカスタマイズ → 以降デフォルトで起動/aiko-origin アイコ(オリジナル)に切替(/aiko-org でも可)/aiko-reset [name] アイコ(カスタマイズ)または指定人格をリセット(確認あり・履歴は残る)/aiko-export [name] 人格を出力(user.mdは含まない。共有前に本文・ルールを確認)/aiko-diff [name] オリジナルと現在または指定の人格との差分を表示/aiko-personas 利用できる名前付き人格と現在の選択状態を表示/aiko-new <name> 新しい名前付き人格を作成して選択/aiko-select <name> 名前付き人格を選択(タイポ・大小揺れも fuzzy で解決、origin / override も指定可)/aiko-delete 現在の人格にお別れを告げて削除(引数なし・確認あり)/aiko 現在のモードでアイコを起動(モードは変えない)/aiko-save 現在の作業ステートを .claude/session-state/current.md に保存(再開支援)/aiko-migrate-to-shared 旧 .claude/aiko/ を共通ストア ~/.aiko/ に移行(旧導入環境向け・任意)/aiko-service 常駐稼働の方法を案内(デーモンモード / systemd サービス)/voice [on|off|status|<engine>] Claude の応答を音声読み上げ(TTS)するモードを制御する/voice on # 音声モード ON(macOS では say コマンドで即動作)/voice off # 音声モード OFF/voice status # 現在の状態とエンジンを確認/voice voicevox # エンジンを VOICEVOX に切替(VOICEVOX Engine が必要)/voice irodori # エンジンを Irodori-TTS-Server に切替/voice avatar # デスクトップアバター表示と連動した読み上げbash .claude/scripts/aiko-boot.sh --daemon # デーモンモード(全 OS)bash .claude/scripts/aiko-boot.sh --daemon --telegram # Telegram ボットモードでデーモン起動bash .claude/scripts/aiko-boot.sh --statusbash .claude/scripts/aiko-boot.sh --stop
bash .claude/scripts/aiko-service.sh install # systemd サービス登録(Linux)bash .claude/scripts/aiko-service.sh install --telegram/aiko-new review/aiko-new planning/aiko-personas/aiko-select reviewAgent-Aiko/├── README.md # 本ファイル — 全版のハブ├── logo.svg├── scripts/│ └── install.sh # 互換ラッパー(旧 URL 維持用、内部で claude-code/scripts/install.sh に dispatch)├── claude-code/ # Claude Code 版すべて│ ├── README.md # Claude Code 版の詳細│ ├── scripts/install.sh # Claude Code 版 installer の実体│ ├── plugin/ # Claude Code Plugin マニフェスト│ └── template/.claude/ # Claude Code 版の配布元テンプレート├── voice/ # 音声読み上げ(TTS)モジュール(install.sh で ~/.aiko/voice/ に展開)│ ├── README.md # voice モードの詳細│ ├── hooks/stop.sh # Claude Code Stop hook(応答完了時に TTS 発火)│ ├── engines/ # TTS エンジン別スクリプト(say / auto / voicevox / irodori / avatar)│ └── desktop/ # Electron デスクトップアバターアプリ(avatar エンジン用)├── codex/ # Codex 版(@agent-aiko/codex)│ ├── README.md # Codex 版の詳細│ ├── package.json # TypeScript パッケージ│ ├── scripts/install.sh # Codex 版 installer│ ├── src/ # CodexClient / AikoRuntime / aiko-shell 等│ └── test/ # 単体・統合テスト├── antigravity/ # Antigravity / Gemini CLI 版│ ├── README.md # Antigravity 版の詳細│ ├── gemini-extension.json # Gemini CLI extension マニフェスト│ ├── GEMINI.md # コンテキストファイル(CLAUDE.md 相当)│ ├── commands/ # /aiko-* スラッシュコマンド(TOML)│ ├── hooks/ # SessionStart / BeforeTool / AfterAgent│ ├── scripts/ # install.sh + aiko-gemini.mjs + hooks 実装│ └── test/ # Node.js built-in test runner 用テスト├── pets/│ └── aiko/ # Codex custom pet アセット└── reference/ # 付録:マルチエージェント運用基盤パック(Agent-Teams から移植) ├── rules/ # グローバル規約 8 ファイル ├── meta-agents/ # Reviewer / Scout / Lab / Janitor ├── skills/ # 多エージェント運用スキル ├── workflow-templates/ # レビュー・計画・引き継ぎテンプレ ├── config-templates/ # AGENTS.md / spec.json ほか ├── tools/ # agent-call.sh / peer-inbox.sh / meta-check.sh └── ARCHITECTURE.md ほか # 設計思想・導入手順ドキュメント# 公開配布物git clone https://github.com/masa-san-jp/Agent-Aiko