Skip to content

Session Title zh

pawaca edited this page Aug 30, 2026 · 2 revisions

会话标题

上游会话标题生成系统在 Edge 中的适配。

上游参考:会话标题文档

上游提供了什么

会话标题管理 session 的持久化、写一次可覆盖的标题状态。由两个插件组成:

  • SessionTitleServicectx.sessionTitle)— 维护基于日志的标题状态。标题来自三个来源:显式用户重命名(钉住标题,停止自动生成)、已注册的提供者、或降级方案(首条 prompt 的前 N 个词)。向 session 日志追加 session/title 事件。
  • FirstPromptTitle — 标题提供者,通过轻量 LLM 调用从首条用户 prompt 生成简洁标题。可配置目标词数、CJK 字符数、输入字节限制和超时。

标题同时注册为 SessionProjectionRegistry 中的 'title' 投影定义,通过标准投影机制推送给客户端。

Edge 改了什么

直接复用 两个插件

SessionTitleServiceFirstPromptTitle 原封安装,使用 Edge 专属配置:

  • fallbackMaxWords: 8maxTitleBytes: 640 — 标题长度限制
  • targetWords: 6targetCjkCharacters: 12 — LLM 生成目标
  • maxInputBytes: 4096maxOutputTokens: 32timeoutMs: 10_000 — LLM 调用边界
  • provider: 'deepseek-official'model: 'deepseek-v4-flash' — 使用与主 agent 相同的 DeepSeek 提供者

传输桥 标题投影推送

标题变更通过通用的 onChanged 投影桥流转——与 goal 和所有其他投影键使用相同的机制。SessionTitleService 追加 session/title 事件后,投影注册表计算新标题值,onChanged 缓冲,publishSessionEvent 在 flush 后以 WebSocket 帧 drain。

Edge 没有改什么

  • 标题状态管理(基于日志的 fold、用户重命名钉住、提供者节奏)
  • LLM 标题生成逻辑和 prompt 构造
  • 首条 prompt 文本的降级标题派生
  • session/title 事件格式和语义
  • 标题投影定义及其在 SessionProjectionCache 中的参与

性能特征

标题生成延迟

FirstPromptTitle 在首条用户 prompt 后异步生成标题。LLM 调用限制在 32 个输出 token 和 10 秒超时。它独立于 agent turn 运行——session 可以在标题就绪前开始响应。标题到达后追加 session/title 事件,触发投影推送更新浏览器侧边栏。

冷会话标题

标题是上游 SessionProjectionCache 管理的投影缓存的一部分。冷 session 从缓存快照或物化摘要提供标题——不需要事件重放。dsh_session_summaries 表也为 session 列表存储最新的标题事件数据。

架构总结

组件 分类 Edge 代码
SessionTitleService 复用 一行 ctx.plugin() 调用(含配置)
FirstPromptTitle 复用 一行 ctx.plugin() 调用(含配置)
标题投影推送 桥接 通用投影桥

关键观察:标题生成完全是上游代码——Edge 只提供配置值和通用投影桥。LLM 调用、降级逻辑和重命名处理都是上游代码。标题是证明通用桥有效的投影之一:同一个 onChanged 机制服务 goal、title 和任何未来的投影键,无需逐键适配器代码。

English

中文

Clone this wiki locally