
- 流式响应:逐字生成,无闪烁,支持中途停止(“发送” → “停止”按钮切换)
- 会话分组:每轮对话以卡片形式呈现,自动携带时间戳
- 思考过程折叠:使用
<think>...</think> 标签包裹思考内容,支持手动展开/收起
- 历史对话保留:新对话追加至原会话卡片,非新建独立卡片
- 语法高亮:基于 Pygments + Dracula 主题,支持 100+ 语言
- 行号对齐:
- 行号与代码 完美垂直对齐(即使长行自动换行)
- 行号 不可选中(
user-select: none)
- 行号宽度 动态计算(1~9999 行自适应)
- 交互增强:
- 右上角 一键复制 按钮(
📋)
- 左上角 语言标识(如
python),不干扰布局
- 深色主题 + 圆角边框 + 阴影,视觉清晰
- 上下文插入:支持
[变量名](key) 格式,点击可触发回调(如定位画布节点)
- 上下文标签:用户消息下方显示已插入的上下文标签(可双击执行)
- 多模态支持:可传递 Base64 图像启用视觉识别(需模型支持)
- 深色主题:全链路适配 Fluent Design 深色风格
- 滚动穿透:卡片内滚轮事件传递至外部
QScrollArea,操作流畅
- 响应式布局:卡片宽度填满容器,高度自适应内容(无固定高度)
- 操作按钮:每张卡片右上角提供 复制 / 删除 / 重试 按钮
| 模块 |
技术栈 |
| 渲染引擎 |
QWebEngineView(HTML/CSS/JS) |
| Markdown 解析 |
Python-Markdown(支持 fenced_code, tables, nl2br) |
| 代码高亮 |
Pygments(Dracula 主题) + 动态行号注入(JS) |
| UI 组件库 |
qfluentwidgets(Fluent Design for PyQt) |
| 流式更新 |
防抖 QTimer(80ms 延迟渲染,避免频繁重排) |
| 高度同步 |
JS scrollHeight + QWebEnginePage.consoleMessage 回调 |
pip install pyqt5 pygments markdown qfluentwidgets