Skip to content

LLM功能增强,新增关键词指令功能#261

Open
Gene0Liu wants to merge 1 commit intoHaujetZhao:masterfrom
Gene0Liu:llm-enhancements
Open

LLM功能增强,新增关键词指令功能#261
Gene0Liu wants to merge 1 commit intoHaujetZhao:masterfrom
Gene0Liu:llm-enhancements

Conversation

@Gene0Liu
Copy link

我自己使用的llm增强功能,现提交PR,内容如下:

1.新增关键词指令功能 2.新增LLM功能 3.优化角色代码逻辑与性能 4.为部分菜单功能也加入toast,直观显示结果。

关键词指令:当语音输入内容完全匹配关键词时触发对应功能,可以在config.py中修改或禁用。

新增LLM功能如下:清除历史、显示最近一轮对话、撤回最近一轮对话、复制全部上下文、复制当前角色上下文。便于使用角色功能。

以上功能支持关键词触发和客户端托盘菜单触发,并为原有的复制结果和清除历史功能增加了关键词指令支持。

角色功能支持缓存和长度优先级匹配。

其他:关键词指令带有标记,不覆盖上次结果,便于复制。

requirement增加'tbb',hiddenimports增加 'rich._unicode_data','rich._unicode_data.unicode17-0-0',解决本地打包时遇到的报错。


我用LLM生成了一个unidiff的说明文档:

CapsWriter-Offline 修改说明文档

概述

本次修改共涉及 7 个文件,新增约 505 行代码,主要实现了 LLM 交互增强功能,包括对话历史管理、指令关键词触发、上下文复制等功能。


修改文件详情

1. config.py

新增 LLM 指令关键词配置

clear_history_keywords = ['清除历史', '清除记忆', '清除上下文']
revoke_last_turn_keywords = ['撤回最近对话', '撤销最近对话', '回退最近对话']
show_last_turn_keywords = ['显示最近对话', '查看最近对话']
copy_all_context_keywords = ['复制全部上下文', '拷贝全部上下文']
copy_current_role_context_keywords = ['复制当前角色上下文', '拷贝当前角色上下文']
copy_result_keywords = ['复制最近结果', '复制输出']

2. util/llm/llm_handler.py

核心功能实现

新增方法 功能描述
revoke_last_turn() 撤回最近一次使用的角色的最近一轮对话
show_last_turn() 显示最近一次使用的角色的最近一轮对话
copy_all_context() 复制所有启用历史的角色的所有历史到剪贴板
copy_current_role_context() 复制最近使用的角色的上下文到剪贴板

其他改动

  • 新增 last_used_role 属性追踪最近使用的角色
  • 处理 COMMAND_TOKEN 指令标记,不更新输出文本
  • 便捷函数 revoke_last_turn(), show_last_turn(), copy_all_context(), copy_current_role_context()

3. util/llm/llm_role_detector.py

指令检测与角色检测增强

功能 描述
指令关键词检测 支持 6 种指令的关键词检测(清除历史、撤回、显示、复制结果、复制全部上下文、复制当前角色上下文)
角色缓存优化 添加角色列表缓存和变化检测机制
统一指令处理 使用字典管理指令定义,避免嵌套 if-elif

4. util/client/startup.py

托盘菜单新增功能

新增 4 个菜单项:

  • ↩️ 撤回上一轮 - revoke_last_turn()
  • 💬 显示最近对话 - show_last_turn()
  • 📄 复制所有上下文 - copy_all_context()
  • 📑 复制当前角色上下文 - copy_current_role_context()

其他改动

  • 添加复制成功/失败的 toast 提示

5. build-client.specbuild.spec

打包依赖补充

添加 rich._unicode_datarich._unicode_data.unicode17-0-0 到 hiddenimports,解决 Rich 库 Unicode 数据加载问题。


6. requirements-server.txt

依赖补充

添加 tbb 依赖,解决打包时的缺失报错问题。


功能使用说明

指令关键词触发方式

用户可以在输入框中输入以下关键词触发功能:

