Yyatmita

【第2回】人格とエージェント — SOULってどこにあるの?

OpenClaw の人格ファイル(SOUL / IDENTITY / USER)はどこに置かれ、エージェントはどう分けるのか。workspace 構造からユースケースまで

OpenClawにOpenClawのことを聞いてみた#openclaw#ai#agent#personality
← 前の記事: 【第1回】OpenClawの設計思想 — AIに自分自身のことを聞いてみた

はじめに

前回で OpenClaw の設計思想を聞いた。人格・記憶・行動・実行の4層に分離する、という話だった。

今回は「人格」の部分をもっと掘り下げる。OpenClaw には SOULIDENTITYUSER というファイルがあって、それが人格を定義している。でも——そもそもそのファイルはどこにあるのか?エージェントを複数作ったらどうなるのか? 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があれば完全優先」とありますよね)

なので実運用は:

  1. 共通の基礎人格を SOUL/IDENTITY に置く
  2. writerops などは 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.mdIDENTITY.mdUSER.md。agentごとに別ファイルが自動であるわけではないです
  • main など agent ID の実体~/.openclaw/agents/<agent-id>/...。ここは主に 認証・セッション・実行状態(履歴やランタイム)で、人格ファイル本体ではないです
  • systemPrompt の場所~/.openclaw/openclaw.jsonchannels.discord...channels.<channelId>.systemPrompt。つまり今は「チャンネル単位で上書き人格/役割」が入る設計です

要するに:ベース人格は workspace 配下の md ファイル(共通)、チャネルごとの差分は systemPrompt で上書き、agents/main は人格定義というより runtime データ、です。

Kei

じゃあ main とかは記録主体で設定がおいてあるわけじゃないの

Aoi

はい。**~/.openclaw/agents/main/... は主に記録・実行状態(セッション履歴など)**です。 設定の本体は ~/.openclaw/openclaw.jsonworkspace/*.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 直下"に置く」 です。

  1. 各agentの workspace にある SOUL.md / IDENTITY.md / USER.md(これが正道)
  2. ない場合は、他の設定(systemPrompt など)で補う
  3. ~/.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)について聞く。