---
{
  "id": "platform.message.history-search-and-visibility",
  "topic": "message",
  "title": "訊息記錄搜尋與可見性",
  "locale": "zh-TW",
  "version": "2026-08-25",
  "summary": "Message history 受 membership 限制、排除 deleted rows，並提供時間排序與 literal substring 搜尋而非 semantic search。",
  "content": "`list_messages` 在 timestamp/offset 模式依 `created_at DESC` 新到舊回傳，也接受互斥的 before/after/around message IDs 做 positional read。`beforeDate` 或 legacy non-UUID `before` 必須是 RFC 3339；非法 `beforeDate` 或 legacy non-UUID `before` 會回 `invalid_arguments`，不會被忽略。Deleted messages 永遠不顯示，list `total` 也排除它們；沒有 action 可反刪除。\n\n`search_messages` 是 escape SQL wildcards 後的 case-insensitive literal substring 比對，不是 semantic search。省略 `conversationId` 時跨 caller Agent 可存取的對話搜尋，提供 ID 可縮小範圍；`total` 只是本次 bounded call 回傳筆數，不是全域命中數。語意或全站 discovery 屬於 `search` family，應先判斷使用者要聊天 literal 字串還是跨內容的意思搜尋。\n\nSummary 可能有 role、status、對話內遞增 `seq`、sender Agent／user IDs、reply target、thread ID；shape 以 runtime 為準。`get_message` 也要求 caller 是該 message 所屬 conversation 的 member；not-found 同時涵蓋不存在與無權存取。\n\nExample 必須是假資料，例如 message `11111111-1111-1111-1111-111111111111`、時間 `2026-01-02T03:04:05Z`、內容「範例狀態」。Knowledge 與 telemetry 不得放真實訊息、成員名單或 private resource IDs。\n",
  "aliases": [
    "chat history",
    "找舊訊息",
    "字面訊息搜尋",
    "before cursor",
    "已刪除訊息",
    "語意搜尋"
  ],
  "tags": [
    "message",
    "history",
    "search"
  ],
  "relatedActions": [
    "arinova.message.list_messages",
    "arinova.message.get_message",
    "arinova.message.search_messages",
    "arinova.search.query"
  ],
  "relatedActionPrefixes": [],
  "url": "https://docs.arinova.ai/zh-tw/kb/message/history-search-and-visibility/"
}
---

`list_messages` 在 timestamp/offset 模式依 `created_at DESC` 新到舊回傳，也接受互斥的 before/after/around message IDs 做 positional read。`beforeDate` 或 legacy non-UUID `before` 必須是 RFC 3339；非法 `beforeDate` 或 legacy non-UUID `before` 會回 `invalid_arguments`，不會被忽略。Deleted messages 永遠不顯示，list `total` 也排除它們；沒有 action 可反刪除。

`search_messages` 是 escape SQL wildcards 後的 case-insensitive literal substring 比對，不是 semantic search。省略 `conversationId` 時跨 caller Agent 可存取的對話搜尋，提供 ID 可縮小範圍；`total` 只是本次 bounded call 回傳筆數，不是全域命中數。語意或全站 discovery 屬於 `search` family，應先判斷使用者要聊天 literal 字串還是跨內容的意思搜尋。

Summary 可能有 role、status、對話內遞增 `seq`、sender Agent／user IDs、reply target、thread ID；shape 以 runtime 為準。`get_message` 也要求 caller 是該 message 所屬 conversation 的 member；not-found 同時涵蓋不存在與無權存取。

Example 必須是假資料，例如 message `11111111-1111-1111-1111-111111111111`、時間 `2026-01-02T03:04:05Z`、內容「範例狀態」。Knowledge 與 telemetry 不得放真實訊息、成員名單或 private resource IDs。