功能 默认关键词
清除历史 清除历史 / 清除记忆 / 清除上下文
撤回上一轮 撤回最近对话 / 撤销最近对话 / 回退最近对话
显示最近对话 显示最近对话 / 查看最近对话
复制全部上下文 复制全部上下文 / 拷贝全部上下文
复制当前角色上下文 复制当前角色上下文 / 拷贝当前角色上下文
复制结果 复制最近结果 / 复制输出

托盘菜单触发方式

右键系统托盘图标,选择对应功能菜单项。


技术细节

上下文复制格式规则

  • 角色和内容之间增加换行
  • 每两条(user+assistant)为一组
  • 每组之间额外空一行(两个换行)
  • 奇数组时,最后剩下的一条单独一组
  • user 消息自动去除 "用户输入:" 前缀

撤回规则

  • 如果最后两条是 [user, assistant],删除两者
  • 如果只剩一条助手消息,删除助手消息

@Gene0Liu
Copy link
Author

之前建议的快捷键功能容易导致键位冲突,我改成关键词指令了,输入内容完全匹配才触发,可以关掉。顺便加了一点LLM上下文的新功能和角色功能优化。

@HaujetZhao
Copy link
Owner

功能太多了,奥卡姆剃刀,我觉得没有必要。现在能够复制输出和清除记忆,就已经够用了。

用户消息中如果没有「用户输入:」这几个字的前缀的话,润色会很不好使的,因为 AI 会觉得你在跟它对话,而不是把后面的消息当成需要润色的文字。

@Gene0Liu Gene0Liu force-pushed the llm-enhancements branch 2 times, most recently from 52b86fa to cac3ef6 Compare February 5, 2026 16:34
@Gene0Liu
Copy link
Author

Gene0Liu commented Feb 6, 2026

确实,我加的这几个角色功能,大多数情况用不上,我准备去掉。

语音指令你建议保留吗?缺点是从最简的角度看,会增加一个对匹配的语音指令标记的功能,以保证复制输出功能不会把语音指令复制了(我自己觉得影响小,标记只有几行代码,然后功能可以关,代码对性能没啥影响)。如果也去掉的话,我提交的就只剩下角色功能增加缓存和长度优先级匹配,可以改善角色较多,和名字开头一样的情况。

用户消息只是toast里不显示前缀,整个过程对上下文只读不写,不改变原有的上下文管理器,只有撤回上下文会pop,所以在数据库里还是有原来前缀的,不会破坏对话。(不过反正这个功能也不保留了)

@HaujetZhao
Copy link
Owner

我并不觉得应当再加新功能。当下我用的角色其实只有一个小助理,翻译、总结都是用的小助理,别人最多再开个润色。并没有复杂的功能需求。

@Gene0Liu
Copy link
Author

Gene0Liu commented Feb 6, 2026

好,语音指令我就只留在自己的fork,从提交里去掉。

现在就只保留一个角色功能的缓存和长度优先级排序,我对不同语境配置了专门的角色提示词用来润色和做语境特殊词纠正,作为热词功能的补充。这部分的代码可以改善角色功能和避免误调用。

不过如果别人也只是再开单独的润色,只有小助理和润色两个角色的话,我提交角色功能改进就没什么用了。

1.新增关键词指令功能 2.新增LLM功能 3.优化角色代码逻辑与性能 4.为部分菜单功能也加入toast,直观显示结果。

关键词指令:当语音输入内容完全匹配关键词时触发对应功能,可以在config.py中修改或禁用。

新增LLM功能如下:清除历史、显示最近对话、撤回最近一轮对话、复制全部上下文、复制当前角色上下文。便于使用角色功能。

功能支持关键词触发和客户端托盘菜单触发,并为原有的复制结果和清除历史功能增加了关键词指令支持。

角色功能支持缓存和长度优先级匹配。

其他修改:关键词指令带有标记,不覆盖上次结果,便于复制。

requirement增加'tbb',hiddenimports增加    'rich._unicode_data','rich._unicode_data.unicode17-0-0',解决本地打包时遇到的报错。
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.

2 participants