Prompt 設計(トップダウン)
以下は現行コードの実際の順序です。
トップダウン図
text
PromptSpecWithSkills(...)
|
v
ApplyPersonaIdentity(...)
|
v
AppendLocalToolNotesBlock(...)
|
v
AppendPlanCreateGuidanceBlock(...)
|
v
AppendTodoWorkflowBlock(...)
|
v
Channel PromptAugment(...)
|
v
AppendMemorySummariesBlock(...)
|
v
BuildSystemPrompt(...) -> system prompt テキスト1) Identity 層
ベースは agent.DefaultPromptSpec()。
次にローカル persona ファイルで上書きされる場合があります。
file_state_dir/IDENTITY.mdfile_state_dir/SOUL.md
適用関数は promptprofile.ApplyPersonaIdentity(...)。
2) Skills 層
skillsutil.PromptSpecWithSkills(...) は skill のメタ情報だけを注入します。
- 名前
SKILL.mdパス- 説明
auth_profiles(ある場合)
実際の SKILL.md 本文は必要時に read_file で読みます。
3) Core ポリシーブロック
task runtime では次の順で追加されます。
SCRIPTS.mdのローカルツールノートplan_createガイダンス- TODO ワークフローポリシー
4) チャネルブロック
次にチャネルごとのブロックを追加します。
- Telegram
- Slack
- LINE
- Lark
5) Memory 注入ブロック
memory が有効な場合、memory summary ブロックを追加します。
6) システム Prompt のレンダリング
agent.BuildSystemPrompt(...) が agent/prompts/system.md を使って以下を統合します。
- identity
- skills メタ情報
- 追加ブロック
- ツール要約
- 追加ルール
7) LLM に送るメッセージ順
engine.Run(...) の順序:
text
[system] レンダリング済み system prompt
->
[user] mister_morph_meta(任意)
->
[history] system 以外の履歴
->
[user] current message または raw task- system prompt
- runtime metadata(
mister_morph_meta) - history(system 以外)
- current message または raw task
実務上の優先順位
Prompt を調整する時は次の順で拡張するのが安全です。
IDENTITY.md/SOUL.mdSKILL.md+skills.loadSCRIPTS.md- runtime prompt augment
agent.WithPromptBuilder(...)(完全カスタム時のみ)