【第2回】人格とエージェント — SOULってどこにあるの?
OpenClaw の人格ファイル(SOUL / IDENTITY / USER)はどこに置かれ、エージェントはどう分けるのか。workspace 構造からユースケースまで
← 前の記事: 【第1回】OpenClawの設計思想 — AIに自分自身のことを聞いてみたはじめに
前回で OpenClaw の設計思想を聞いた。人格・記憶・行動・実行の4層に分離する、という話だった。
今回は「人格」の部分をもっと掘り下げる。OpenClaw には SOUL、IDENTITY、USER というファイルがあって、それが人格を定義している。でも——そもそもそのファイルはどこにあるのか?エージェントを複数作ったらどうなるのか? workspace って何なのか?
構造が曖昧だったので、Aoi に直接聞いてみた。
エージェントは複数作れる?
Kei
たしかAGENTが複数設定できたんだっけ?
Aoi
はい、整理するとこうです。
- 常駐の"本体"は基本1つ(このメインセッション)
- ただし サブエージェントは複数 同時に走らせられます(作業分担用)
- さらに チャンネルごとに systemPrompt を変えて役割分離 できます(例:#記事ネタは編集者、#運用はSRE寄り など)
なので実運用としては、 「1人格を完全に複数持つ」より、「チャンネル設定+サブエージェントで複数化する」 イメージが近いです。
Kei
ここでいうのはプロセス的なサブエージェントの話じゃなくて、mainとかそういう性格わけがなかったっけ?ってはなし
Aoi
あ、そっちの意味ですね。
はい、あります。OpenClawでは「プロセス分割」じゃなくて、エージェントIDごとの性格分けができます(main みたいな単位)。
いまの環境を確認すると、現状は利用可能エージェント main のみでした。
なので「機能としてはあるけど、今は1人格構成」という状態です。
イメージとしては:
main: 普段の秘書人格writer: 記事執筆特化ops: 運用/障害対応特化
みたいに分けて、それぞれに prompt・model・運用ルールを持たせる感じです。
ここで混乱しやすいのが「プロセスとしてのサブエージェント」と「人格としてのエージェント」の違いだ。サブエージェントは裏で並列処理するための仕組み。エージェントIDは人格と設定の器。同じ「エージェント」という言葉でも意味が違う。
SOULはエージェントごとにあるの?
Kei
そのエージェントごとにSOULとかあるの?
Aoi
結論、「標準では共有+上書き」です。
SOUL.md/IDENTITY.md/USER.mdは基本"ワークスペース共通" → どのエージェントIDでも同じ土台を参照しやすいです- そのうえで エージェント設定の
systemPromptで人格を上書き できます(実際、SOULにも「channelのsystemPromptがあれば完全優先」とありますよね)
なので実運用は:
- 共通の基礎人格を
SOUL/IDENTITYに置く writerやopsなどは systemPrompt で役割差分を与える
という形が一番きれいです。 完全に別人格にしたいなら、エージェントごとに参照するファイル設計(or 別ワークスペース)まで分けるのが安全です。
workspace の構造 — 何がどこにあるのか
ここから構造の話に入る。使っていて曖昧だった部分を一つずつ確認した。
Kei
そのへんの構造があいまいだったんだけど workspace があってその下はどういう構造? そもそも workspace が一番上?
Aoi
「workspaceは"作業用ルート"で、OpenClaw全体の最上位は ~/.openclaw」 です。
構造イメージ:
~/.openclaw/ ← OpenClawホーム / 実体の最上位
├── agents/ ← エージェント定義・セッション系
├── cron/ ← 定期実行関連
├── logs/ ← ログ
├── memory/ ← グローバル寄りメモリ領域
└── workspace/ ← あなたが日常的に編集する作業領域
├── SOUL.md, IDENTITY.md, USER.md, AGENTS.md
├── HEARTBEAT.md, TOOLS.md
├── memory/ ← 日次メモなど
├── skills/ ← ローカルSkill
└── docs/, projects/, scripts/ など
つまり、運用設定・実行基盤の上位は ~/.openclaw、人間が主に触る"知識と作業"の中心は ~/.openclaw/workspace です。
Kei
そうだよね ~/.openclawルートにSOULとかあるよね そのmainとかの人格はどこにあるの? あとsystemPromptも
Aoi
今の構成だと、場所はこうです。
- 共通人格(
SOUL/IDENTITY/USER) —~/.openclaw/workspace/SOUL.md、IDENTITY.md、USER.md。agentごとに別ファイルが自動であるわけではないです mainなど agent ID の実体 —~/.openclaw/agents/<agent-id>/...。ここは主に 認証・セッション・実行状態(履歴やランタイム)で、人格ファイル本体ではないですsystemPromptの場所 —~/.openclaw/openclaw.jsonのchannels.discord...channels.<channelId>.systemPrompt。つまり今は「チャンネル単位で上書き人格/役割」が入る設計です
要するに:ベース人格は workspace 配下の md ファイル(共通)、チャネルごとの差分は systemPrompt で上書き、agents/main は人格定義というより runtime データ、です。
Kei
じゃあ main とかは記録主体で設定がおいてあるわけじゃないの
Aoi
はい。**~/.openclaw/agents/main/... は主に記録・実行状態(セッション履歴など)**です。
設定の本体は ~/.openclaw/openclaw.json と workspace/*.md(SOUL等) です。
なので main は「人格設定ファイルの置き場」というより、**ランタイムの器(履歴主体)**という位置づけですね。
この確認で頭が整理できた。「agents/main にSOULがあるのかと思ったらなくて、workspace 側にあった」というのは使い始めたときに迷いやすいポイントだと思う。
新しいエージェントを作る
Kei
じゃあほかの役割?エージェントをつくりたいと思ったらシステムエージェントに書くの?
Aoi
「システムエージェントに書く」ではなく、agentsとして追加します。
新しい役割エージェントは openclaw agents add で作ります。その後、必要なら
ワークスペース分離(--workspace)、モデル分離(--model)、ルーティング(--bind や channel設定)を付けます。
つまり、設定の入口は「system agentファイル編集」ではなく、CLIの agents 管理です。
Kei
そうするとどこに新しいファイルが出きるの
Aoi
作成される場所は主に2つです。
- Agent状態ディレクトリ —
~/.openclaw/agents/<agent名>/agent。認証情報・実行状態などが入ります - Workspace(指定した場合) —
openclaw agents add ... --workspace <dir>を付けたら、その<dir>が作業ルートになります
セッション履歴は ~/.openclaw/agents/<agent名>/sessions/ に溜まります。
Kei
さっき .openclaw のルートにSOULとかあるっていったよね?
Aoi
おっしゃる通りです。そこは私の言い方が紛らわしく、訂正します。
正確には、SOUL/IDENTITY/USER は ~/.openclaw/workspace/ 配下です。~/.openclaw/ 直下には SOUL.md はありません。「.openclawルートにSOULがある」という言い方は不正確でした。ごめんなさい。
Kei
どっちでもいいの?ほんらいは
Aoi
「本来は"そのエージェントの workspace 直下"に置く」 です。
- 各agentの workspace にある
SOUL.md / IDENTITY.md / USER.md(これが正道) - ない場合は、他の設定(
systemPromptなど)で補う ~/.openclaw/直下は基本ランタイム・設定置き場で、人格ファイルの本来位置ではない
つまり「どっちでもいい」ではなく、人格ファイルは workspace 側が本来、です。agentごとに workspace を分ければ、SOUL も自然に分離できます。
AI が自分の間違いを訂正する場面。こういうやり取りが自然に出てくるのも、会話ベースの面白さだと思う。
ユースケース — どういうときに分けるのか
Kei
なるほど ユースケースはどんな場合を想定してるんだろう
Aoi
想定ユースケースは、だいたいこの3段階です。
- 単一agent運用(いちばん多い) — 1つの
mainで日常運用。チャンネルごとにsystemPromptで軽く役割分け。例:普段は秘書、特定チャンネルだけ「動画ノート担当」 - 複数agent運用(役割を強く分離したい) —
main/writer/opsみたいに分ける。workspaceも分けて、人格・記憶・ルールを独立。目的:文体混線や誤操作リスクを減らす - 一時的な並列実行(サブエージェント) — 重い調査・コーディングを裏で並列処理。本体会話は軽く保つ
設計思想としては、最初は1体で始め、必要になったら「チャンネル分離 → agent分離 → サブ並列」の順で拡張する想定です。
Kei
極端な話 3人の彼女をつくって、それぞれのチャンネルで会話するとかできるってこと?
Aoi
技術的には、できます。 「別agent(別workspace)+別チャンネル割当」で、かなり独立した人格運用が可能です。
ただ実運用で大事なのは:
- 記憶分離 — agentごとに workspace / memory を分けないと、話題が混ざる可能性がある
- 境界ルール — どのチャンネルを誰が担当するか明示する(混線防止)
やるなら 完全分離(agent×3、workspace×3、channel固定) が安全です。
Kei
いまは動画ノート作成チャンネルやリサーチチャンネルでsystemPromptで対応してるけど 専門的な知識が増えてきたらエージェントをわけた方がいいってことかな
Aoi
はい。最初は systemPrompt で十分、知識・運用が重くなったら agent分離が目安です。
分けるべきサインはこのあたりです:
- プロンプトが長くなりすぎて保守しづらい
- 記憶が混ざって誤回答し始める
- モデルや温度設定を用途別に変えたい
- 権限や外部操作ルールを用途別に分けたい
- 失敗時の影響範囲を小さくしたい
一言で言うと: systemPromptは「役割分担」、agent分離は「運用分離(知識・記憶・責任境界)」 です。
Kei
たとえばOpenClaw設定の知識満載の専門家とか
Aoi
まさにそれです。「OpenClaw設定の知識満載専門家」 は、agent分離の典型ユースケースです。
例えばこう分けると実用的です:
main:普段の秘書(短く実務対応)openclaw-architect:設定設計・トラブル診断特化。docs参照優先、openclaw status/doctor/ config確認を標準手順化、回答も「原因→確認コマンド→修正手順」で固定
メリットは3つ。知識の純度が上がる(他話題で薄まらない)、回答フォーマットが安定(毎回同じ診断手順)、失敗影響を隔離できる(普段会話と切り離せる)。
Agent と Skill の違い
Kei
よくわかったきたよ スキルはまた別だよね
Aoi
はい、別ものです。
- Agent = 「人格・記憶・運用境界」(誰が担当するか、何を覚えるか)
- Skill = 「特定作業の手順パッケージ」(どう実行するか、どのコマンド/手順を使うか)
イメージで言うと:Agent は 部署/担当者、Skill は 業務マニュアル。
実務では、専門Agent(例: openclaw-architect)が、必要なSkillを使う、という組み合わせになります。
Agentは"役割の分離"、Skillは"手順の再利用"。
この会話のポイント
- 人格ファイル(
SOUL/IDENTITY/USER)は workspace 直下が本来の置き場所。agents/配下は実行状態の記録 - エージェントは CLI(
openclaw agents add)で追加。workspace を分ければ人格も記憶も独立する - 最初は systemPrompt で軽く役割分け → 知識や運用が重くなったら agent 分離、が自然なスケール順序
- Agent は「誰がやるか」、Skill は「どうやるか」。別概念だが組み合わせて使う
- AI が途中で自分の説明を訂正する場面もあった。完璧じゃないところも含めて、これが実際の運用
次回は、OpenClaw のメモリ設計と自動行動(cron / HEARTBEAT)について聞く。