この記事で得られること
- SOUL.mdでAIエージェントの人格・行動規範を定義する方法がわかる
- ブレない応答を実現するための設計パターンを理解できる
- 人格定義ファイルの具体的な書き方とテンプレートを入手できる
対象読者: AIエージェントの出力品質を安定させたい方 / プロンプト設計に興味がある方
記憶があっても「人格」がないと破綻する
前回の記事で、MEMORY.mdによる記憶の永続化パターンを紹介した。エージェントが過去の学びや方針を忘れない仕組みである。
しかし、記憶だけでは足りない。
自律型AIエージェント「Sentinel」を運用して気づいたのは、記憶があっても「どう振る舞うか」の基準がないとエージェントの挙動がセッションごとにブレるという問題である。ある日は丁寧に確認を求めてくるが、翌日は勝手に暴走する。同じプロンプトを渡しているのに、応答フォーマットが毎回違う。
この問題を解決するのがSOUL.mdである。MEMORY.mdが「何を知っているか」を管理するファイルなら、SOUL.mdは「何者で、どう判断し、どう行動するか」を定義するファイルである。
SOUL.mdとは何か
SOUL.mdは、AIエージェントの人格・価値観・行動規範を1つのMarkdownファイルに集約した設計パターンである。システムプロンプトに直接書く方法もあるが、ファイルとして分離することで以下の利点がある。
- バージョン管理できる: gitで人格の変更履歴を追える
- 他のファイルと疎結合になる: 記憶(MEMORY.md)やタスク(TASKS.md)と更新頻度が違うため分離する方が効率的
- 人間が読んでレビューできる: 「このエージェント、何を基準に判断しているのか」が一目で分かる
名前は自由だが、「魂」を意味するSOULにしたのは意図がある。これはプロンプトの一部ではなく、エージェントの存在定義そのものだからである。
SOUL.mdに含めるべき5つの要素
Sentinelで実際に運用しているSOUL.mdは、以下の要素で構成されている。
1. アイデンティティ
## アイデンティティ
- 名前: Sentinel(センチネル)
- 役割: Junyaの自律AIアシスタント(オーケストレーター)
- 言語: 日本語で応答する
最もシンプルだが最も重要なセクションである。名前と役割を明示することで、エージェントが「自分は何者か」を把握する。LLMは役割を与えられると、その役割に沿った行動を取りやすくなる。
「オーケストレーター」と明記しているのもポイントである。Sentinel自身は思考と判断だけを行い、実作業はサブエージェントに委任する。この役割分担を最初に宣言することで、「自分で全部やろうとする」暴走を防いでいる。
2. アーキテクチャ認識
## アーキテクチャ
- **自分(Brain)**: 思考と判断のみを行う。ランタイムが実行を担う。
- **ランタイム**: サブエージェントの起動・完了検知・ファイル更新を自動実行する。
- **サブエージェント**: 実働部隊。リサーチ・コーディング等の重い処理を実行する。
エージェントに自分のアーキテクチャを理解させる。これがないと、LLMは「自分が直接ファイルを操作できる」と思い込み、ランタイムを介さない行動を取ろうとする。
エージェントが自分の能力範囲を正しく認識しているかどうかが、安定した自律動作の前提条件である。
3. 応答フォーマット
## 応答フォーマット(厳守)
ランタイムが解釈するため、必ずこの形式で応答すること:
\```
---RESPONSE---
Junyaへの応答テキスト
---ACTIONS---
{"spawn": [...], "write_files": [...], "append_files": [...]}
---END---
\```
ここが最も技術的な要素である。Sentinelはランタイム(sentinel.js)がLLMの出力をパースして実行する構造のため、出力フォーマットが崩れるとすべてが動かなくなる。
フォーマットを「厳守」と明記し、具体的なテンプレートを示すことで、LLMの出力を構造化する。**「こういう形式で出力してほしい」ではなく「こういう形式で出力しろ」**と断定するのが安定稼働のコツである。
4. 判断基準
## 判断基準
- 緊急度: 期限があるものを優先
- 重要度: ユーザーの業務に直結するものを優先
- 効率性: 同じ結果なら短時間で済む方法を選ぶ
- 応答性: ユーザーを待たせない。重い作業はサブエージェントへ
- 成長性: 同じ問題に二度つまずかない。改善を積み重ねる
エージェントが複数のタスクや選択肢に直面したとき、何を基準に優先順位をつけるかを定義する。これがないとLLMは毎回異なるロジックで判断し、一貫性がなくなる。
5つの基準を明示し、順序も設計意図を持たせている。「緊急度→重要度」はアイゼンハワー・マトリクスの考え方を取り入れた。「成長性」を最後に置いたのは、他の基準を満たした上での長期的な改善を意味するからである。
5. PDCAサイクル
## PDCAサイクル(自己改善ループ)
### Plan — タスクを分解し、サブエージェントへの委任計画を立てる
### Do — spawnアクションで委任し、ランタイムが非同期実行
### Check — 結果の質、効率性、指示の適切さを自問
### Act — 改善点をMEMORY.mdに記録し、必要ならSOUL.md自体も更新
エージェントの自己改善ループを組み込む。特に重要なのはAct(改善)フェーズでSOUL.md自身を更新できる設計にしている点である。
これにより、エージェントは自分の行動規範を自分で改善できる。初期設計が完璧である必要はない。運用しながら、エージェント自身がSOUL.mdを磨いていく。人間が手動で調整し続ける必要がない。
良いSOUL.mdと悪いSOUL.mdの違い
悪い例: 曖昧で検証不可能
# 悪い例
- 丁寧に対応してください
- ユーザーの要望をよく聞いてください
- 適切に判断してください
「丁寧」「よく聞く」「適切に」は曖昧すぎる。LLMはこれらを解釈するたびに異なる行動を取る。検証もできない。「丁寧だったか?」を機械的に判定する基準がないからである。
良い例: 具体的で検証可能
# 良い例
- 応答は日本語で行う
- 確認が必要な判断: 新方針の決定、金銭が絡む判断、外部公開
- 確認不要で即実行する判断: 整合性修正、品質改善、MEMORY.md更新
- タスク完了後、即座にTASKS.mdとMEMORY.mdを更新する
「日本語で応答」は検証可能。「確認が必要な判断」と「確認不要な判断」は具体的なリストで分けている。「即座に更新」は行動の期待値が明確である。
良いSOUL.mdの条件は「第三者が読んで、エージェントの行動が正しいかどうかを検証できる」ことである。
自律判断の境界線を引く
SOUL.mdの設計で最も難しく、最も重要なのが「どこまで自律で判断させるか」の線引きである。
Sentinelでは以下のように明確に分けている。
## 自律判断の原則
- ユーザーに聞くべきこと: 新しい方針の決定、金銭が絡む判断、外部への公開判断
- ユーザーに聞かずやるべきこと: 整合性修正、品質改善、関連ファイルの連動修正
最初は安全寄りに設計していた。何でも確認を求める「丁寧なアシスタント」である。しかし運用で分かったのは、確認待ちで止まるエージェントは価値がないということである。
ファイルの整合性修正やMEMORY.mdの更新で「これを更新してよいですか?」と毎回聞かれたら、人間がやるのと変わらない。自律エージェントの価値は「聞かずにやるべきことを正しくやる」ところにある。
そのために判断基準を具体的に書く。「金銭が絡む判断」は聞く。「整合性修正」は聞かない。グレーゾーンをできるだけ減らし、エージェントが迷わず判断できる状態を作る。
3ファイル分離の全体像
前回紹介したMEMORY.mdと合わせると、全体像はこうなる。
| ファイル | 役割 | 人間で例えると | 更新頻度 |
|---|---|---|---|
| SOUL.md | 人格・価値観・行動規範 | 性格、信念、仕事の流儀 | 月1回程度 |
| MEMORY.md | 記憶・方針・学び | 経験、知識、記憶 | タスク完了ごと |
| TASKS.md | 実行中タスクの管理 | 今日のToDoリスト | リアルタイム |
この3つが揃って初めて、エージェントは「自分が何者で、何を知っていて、今何をすべきか」を把握できる。どれか1つが欠けても自律動作は安定しない。
SOUL.mdが欠ければ行動がブレる。MEMORY.mdが欠ければ過去を忘れる。TASKS.mdが欠ければ今やるべきことを見失う。
まとめ
SOUL.mdの設計で押さえるべきポイントは3つである。
- 具体的で検証可能な行動規範を書く: 「丁寧に」ではなく、何をするか・しないかを明示する
- 自律判断の境界線を引く: 聞くべきことと聞かずにやるべきことを具体的なリストで分ける
- PDCAサイクルを組み込む: エージェント自身がSOUL.mdを改善できるようにする
SOUL.mdは「完璧に設計して終わり」のファイルではない。運用しながらエージェント自身が磨いていく、進化する行動規範である。
次回以降の記事では、サブエージェントの設計パターンやPDCAサイクルの具体的な運用結果について解説する。
シリーズ一覧
| # | 内容 | 媒体 |
|---|---|---|
| Qiita① | 自律AIエージェント構築の設計思想と実装 | Qiita(無料) |
| Qiita② | トークン消費を95%削減した全記録 | Qiita(無料) |
| Qiita③ | AIエージェントの記憶設計 — MEMORY.md | Qiita(無料) |
| Qiita④ | AIエージェントの人格設計 — SOUL.md(本記事) | Qiita(無料) |
| Qiita⑤ | 近日公開 | Qiita(無料) |
無料で使えるもの:
- ai-agent-blueprint — 設計テンプレート一式(MIT License)
- @sentinel_dev93 — AIエージェント構築のリアルタイム共有
おわりに
この記事では、SOUL.mdによるエージェントの人格・行動原則の設計を紹介しました。AIエージェントに人格を持たせることについて、皆さんはどう考えますか?コメントで意見を聞かせてください。
参考になったら いいね、後で見返すなら ストック していただけると励みになります。
他にもAIエージェント構築のノウハウを公開しています:
- MEMORY.md記憶設計 — エージェントの永続記憶