资讯动态

2处小改让ChatBox自动标题告别“Untitled“

发布时间:2026/8/31 10:13:29 来源:尧图企业网站定制
2处小改让ChatBox自动标题告别Untitled【免费下载链接】chatboxPowerful AI Client项目地址: https://gitcode.com/GitHub_Trending/ch/chatbox用AI对话客户端的人都有同一种烦躁聊完点开ChatBox会话列表一排Untitled和关于XX的讨论。自动标题功能auto title其实已经写好了但质量时好时坏。这篇文章不教你加新功能只讲这条链路在源码里长什么样、哪几个旋钮能调、每个旋钮值多少改动成本。触发链路与素材截取调优前必须看清楚的三件事标题只在会话Untitled时触发一次很多人以为标题会持续跟着对话更新不是。触发逻辑在 src/renderer/components/Header.tsx条件写得很死if ( currentSession.name Untitled // 还没起过名 currentSession.messages.length 2 // 至少来回一轮 ) { sessionActions.generateName(currentSession.id) }标题一旦生成这段代码就再也不会为这个会话执行。想重新生成得先把它改回Untitled。这是理解后面所有调优的前提——你调的是第一次起名的质量不是持续优化。前4条消息、每条100字符是怎么被截出来的真正起名时喂给模型什么看 src/renderer/stores/sessionActions.ts 的_generateNamelet name await model.chat(promptFormat.nameConversation( session.messages .filter(m m.role ! system) // 丢掉系统提示词 .slice(0, 4), // 只取前4条 settings.language, ), )接着进 src/renderer/packages/prompts.tsformat(msgs.slice(0, 5).map((msg) msg.content.slice(0, 100))) // save tokens前4条非系统消息每条只保留前100字符用分隔线拼进 prompt。说白了模型对这场对话的全部了解就是这不到400个字符。开头聊修 bug、后面聊架构的对话它只看得见修 bug。素材太窄这才是关于XX的讨论这类泛标题的主要来源。模型和参数怎么走到标题请求里模型选择由 src/renderer/packages/models/index.ts 的getModel决定读你当前配置的 provider实例化 OpenAI、Claude、Ollama、ChatboxAI 等对应的类。标题请求走的是你设置里的 Temperature温度参数越低输出越确定和 Top-P nucleus 采样阈值默认 0.7 / 1。这意味着聊天质量和标题质量共用一套参数。prompt 模板本身也很固定就三句硬约束10字符以内、用settings.language指定语言、只输出名字。另外模型返回后还有一步后处理同样在sessionActions.tsname name.replace(/[“”]/g, ) // 剥掉模型爱加的引号 name name.slice(0, 10) // 硬截断到10字符这一刀对中文很友好对英文很残忍——Deployment 会被切成 Deployme。按改动成本分三档调温度、改截取、加反馈 零代码把Temperature压到0.3以下设置面板里直接拖滑块即可不用动一行源码。Temperature 压到 0.3 以下Top-P 压到 0.7 左右关于XX的讨论这类摇摆输出会明显变少——标题从能猜变成稳定。代价是闲聊的创造性也一起降了这是共用参数的副作用介意的话看档。同档还能做的换模型。同一个 provider 下拉里换 ChatboxAI 默认模型、OpenAI 的 gpt-4o、Ollama 本地模型各测一次命名能力差距是肉眼可见的。这是全篇性价比最高的一档。 小改去掉那行slice(0, 10)让英文标题不被切半还是 src/renderer/stores/sessionActions.tsname name.slice(0, 10) // 可以改成按语言放宽或对中文保留10、英文放宽到20改完预期中文标题不变英文和数字混排不再出现 Deployme 这种半词。如果fork后做只动这一行风险最低。 小改把截取窗口从固定4条改成自适应_generateName里的.slice(0, 4)是唯一决定模型看见多少的地方。可以换成一个取值函数function pickMessages(msgs: Message[]) { if (msgs.length 4) return msgs return [...msgs.slice(0, 2), ...msgs.slice(-2)] // 长对话首尾取样 }改完预期长对话里后半程才展开的主题能被命名捕捉到而 token 消耗几乎不涨仍然是4条×100字符。 小改给中文标题单独写一段promptprompt 模板在 src/renderer/packages/prompts.ts10 characters max 对中文是双刃剑——模型按字符理解容易生成10个汉字信息量过大反而失真。可以给language zh-Hans分支单独写一段把约束改成8个汉字以内、优先名词短语。英文分支保持原样。预期是中文标题从句子缩回词组可读性提升最明显的一改。 重构给标题生成独立参数空间和反馈回路这两件事动的是数据流列出来供评估别一上来就全做。参数隔离_generateName里构造 settings 副本、覆写 temperature 后传给getModel让命名调用与聊天参数解耦。好处是标题可以永远低温聊天保持高创造性。反馈回路在 src/renderer/components/SessionItem.tsx 的会话项上加一个对自动标题的点踩入口记录用户手动改过标题这个信号长期作为换模型、换 prompt 的评测基准。动手验证clone到跑通只要三条命令最短路径git clone https://gitcode.com/GitHub_Trending/ch/chatbox cd chatbox npm install npm run dev跑起来后手动把某个会话名改回Untitled触发一次生成反复验证。三个测试场景各看一件事纯技术问答比如问Python的GIL为什么存在标题是否包含具体技术名词而不是编程讨论。中英混合英文提问、中文追问语言字段是否跟着settings.language走混排时不出现半截单词。30轮以上长对话对照档改动前后后半程主题能否体现在标题里。验证技巧先只动档参数记录一组标题再叠加一处档代码改动记录第二组对比比单独看任何一组都诚实。边界10字符的坑绕不过去有些方向值得记着但先别做当前方案有几个明确做不到的地方。10字符硬限制下专有名词缩写很难兼顾可读性——RAG、gRPC这类词一出现就吃掉大半配额。触发逻辑只认Untitled意味着同一会话无法用不同 prompt 策略重新起名做 A/B。这两条不重构优化收益有天花板。进阶方向两个点到为止。一是 embedding把文本变成向量算语义相似度做关键句抽取替代前100字符这种位置采样二是标题风格可配置——简洁、描述、带emoji三档。这些值得琢磨但别一上来就全做先把零代码档和小改档的收益吃完。现在你的会话标题不再是Untitled了至少不再是一排关于XX的讨论。项目说明README.md标题生成源码src/renderer/packages/prompts.ts、src/renderer/stores/sessionActions.ts常见问题doc/FAQ-CN.md【免费下载链接】chatboxPowerful AI Client项目地址: https://gitcode.com/GitHub_Trending/ch/chatbox创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价