# 怎么工作的 一页纸,只讲数据怎么流。函数名和文件表在 [ARCHITECTURE.md](../ARCHITECTURE.md),这里不复述。 ## 打开页面 ```text 会话菜单 / 消息旁的分享按钮 └─ GET /plugins/share-transcript/transcript?session=… └─ sessionQuery.readSession() 读会话日志,不读页面 DOM └─ buildTurns() 把事件流按轮聚合成 turns └─ 页面:左栏列表 + 右侧草稿 ``` 每个请求先过 `connection.requestRejection()`:无凭据 401,拿不到该服务 503。只收 `source.kind === 'user'` 的人类消息,系统注入不进转写。 ## 草稿 → 四种产物 ```text 草稿(可编辑文本) ├─ 复制 → 剪贴板 ├─ .md → front matter + 草稿 ├─ .png → 按行切成块(标题/正文/代码/表格)→ 量高度 → 画布逐块绘制 └─ 引用 → 加围栏与会话 id → 写进另一个会话的输入框 ``` 关键一点:**图片不是截图**,是把同一份草稿重新排版画出来的。所以改草稿,三种产物一起变。图片有单张上限,放不下时给"最多几轮"的建议,不切在半句话上。 ## 摘要 ```text 选中轮次 → POST /summaries → llm.stream(会话默认模型) → 每轮两个短标签 → 写进 Markdown 标题 ``` - 只影响 Markdown 大纲;图片里的胶囊仍只显示 `第 N 轮 · 我`。 - 模型由宿主设置决定,插件不存 provider、不存密钥。 ## 三层职责 | 层 | 负责 | 不负责 | |---|---|---| | 会话日志 | 唯一事实来源 | 展示、排版 | | Host (`index.js`) | 读日志、按轮聚合、鉴权、调模型 | 排版、交互 | | Client (`client.js`) | 选择、草稿、导出、绘制 | 读写会话文件、持有凭据 | ## 出问题时先看哪 | 现象 | 先查 | |---|---| | 页面空白或 401 | Host 路由与鉴权 | | 列表少了某些轮 | `buildTurns` 的过滤规则(注入消息、纯工具轮会被丢) | | 图片底部缺内容 | 画布高度度量 | | 摘要没生成 | `/summaries` 的返回码:503 无模型、502 模型没按格式返回 | | 大纲标题没有摘要 | 「标题带摘要」是否打开、有没有点过「生成摘要」 |