astrbot

Identity

  • Names: app.astrbot; short alias astrbot.
  • Native format: astrbot-data-v4-sqlite, conversations with rewritten JSON content, provider statistics and platform message history.
  • Session ID: Public UUID conversations.conversation_id, no namespace. inner_conversation_id is a database key only.
  • Notes: role: _checkpoint with content.id is an internal marker stripped before replay, not a workspace checkpoint. token_usage > 0 measures retained context; zero is unset/estimated on demand, not measured usage. provider_stats.conversation_id supplies session ownership. Each stats row may aggregate several calls, so it is a usage summary. Serialize content, stats by native ID, then mutable settings. Platform/user/persona fields do not prove channel or human authorship.

Position basis

Use only positions established by the stated format and mapping evidence. Current-state rows without transcript positions form the snapshot tail. A protocol commit boundary takes precedence over physical EOF; uncommitted bytes are not a gap.

Destinations

astrbot: native facts without a standard field

  • Entity keys and links: Unique message id or message_id supplies identity; otherwise use capture-scoped array position. tool_calls[].id joins result tool_call_id only when unique. Content-array order is preserved.
  • Lineage: No qualified parent, child, copy or root field. platform_message_history.llm_checkpoint_id can be shared/copied and does not prove session or message ownership.

Usage

Select one report per native accounting identity only when this entry establishes that identity. Keep unjoinable or overlapping reports as native evidence. Declare when semantic coverage is incomplete. Schema defaults and placeholder zeros are not reported usage. Backend inclusion rules require evidence; do not infer them from a model name.

Lane and unassigned facts

Facts without established session ownership use manifest _meta["app.astrbot/unassigned"] with the common shape. A selection may keep these facts with any subset of sessions, including an empty subset, but must not imply that a session owns them. State the selection policy in the export report.

Losses

Declare every applicable loss under ASR-157. Missing model rendering, accounting joins, lineage or exact context boundaries remain losses when this entry does not qualify them. Unknown ownership is not itself lost data. Omitted unassigned facts use a documented vendor loss or report, not a new core category.

Evidence

Basis: source-verified at AstrBotDevs/AstrBot commit c4616578d610c237766a5d497f9db4b607d1c75b (database models, message types and _save_to_history). Native SQLModel/SQLite persistence probes; no chat-adapter or model runtime qualification. No package version is established. Evidence applies only to the named formats and explicit mappings above. A real capture covers only the behavior that was exercised. A writer probe run without a model covers persistence only, not model or tool execution. Authored tests do not qualify an agent version. Unlisted formats and link mappings remain unqualified.