Skip to content

fix(forwarder): 修复会话标题生成与持久化 - #237

Open
MeetSpringAndAutumn wants to merge 2 commits into
leookun:mainfrom
MeetSpringAndAutumn:fix/conversation-title
Open

fix(forwarder): 修复会话标题生成与持久化#237
MeetSpringAndAutumn wants to merge 2 commits into
leookun:mainfrom
MeetSpringAndAutumn:fix/conversation-title

Conversation

@MeetSpringAndAutumn

@MeetSpringAndAutumn MeetSpringAndAutumn commented Jul 31, 2026

Copy link
Copy Markdown

变更说明 / What

修复本地模式会话标题从触发、模型请求、解析、持久化到 UI 更新的完整链路。

  • 实现 AiService/NameTab,使用独立、低 token、无工具且不继承主会话思考配置的模型请求生成短标题。
  • 强化标题提示词、输入边界和输出清洗,避免模型直接回答用户问题。
  • 不发送 Anthropic 兼容渠道不支持的显式 thinking.type=disabled 参数。
  • 实现 AgentService/UpdateConversationMetadata,将标题和工作区路径幂等、原子写入 state.json
  • 处理 metadata 早于 RunSSE 到达的场景,确保 conversation generation、Fork Chat / Best-of-N 根会话元数据可在后续补全。
  • 保持 context.json、会话 replay、checkpoint、主会话请求性能和 prefix cache 不变。

问题原因 / Why

标题请求原先将首条用户消息作为普通对话输入,部分 Anthropic 兼容渠道会直接回答该问题;同时本地模式缺少标题和会话元数据的处理路由,生成结果无法稳定持久化。后续强制发送 thinking.type=disabled 又会被 Claude Fable 5 拒绝,导致标题请求失败。

关联 Issue / Related Issue

Fixes #223

Supersedes #236

测试方式 / How to Test

  • go build ./...
  • Windows 本地开发与生产构建
  • 手动调用标题 RPC:
    • 请帮我分析项目启动速度很慢的原因 -> 分析项目启动缓慢
    • 你能做什么 -> 了解助手能力
  • 按仓库约束未新增或运行测试

检查清单 / Checklist

  • 代码已通过 gofmtgo vet / Code passes gofmt and go vetgofmt 已通过;go vet 仍报告两处仓库既有 protobuf lock-copy 告警)
  • 本地开发与生产构建无报错 / Local development and production builds pass
  • 本次未新增 UI 文案 / No UI strings added
  • 提交信息符合 Conventional Commits 规范 / Commit messages follow Conventional Commits

接入会话标题生成与元数据更新处理。

避免模型直接回答用户问题,并保持标题持久化与对话历史隔离。
移除标题请求中不受部分模型支持的显式 disabled thinking 参数。
避免标题生成失败后退化为原始用户输入。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: 新会话标题不会由 AI 自动生成,NameTab RPC 返回 404

1 participant