-- 0015_chat_message_document: 给聊天消息挂上「文档引用」(design/24 §2.4)。 -- -- 「分享到 App · 超限走文件」把长文/文件做成服务端文档,再由 chat 以 -- document 引用它。这条消息需要在历史里看得见「她读过这个文件」,因此 -- chat_messages 增一列 document,存一个 JSON 小对象: -- {name, mime, size, chars, truncated, status} -- name 是服务端存储名(内容寻址、32 位十六进制)、mime 是服务端字节嗅探所得、 -- chars/truncated 是抽取统计、status 是抽取状态(extracted|listed|unreadable)。 -- -- 它**刻意只存引用与统计,绝不存抽取正文**:正文一旦落库,每翻一页历史都要 -- 背着它重传(G3 把 base64 原样落库的教训),而且附件正文是提示词注入面 -- (design/11 §10)。正文留在 /extracted 的 sidecar 里,装配期按 -- 引用读(design/24 §4.3:只抽一次,不每回合重算)。 -- -- 0003 的 chat_messages 表在此已存在,故 ALTER ADD COLUMN 是非破坏性的正确 -- 一步;全新库由 internal/runtime/history.NewStore 幂等地前滚(含该列)。 -- 表名沿用复数口径(援引 AGENTS §10 已登记的例外)。 ALTER TABLE chat_messages ADD COLUMN document TEXT NOT NULL DEFAULT '';