# Agent 人格

Session 人格如何定義、如何渲染進 system prompt，以及存放在哪裡。

## Agent 人格

每個 session 有自己的人格，存放於 `session` 資料列而非檔案：

| 欄位 | 說明 |
|---|---|
| `name` | 顯示名稱。自 v1.0.11 起留空時不再補成 session ID —— 空字串、與 session ID 相同、或以 `tg-` / `dc-` 開頭都視為自動命名，第一次產生標題時會被取代 |
| `self_id` | 正規化為小寫，最多 32 個 ASCII 字母、數字、`_` 或 `-`；非空值須跨 session 唯一（重複回 409）；作為 `subagents` `self_id` 參數的查找鍵 |
| `role` | 人格內文，每一輪渲染進 system prompt 的 `## Bot Persona` 區塊。自 v1.0.11 起該區塊標示的操作身分取自 `self_id` 而非 `name`。v1.1.0 由 `rule` 更名：`GET` 同時回傳 `role` 與 `rule`，`POST` 仍接受 `rule`（兩者同時送出時以 `rule` 為準） |
| `model` / `reasoning` | Session 模型與 reasoning 等級；`model: ""` 重設為 `auto`。v1.1.0 起 `reasoning` 也接受 `auto`，每輪依 dispatcher 判定的工作類型決定等級，取代已移除的全域 `auto_reasoning` 開關 |

`name`、`self_id` 與人格可在 TUI 以 `/session` 編輯（`/session name|id|role`；`/bot` 於 v1.0.22 併入），其餘欄位以 `GET` / `POST` `/v1/session/:id` 編輯——單一端點涵蓋整個 session 物件，`POST` 為部分更新。

## 人格存放位置

Session 設定存放在 `~/.config/agenvoy/.store/history.db` 的 `session` 表，不再是 per-session 檔案：`name`、`self_id`、`model`（預設 `auto`）、`reasoning`（等級，v1.1.0 起亦可為 `auto`）、`role`（人格內文；v1.1.0 由 `rule` 更名——舊的 `rule` 欄位保留，寫入時同步寫入、讀取時作為備援），以及聊天綁定（`chat_id`、`guild_id`、`channel_id`、`user_id`）。`self_id` 會正規化為小寫，只接受最多 32 個 ASCII 字母、數字、`_` 或 `-`；非空值必須唯一。

人格內文會在每一輪渲染進 system prompt 的 `## Bot Persona` 區塊，自 v1.0.11 起該區塊標示的操作身分取自 `self_id`。編輯走 TUI `/session role`（原 `/bot`）或 `GET` / `POST` `/v1/session/:id`。

Daemon 啟動時，舊版的 per-session `bot.json`、`bot.md`、`config.json`、`status.json`、`usage.log` 與 `summary.meta.json` 會遷移進 SQLite，之後不再寫入。`state` 表本身已於 v0.35.3 移除——session 的存活狀態改為 ToriiDB online marker，不再是儲存的資料列。
