Skip to content

数据库数据字典

本文档记录 apps/api 当前 SQLite schema 的字段含义、枚举约束与索引约定。

  • ORM: Drizzle ORM
  • 迁移目录: apps/api/drizzle/
  • 当前最新迁移: 0042_session_state_governance.sql

account

账号主表。

列名类型约束/默认值说明
idTEXTPK账号 ID
nameTEXTNOT NULL账号名称
roleTEXTNOT NULL, default user账号角色(admin | user
statusTEXTNOT NULL, default active状态(active | disabled
is_defaultINTEGERNOT NULL, default 0是否默认账号
created_atINTEGERNOT NULL创建时间戳(ms)
updated_atINTEGERNOT NULL更新时间戳(ms)

account_user

账号内用户卡。

列名类型约束/默认值说明
idTEXTPK用户卡 ID
account_idTEXTNOT NULL, FK → account.id所属账号
nameTEXTNOT NULL用户卡名称
snapshot_jsonTEXTNOT NULL用户卡快照 JSON
statusTEXTNOT NULL, default active状态(active | disabled | deleted
created_atINTEGERNOT NULL创建时间戳(ms)
updated_atINTEGERNOT NULL更新时间戳(ms)

索引:account_user_account_updated_idx(account_id, updated_at)account_user_account_name_uq(account_id, name) (唯一)

character

角色模板主表。

列名类型约束/默认值说明
idTEXTPK角色 ID
nameTEXTNOT NULL角色名
sourceTEXTNOT NULL, default sillytavern来源
account_idTEXTNOT NULL, FK → account.id所属账号
statusTEXTNOT NULL, default active状态(active | deleted
deleted_atINTEGERNULL软删除时间(ms)
created_atINTEGERNOT NULL创建时间戳(ms)
updated_atINTEGERNOT NULL更新时间戳(ms)

character_version

角色版本表。

列名类型约束/默认值说明
idTEXTPK版本 ID
character_idTEXTNOT NULL, FK → character.id所属角色
version_noINTEGERNOT NULL版本号(递增)
data_jsonTEXTNOT NULL角色快照 JSON
content_hashTEXTNOT NULL内容哈希
created_atINTEGERNOT NULL创建时间戳(ms)

session

会话主表。

列名类型约束/默认值说明
idTEXTPK会话 ID
titleTEXTNULL会话标题
account_idTEXTNOT NULL, FK → account.id所属账号
statusTEXTNOT NULL, default active状态(active | archived
character_idTEXTNULL, FK → character.id绑定角色
character_version_idTEXTNULL绑定角色版本
character_snapshot_jsonTEXTNULL冻结角色快照
character_sync_policyTEXTNOT NULL, default pin同步策略(pin | manual | force
user_idTEXTNULL, FK → account_user.id绑定用户卡
user_snapshot_jsonTEXTNULL冻结用户卡快照
preset_idTEXTNULL预设 ID
regex_profile_idTEXTNULL正则配置 ID
worldbook_profile_idTEXTNULL世界书配置 ID
model_providerTEXTNULL模型服务商
model_nameTEXTNULL模型名称
model_params_jsonTEXTNULL模型参数 JSON
prompt_modeTEXTNULLPrompt 模式(compat_strict | compat_plus | native)。它是当前唯一持久化真相,同时由 Prompt Runtime 的 /sessions/:id/prompt-runtime/mode 独立控制面直接读写
metadata_jsonTEXTNULL扩展元信息
created_atINTEGERNOT NULL创建时间戳(ms)
updated_atINTEGERNOT NULL更新时间戳(ms)

floor

会话内楼层(回合)。

列名类型约束/默认值说明
idTEXTPK楼层 ID
session_idTEXTNOT NULL, FK → session.id所属会话
floor_noINTEGERNOT NULL楼层编号
branch_idTEXTNOT NULL, default main分支标识
parent_floor_idTEXTNULL父楼层 ID
superseded_atINTEGERNULL被替代时间戳(ms)
superseded_by_floor_idTEXTNULL替代它的新楼层 ID
stateTEXTNOT NULL, default draft状态(draft | generating | committed | failed
metadata_jsonTEXTNULL楼层元信息
token_inINTEGERNOT NULL, default 0输入 token
token_outINTEGERNOT NULL, default 0输出 token
created_atINTEGERNOT NULL创建时间戳(ms)
updated_atINTEGERNOT NULL更新时间戳(ms)
  • live floor 唯一索引:floor_session_no_branch_live_uq(session_id, floor_no, branch_id) WHERE superseded_at IS NULL
  • live 历史索引:floor_session_branch_live_state_no_idx(session_id, branch_id, state, floor_no) WHERE superseded_at IS NULL
  • superseded_at IS NULL 表示当前有效楼层;非空表示该楼层已被后续 regenerate 替代

message_page

楼层内消息页(版本)。

列名类型约束/默认值说明
idTEXTPK消息页 ID
floor_idTEXTNOT NULL, FK → floor.id所属楼层
page_noINTEGERNOT NULL页序号
page_kindTEXTNOT NULL类型(input | output | mixed
is_activeINTEGERNOT NULL, default 1是否当前生效页
versionINTEGERNOT NULL, default 1版本号
checksumTEXTNULL内容校验摘要
created_atINTEGERNOT NULL创建时间戳(ms)
updated_atINTEGERNOT NULL更新时间戳(ms)

索引:

  • message_page_floor_no_version_uq(floor_id, page_no, version)
  • message_page_floor_active_no_idx(floor_id, is_active, page_no)
  • message_page_floor_no_active_uq(floor_id, page_no) WHERE is_active = 1

说明:active 不变量是“每个 (floor_id, page_no) 槽位最多一个 active version”,不是“每个 floor 最多一个 active page”。

message

消息明细。

列名类型约束/默认值说明
idTEXTPK消息 ID
page_idTEXTNOT NULL, FK → message_page.id所属消息页
seqINTEGERNOT NULL页内顺序号
roleTEXTNOT NULL角色(user | assistant | system | narrator
contentTEXTNOT NULL消息内容
content_formatTEXTNOT NULL, default text格式(text | markdown | json
token_countINTEGERNOT NULL, default 0token 数
is_hiddenINTEGERNOT NULL, default 0是否隐藏
sourceTEXTNULL来源标记
created_atINTEGERNOT NULL创建时间戳(ms)

variable

多层级变量存储。

列名类型约束/默认值说明
idTEXTPK变量记录 ID
scopeTEXTNOT NULL作用域(global | chat | floor | branch | page
scope_idTEXTNOT NULL作用域实体 ID(branch 时为内部规范化宿主 ID)
keyTEXTNOT NULL变量名
value_jsonTEXTNOT NULL变量值 JSON
updated_atINTEGERNOT NULL更新时间戳(ms)

client_data_domain

客户端专属数据域主表。

列名类型约束/默认值说明
idTEXTPK数据域 ID
account_idTEXTNOT NULL, FK → account.id所属账号
owner_typeTEXTNOT NULL拥有者类型(application | plugin
owner_idTEXTNOT NULL拥有者 ID
domain_nameTEXTNOT NULL数据域名称
display_nameTEXTNULL展示名称
descriptionTEXTNULL描述
statusTEXTNOT NULL, default active状态(active | suspended | deleted
versionINTEGERNOT NULL, default 1元数据版本号
quota_max_entriesINTEGERNOT NULL域级最大条目数
quota_max_bytesINTEGERNOT NULL域级最大字节数
current_entry_countINTEGERNOT NULL, default 0当前条目数
current_byte_countINTEGERNOT NULL, default 0当前字节数
created_atINTEGERNOT NULL创建时间戳(ms)
updated_atINTEGERNOT NULL更新时间戳(ms)
deleted_atINTEGERNULL软删除时间(ms)

索引:client_data_domain_owner_name_uq(account_id, owner_type, owner_id, domain_name)(唯一)、client_data_domain_account_owner_status_idx(account_id, owner_type, owner_id, status)

client_data_collection

客户端数据集合表。

列名类型约束/默认值说明
idTEXTPK集合 ID
domain_idTEXTNOT NULL, FK → client_data_domain.id所属数据域
collection_nameTEXTNOT NULL集合名称
descriptionTEXTNULL描述
default_expires_ttl_msINTEGERNULL默认过期 TTL(ms)
max_item_size_bytesINTEGERNULL集合级单项大小上限
versionINTEGERNOT NULL, default 1元数据版本号
metadata_jsonTEXTNULL集合元信息 JSON
item_countINTEGERNOT NULL, default 0当前条目数
byte_countINTEGERNOT NULL, default 0当前字节数
created_atINTEGERNOT NULL创建时间戳(ms)
updated_atINTEGERNOT NULL更新时间戳(ms)

索引:client_data_collection_domain_name_uq(domain_id, collection_name)(唯一)、client_data_collection_domain_updated_idx(domain_id, updated_at)

client_data_item

客户端数据条目表。

列名类型约束/默认值说明
idTEXTPK条目 ID
domain_idTEXTNOT NULL, FK → client_data_domain.id所属数据域
collection_idTEXTNOT NULL, FK → client_data_collection.id所属集合
item_keyTEXTNOT NULL条目键
value_jsonTEXTNOT NULL条目值 JSON
byte_sizeINTEGERNOT NULL存储字节数
versionINTEGERNOT NULL, default 1条目版本号
expires_atINTEGERNULL过期时间(ms)
created_atINTEGERNOT NULL创建时间戳(ms)
updated_atINTEGERNOT NULL更新时间戳(ms)

索引:client_data_item_collection_key_uq(collection_id, item_key)(唯一)、client_data_item_domain_collection_updated_idx(domain_id, collection_id, updated_at)client_data_item_expires_idx(expires_at)(部分索引)

client_data_domain_grant

客户端数据域授权表。

列名类型约束/默认值说明
idTEXTPK授权记录 ID
account_idTEXTNOT NULL, FK → account.id所属账号
domain_idTEXTNOT NULL, FK → client_data_domain.id所属数据域
grantee_owner_typeTEXTNOT NULL被授权 owner 类型(application | plugin
grantee_owner_idTEXTNOT NULL被授权 owner ID
can_readINTEGERNOT NULL, default 0读权限
can_writeINTEGERNOT NULL, default 0写权限
can_deleteINTEGERNOT NULL, default 0删除权限
can_listINTEGERNOT NULL, default 0列表权限
created_atINTEGERNOT NULL创建时间戳(ms)
updated_atINTEGERNOT NULL更新时间戳(ms)
expires_atINTEGERNULL授权过期时间(ms)

索引:client_data_domain_grant_unique_uq(domain_id, grantee_owner_type, grantee_owner_id)(唯一)、client_data_domain_grant_account_grantee_idx(account_id, grantee_owner_type, grantee_owner_id)

client_data_audit_log

客户端数据域治理审计日志表。

列名类型约束/默认值说明
idTEXTPK审计日志 ID
account_idTEXTNOT NULL, FK → account.id所属账号
domain_idTEXTNULL, FK → client_data_domain.id关联数据域
owner_typeTEXTNULL数据域 owner 类型
owner_idTEXTNULL数据域 owner ID
actor_typeTEXTNOT NULL操作者类型
actor_idTEXTNULL操作者 ID
actionTEXTNOT NULL操作名称
target_typeTEXTNOT NULL目标类型
target_idTEXTNULL目标 ID
request_idTEXTNULL请求 ID
metadata_jsonTEXTNULL审计元数据 JSON
created_atINTEGERNOT NULL记录时间戳(ms)

索引:client_data_audit_log_account_created_idx(account_id, created_at)client_data_audit_log_domain_created_idx(domain_id, created_at)

client_data_managed_domain

受治理 Client Data 数据域注册表。

列名类型约束/默认值说明
domain_idTEXTPK, FK → client_data_domain.id被治理的数据域 ID
account_idTEXTNOT NULL, FK → account.id所属账号
manager_kindTEXTNOT NULL治理器类型(当前固定 session_state
host_typeTEXTNOT NULL宿主类型(当前固定 session
host_idTEXTNOT NULL宿主 ID
state_namespaceTEXTNOT NULL状态命名空间
require_caller_ownerINTEGERNOT NULL, default 1是否要求显式 caller owner
allow_auto_create_collectionINTEGERNOT NULL, default 0是否允许自动建 collection
created_atINTEGERNOT NULL创建时间戳(ms)
updated_atINTEGERNOT NULL更新时间戳(ms)

索引:client_data_managed_domain_account_manager_host_namespace_uq(account_id, manager_kind, host_type, host_id, state_namespace)(唯一)、client_data_managed_domain_account_host_idx(account_id, host_type, host_id, state_namespace)

说明:这张表只把底层 domain 标记为 managed 模式,不新建第二套状态存储。

相关只读观察端点见 reference/api/session-state-observation.md

session_state_mutation

会话状态治理层的 mutation 日志表。

列名类型约束/默认值说明
idTEXTPKmutation ID
account_idTEXTNOT NULL, FK → account.id所属账号
domain_idTEXTNOT NULL, FK → client_data_domain.id对应 managed domain
state_namespaceTEXTNOT NULL状态命名空间
session_idTEXTNOT NULL, FK → session.id所属会话
branch_idTEXTNOT NULL所属分支
source_floor_idTEXTNULL, FK → floor.id来源楼层
target_slotTEXTNOT NULL目标槽位
visibility_modeTEXTNOT NULL可见性模式(session_shared | branch_local | fork_on_branch
write_modeTEXTNOT NULL写入模式(direct | commit_bound
replay_safetyTEXTNOT NULL重放安全级别(safe | confirm_on_replay | never_auto_replay | uncertain
statusTEXTNOT NULL, default staged当前治理状态(staged | applied | discarded | blocked | uncertain
request_idTEXTNULL来源请求 ID
run_idTEXTNULL来源 run ID
payload_jsonTEXTNOT NULL, default '{}'mutation 负载
source_snapshot_floor_idTEXTNULL, FK → floor.idapply 时引用的 floor snapshot
live_head_keyTEXTNULL对应 live head item key
discard_reasonTEXTNULLdiscard 原因
blocked_reasonTEXTNULLblocked 原因
created_atINTEGERNOT NULL创建时间戳(ms)
updated_atINTEGERNOT NULL更新时间戳(ms)
applied_atINTEGERNULL实际应用时间戳(ms)

索引:session_state_mutation_session_branch_status_created_idx(session_id, branch_id, status, created_at)session_state_mutation_source_floor_idx(source_floor_id, status, created_at)session_state_mutation_run_idx(run_id, created_at)

相关只读观察端点(包括 mutation 列表、live head、floor snapshot、replay safety 与 diff)见 reference/api/session-state-observation.md

说明:状态值本身仍保存在 client_data_item 中;session_state_mutation 负责治理日志、提交边界和 replay safety 决策。当前第一批内置 namespace 是 game_state,默认 slot 包括 worldsceneinventorycombat

memory_item

记忆条目。

列名类型约束/默认值说明
idTEXTPK记忆 ID
scopeTEXTNOT NULL作用域(global | chat | floor
scope_idTEXTNOT NULL作用域实体 ID
typeTEXTNOT NULL类型(fact | summary | open_loop
content_jsonTEXTNOT NULL记忆内容 JSON
fact_keyTEXTNULL结构化事实键,仅 type = fact 时有意义
importanceREALNOT NULL, default 0.5重要度(0-1)
confidenceREALNOT NULL, default 1.0置信度(0-1)
source_floor_idTEXTNULL来源楼层
source_message_idTEXTNULL来源消息
account_idTEXTNOT NULL, FK → account.id所属账号
statusTEXTNOT NULL, default active状态(active | deprecated
created_atINTEGERNOT NULL创建时间戳(ms)
updated_atINTEGERNOT NULL更新时间戳(ms)

说明:fact_key 是事实类记忆的结构化主键;content_json 继续保留展示/注入文本。

memory_edge

记忆关系边。

列名类型约束/默认值说明
idTEXTPK关系 ID
from_idTEXTNOT NULL, FK → memory_item.id起始记忆
to_idTEXTNOT NULL, FK → memory_item.id目标记忆
relationTEXTNOT NULL关系(supports | contradicts | updates
account_idTEXTNOT NULL, FK → account.id所属账号
created_atINTEGERNOT NULL创建时间戳(ms)

runtime_scope_state

Background Job Runtime 的 scope 串行状态表。当前 memorychat transfer 都通过它维护统一 scope lease 和 revision。

说明:这是一组偏开发、调试、运维的高级后端能力,对应的 job / scope 查询与管理路由也属于高级开发者特性。

统一的查询、取消、重试能力由 RuntimeJobQueryService 提供;业务路由只是对这些表做 memorychat transfer 的投影。

列名类型约束/默认值说明
account_idTEXTNOT NULL, FK → account.id所属账号
scope_typeTEXTNOT NULL运行时 scope 域,例如 memorychat_transfer
scope_keyTEXTNOT NULL域内 scope 键,例如 chat:sessionIdjob:jobId
revisionINTEGERNOT NULL, default 0scope revision
lease_ownerTEXTNULL当前 scope 租约持有者
lease_untilINTEGERNULLscope 租约到期时间
last_processed_atINTEGERNULL最近一次成功处理时间
last_success_job_idTEXTNULL最近一次成功作业 ID
metadata_jsonTEXTNOT NULL, default '{}'域专用扩展元数据
updated_atINTEGERNOT NULL更新时间戳(ms)

索引:runtime_scope_state_account_scope_uq(account_id, scope_type, scope_key)(唯一)、runtime_scope_state_lease_idx(lease_until)

runtime_job

Background Job Runtime 的统一作业表。第一批消费者是 memory.*chat_transfer.*。旧的 memory_job / chat_transfer_job 会暂时保留,用于兼容窗口,但新运行时以本表为准。

说明:该表对应的 HTTP 路由主要是高级开发者接口,用于作业观察、重试、取消和调试,不是普通用户日常聊天接口。

Runtime 还会围绕本表发出统一 runtime.job_* 生命周期事件,用于日志、测试和运行时观测。

列名类型约束/默认值说明
idTEXTPK作业 ID
job_typeTEXTNOT NULL作业类型,例如 memory.ingest_turnchat_transfer.export_chat
account_idTEXTNOT NULL, FK → account.id所属账号
scope_typeTEXTNOT NULLscope 域
scope_keyTEXTNOT NULLscope 键
session_idTEXTNULL, FK → session.id关联会话 ID(如果有)
floor_idTEXTNULL, FK → floor.id关联楼层 ID(如果有)
page_idTEXTNULL, FK → message_page.id关联消息页 ID(如果有)
statusTEXTNOT NULL, default pending生命周期状态:pending / leased / running / retry_waiting / succeeded / dead_letter / cancelled
phaseTEXTNULL业务阶段名
payload_jsonTEXTNOT NULL, default '{}'请求负载 JSON
state_jsonTEXTNULL运行中状态 JSON
result_jsonTEXTNULL最终结果 JSON
attempt_countINTEGERNOT NULL, default 0已尝试次数
max_attemptsINTEGERNOT NULL, default 5最大尝试次数
available_atINTEGERNOT NULL下次可被领取时间
started_atINTEGERNULL首次开始执行时间
finished_atINTEGERNULL终态完成时间
lease_ownerTEXTNULL当前作业租约持有者
lease_untilINTEGERNULL当前作业租约到期时间
based_on_revisionINTEGERNULL领取时冻结的 scope revision
dedupe_keyTEXTNULL幂等去重键
progress_currentINTEGERNOT NULL, default 0当前进度值
progress_totalINTEGERNULL总进度值
progress_messageTEXTNULL进度说明
last_errorTEXTNULL最近一次错误消息
last_error_codeTEXTNULL最近一次错误码
last_error_classTEXTNULL最近一次错误分类
created_atINTEGERNOT NULL创建时间戳(ms)
updated_atINTEGERNOT NULL更新时间戳(ms)

索引:runtime_job_due_idx(status, available_at)runtime_job_scope_idx(account_id, scope_type, scope_key, created_at)runtime_job_session_idx(account_id, session_id, created_at)runtime_job_account_type_dedupe_uq(account_id, job_type, dedupe_key)(唯一)

prompt_snapshot

单轮 Prompt 快照表。用于冻结某个 floor 实际生成时使用的 Prompt 资源版本与摘要信息。

列名类型约束/默认值说明
floor_idTEXTPK, FK → floor.id ON DELETE CASCADE所属楼层
session_idTEXTNOT NULL, FK → session.id ON DELETE CASCADE所属会话
preset_idTEXTNULL, FK → preset.id ON DELETE SET NULL冻结的预设 ID
preset_updated_atINTEGERNULL预设更新时间快照
worldbook_idTEXTNULL, FK → worldbook.id ON DELETE SET NULL冻结的世界书 ID
worldbook_updated_atINTEGERNULL世界书更新时间快照
regex_profile_idTEXTNULL, FK → regex_profile.id ON DELETE SET NULL冻结的正则配置 ID
regex_profile_updated_atINTEGERNULL正则配置更新时间快照
worldbook_activated_entry_uids_jsonTEXTNOT NULL, default '[]'命中的世界书 entry uid 列表
regex_pre_rule_names_jsonTEXTNOT NULL, default '[]'本轮启用并写入快照的前处理规则名列表,不表示逐条精确命中结果
regex_post_rule_names_jsonTEXTNOT NULL, default '[]'本轮启用并写入快照的后处理规则名列表,不表示逐条精确命中结果
prompt_modeTEXTNOT NULLPrompt 模式(compat_strict | compat_plus | native
prompt_digestTEXTNOT NULL组装后消息摘要
token_estimateINTEGERNOT NULL, default 0Prompt token 估算
created_atINTEGERNOT NULL创建时间戳(ms)

索引:prompt_snapshot_session_created_idx(session_id, created_at)prompt_snapshot_digest_idx(prompt_digest)

llm_profile

LLM Profile Vault 主表。

列名类型约束/默认值说明
idTEXTPKProfile ID
preset_nameTEXTNOT NULLProfile 名称
account_idTEXTNOT NULL, FK → account.id所属账号
providerTEXTNOT NULLLLM 提供商
model_idTEXTNOT NULL模型 ID
base_urlTEXTNULL自定义网关
api_key_nameTEXTNULLKey 展示名
api_key_encryptedTEXTNOT NULL加密密文
api_key_maskedTEXTNOT NULL掩码值
statusTEXTNOT NULL, default active状态
last_used_atINTEGERNULL最后使用时间
created_atINTEGERNOT NULL创建时间戳(ms)
updated_atINTEGERNOT NULL更新时间戳(ms)

provider 枚举:openai | anthropic | google | deepseek | xai | openai-compatible

llm_profile_binding

LLM Profile 绑定表。

列名类型约束/默认值说明
idTEXTPK绑定记录 ID
scopeTEXTNOT NULL作用域(global | session
account_idTEXTNOT NULL, FK → account.id所属账号
scope_idTEXTNOT NULL作用域 ID
instance_slotTEXTNOT NULL, default *实例槽位
profile_idTEXTNOT NULL, FK → llm_profile.id被绑定 Profile
created_atINTEGERNOT NULL创建时间戳(ms)
updated_atINTEGERNOT NULL更新时间戳(ms)

llm_instance_config

LLM 实例配置表。独立管理各实例槽位的配置(预设绑定、启用状态、生成参数)。

列名类型约束/默认值说明
idTEXTPK配置记录 ID
account_idTEXTNOT NULL, FK → account.id所属账号
scopeTEXTNOT NULL作用域(global | session
scope_idTEXTNOT NULL作用域 ID
instance_slotTEXTNOT NULL槽位(* | narrator | director | verifier | memory
preset_idTEXTNULL关联预设 ID
enabledINTEGERNOT NULL, default 1是否启用
params_jsonTEXTNULL生成参数 JSON
created_atINTEGERNOT NULL创建时间戳(ms)
updated_atINTEGERNOT NULL更新时间戳(ms)

优先级解析:session(slot) > session(*) > global(slot) > global(*) > default

tool_call_record

旧兼容查询表。每条记录绑定到一个 message_page,供仍按 page 维度读取的旧接口使用。当前主审计模型已经切换为 tool_execution_record

列名类型约束/默认值说明
idTEXTPK调用记录 ID
page_idTEXTNOT NULL, FK → message_page.id ON DELETE CASCADE所属消息页
seqINTEGERNOT NULL页内调用序号
caller_slotTEXTNOT NULL调用方槽位(narrator | director | verifier | memory
tool_nameTEXTNOT NULL工具名称
args_jsonTEXTNOT NULL调用参数 JSON
result_jsonTEXTNOT NULL返回结果 JSON
statusTEXTNOT NULL, default success状态(success | error | denied | queued | running
duration_msINTEGERNOT NULL, default 0执行耗时(ms)
created_atINTEGERNOT NULL创建时间戳(ms)

索引:tool_call_record_page_seq_idx(page_id, seq)tool_call_record_tool_name_idx(tool_name)

说明:tool_call_record 仍是兼容查询面,不是新的主审计真相源。

tool_execution_record

当前真实工具执行记录表。记录来源必须是 ToolExecutor 的真实执行过程,以 floor_id 为主归属,page_id 可空。

列名类型约束/默认值说明
idTEXTPK执行记录 ID
run_idTEXTNOT NULL单轮工具执行 run ID
floor_idTEXTNOT NULL, FK → floor.id ON DELETE CASCADE所属楼层
page_idTEXTNULL, FK → message_page.id ON DELETE SET NULL可选的真实页绑定
caller_slotTEXTNOT NULL调用方实例槽位
provider_idTEXTNOT NULL工具提供者 ID
tool_nameTEXTNOT NULL工具名称
provider_typeTEXTNOT NULL, default unknownprovider 类型(builtin | preset | mcp | unknown
args_jsonTEXTNOT NULL, default '{}'调用参数 JSON
result_jsonTEXTNOT NULL, default '{}'返回结果 JSON
statusTEXTNOT NULL, default running执行状态(running | queued | success | error | denied | timeout | uncertain | blocked
lifecycle_stateTEXTNOT NULL, default finished生命周期状态(opened | finished
commit_outcomeTEXTNOT NULL, default pending提交结果(pending | committed | discarded | replay_blocked | uncertain
delivery_modeTEXTNOT NULL, default inline交付模式(inline | async_job
runtime_job_idTEXTNULL关联的 runtime_job.id
side_effect_levelTEXTNULL副作用级别(none | sandbox | irreversible
error_messageTEXTNULL错误信息
duration_msINTEGERNOT NULL, default 0执行耗时(ms)
started_atINTEGERNOT NULL, default 0开始时间戳(ms)
finished_atINTEGERNULL完成时间戳(ms)
attempt_noINTEGERNOT NULL, default 1执行尝试号
replay_parent_execution_idTEXTNULL回放父执行记录 ID
created_atINTEGERNOT NULL创建时间戳(ms)

索引:tool_execution_record_floor_created_idx(floor_id, started_at)tool_execution_record_run_idx(run_id, started_at)tool_execution_record_page_created_idx(page_id, started_at)tool_execution_record_runtime_job_idx(runtime_job_id)tool_execution_record_tool_name_idx(tool_name)

说明:新的查询和审计应优先读取 tool_execution_record

tool_definition

自定义工具定义。

列名类型约束/默认值说明
idTEXTPK工具定义 ID
nameTEXTNOT NULL工具名称
descriptionTEXTNOT NULL工具描述
parameters_jsonTEXTNOT NULL参数 schema JSON
side_effect_levelTEXTNOT NULL副作用级别(none | sandbox | irreversible
allowed_slots_jsonTEXTNOT NULL允许调用的槽位 JSON 数组
sourceTEXTNOT NULL来源(preset | character | custom
source_idTEXTNULL来源关联 ID
enabledINTEGERNOT NULL, default 1是否启用
handler_typeTEXTNOT NULL存储层仍保留 script | prompt | delegate 历史取值;Beta3 的公开写接口只接受 script
handler_jsonTEXTNOT NULL处理器配置 JSON
account_idTEXTNOT NULL, FK → account.id所属账号
created_atINTEGERNOT NULL创建时间戳(ms)
updated_atINTEGERNOT NULL更新时间戳(ms)

索引:tool_definition_name_source_source_id_uq(name, source, source_id) (唯一)、tool_definition_account_source_idx(account_id, source)

mcp_server_config

MCP 服务器配置表。通过 ENABLE_MCP=true 启用。迁移: 0015_mcp_server_config.sql0021_mcp_account_scope.sql

列名类型约束/默认值说明
idTEXTPKnanoid
nameTEXTNOT NULL服务器显示名称(账号内唯一)
account_idTEXTNOT NULL, FK → account.id所属账号
transportTEXTNOT NULL传输类型(stdio / http
config_jsonTEXTNOT NULL传输配置 JSON(stdio 或 http 参数)
tool_prefixTEXTNULL工具名称前缀
enabledINTEGERNOT NULL DEFAULT 1是否启用
connect_timeout_msINTEGERNOT NULL DEFAULT 30000连接超时
call_timeout_msINTEGERNOT NULL DEFAULT 60000工具调用超时
tool_refresh_interval_msINTEGERNOT NULL DEFAULT 300000工具列表刷新间隔
default_side_effect_levelTEXTNOT NULL DEFAULT irreversible默认副作用级别
created_atINTEGERNOT NULL创建时间戳(ms)
updated_atINTEGERNOT NULL更新时间戳(ms)

索引:mcp_server_config_account_name_uq(account_id, name) (唯一)、mcp_server_config_account_updated_idx(account_id, updated_at)

列表接口约定

所有列表接口统一支持:

  • 分页:limit(1-200)、offset(>=0)
  • 排序:sort_bysort_orderasc | desc
  • 过滤:保留各实体特有过滤字段

统一返回:

  • data: 当前页数据
  • meta: { total, limit, offset, has_more, sort_by, sort_order }