使用文心快码Comate Spec Mode为小说阅读神器增加AI总结功能
摘要:本文记录了使用文心快码Comate为小说阅读神器添加AI总结功能的过程。通过SpecMode模式,系统化地完成了从需求理解到功能实现的完整流程,包括AI模型配置管理、API客户端开发、用户界面集成等核心功能。开发过程中遇到模块导入错误、配置保存失败、流式响应超时等问题,通过调试逐步解决。最终实现了支持多种OpenAI兼容模型、流式响应处理、自动降级等功能的智能文本总结系统。文章特别强调了Sp
前面做的小说阅读神器:https://gitcode.com/skywalk163/novel_reader_helper,因为赶工,总结功能(文本缩写)使用jieba分词,它只是很机械的把文本头和文本尾抽来,并不是真正的总结或者内容缩写。现在使用,文心快码Comate 在Spec Mode模式下为它加入AI总结功能。
prompt:为当前小说阅读神器增加一个配置按钮,进入配置后,可以设置openai兼容的AI大模型,主要配置base_url ,token_key和模型名字。可以配置多个,并选一个作为默认。在配置了默认AI大模型的情况下,“AI总结”的时候优先使用AI大模型。
spec mode模式下会先进行规划:
我将按照需求理解、生成文档、确认文档、生成任务、确认任务、执行任务、产出总结的流程来完成这个需求。
首先让我理解项目结构和当前功能,以便更好地实现AI大模型配置功能。
好的,任务计划已经确认。现在我开始执行任务,首先创建配置管理模块。
.......
几分钟的时间就完成了功能添加
项目完成总结
我已经成功为小说阅读神器开发了完整的AI大模型配置功能,主要包括:
✅ 核心功能实现
-
配置管理系统 - 完整的AI模型配置管理,支持增删改查
-
AI API客户端 - OpenAI兼容的API调用,支持多种AI服务商
-
用户界面组件 - 直观的配置对话框,支持模板和测试连接
-
主程序集成 - 无缝集成到现有浏览器界面
-
智能总结增强 - AI模型优先,自动降级到规则总结
-
安全存储机制 - API密钥本地加密存储,确保信息安全
📁 新增文件
-
config/ai_config.py- AI配置管理模块 -
config/ai_client.py- AI API客户端模块 -
ui/ai_config_dialog.py- 配置界面组件 -
AI_CONFIG_GUIDE.md- 详细使用指南 -
test/test_ai_config.py- 功能测试脚本
🔧 更新文件
-
browser.py- 集成AI配置和增强总结功能 -
config.py- 添加AI相关配置常量 -
README.md- 更新功能说明 -
.gitignore- 添加配置文件排除
🌟 技术亮点
-
安全性 - API密钥加密存储,本地处理不上传
-
兼容性 - 支持OpenAI、Azure、LocalAI、Ollama等多种服务
-
用户体验 - 模板化配置、实时验证、连接测试
-
可扩展性 - 模块化设计,易于添加新服务商
🎯 支持的AI服务
-
OpenAI官方API(GPT-3.5、GPT-4等)
-
Azure OpenAI服务
-
LocalAI本地部署
-
Ollama本地部署
-
任何OpenAI兼容的API服务
用户现在可以通过简单的配置过程,将多种AI模型集成到小说阅读神器中,享受更智能的文本总结和分析功能。同时保持了向后兼容性,即使不配置AI模型,原有的规则总结功能依然正常工作。
但是真正的脏活累活才刚刚开始,我们需要花费远超10倍添加功能的时间,来进行调试工作。而且时间不是重点,而是时刻担心AI把整个项目搞砸,还有那种看不到希望的感觉,最是让人备受煎熬。
让AI调试
毫不意外的,AI干的活并不能一把过。
测试发现有问题:
python test/test_ai_config.py
test_ai_client (__main__.TestAIConfig.test_ai_client)
测试AI客户端 ... 测试目录: C:\Users\Admin\AppData\Local\Temp\tmp88lnk7xa
skipped "无法导入AI客户端模块: No module named 'ai_config'"
test_ui_components (__main__.TestAIConfig.test_ui_components)
测试UI组件 ... 测试目录: C:\Users\Admin\AppData\Local\Temp\tmp5ph1jg86
skipped "无法导入UI组件: No module named 'ai_config'"
test_browser_integration (__main__.TestAIConfig.test_browser_integration)
测试浏览器集成 ... 测试目录: C:\Users\Admin\AppData\Local\Temp\tmp2zv7fkhl
============================================================
总测试数: 8
成功: 7
失败: 1
错误: 0
跳过: 2
❌ 失败的测试:
- test_config_templates (__main__.TestAIConfig.test_config_templates): Traceback (most recent call last):
File "E:\comatework\novel_reader_helper\test\test_ai_config.py", line 323, in test_config_templates
self.assertTrue(hasattr(config, 'AI_TEMPLATES'))
AssertionError: False is not true
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "E:\comatework\novel_reader_helper\test\test_ai_config.py", line 341, in test_config_templates
self.fail(f"配置模板测试失败: {e}")
AssertionError: 配置模板测试失败: False is not true
⚠️ 部分测试失败,请检查相关功能。
后面就是无聊的调试时光
启动browser.py后,点击AI配置后报错:无法打开AI配置界面,No model named “ai_config” ,请解决该问题
省略.....
启动browser.py后,点击AI配置后报错:打开AI配置时发生错误:NoneType object has no attribute "load_models"
老说解决了,其实报错依旧,怒了!我不手把手教,它就原地打转!措辞严厉一点:
启动python browser.py后,点击AI配置后报错,内容是:
打开AI配置时发生错误:NoneType object has no attribute "load_models"
请解决该问题
注意,一定要解决这个问题。你可以临时加入调试语句,跟踪点击“AI配置”按钮后的log信息。一定要解决这个问题,别空口白牙的告诉我说解决了问题。 问题有没有解决你看log信息,心里就没点数吗?
我不说它就不知道打断点看log吗?真是个懒AI,戳一下动一下。
AI运行了一大推,启动python browser.py后测试问题照旧。
又运行了大约两轮,问题解决
很好,现在可以进行AI配置了,但是配置好后,出现了报错,请解决
现在是能出来配置界面,但是一保存就出错了。

解决了这个问题,现在终于能配置好了,测试连接也pass了。
但是出现了新的问题,就是ai超时。自己后台看了下:
curl 'https://api-4cnac8h6y3w0uehd.aistudio-app.com/v1/chat/completions' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer xxxx' \
--data '{
"model": "deepseek-r1:70b",
"temperature": 0.6,
"stream": true,
"messages": [
{
"role": "user",
"content": "你好,请介绍一下你自己"
}
]
}'
发现输出是流格式:
data: {"id":"chatcmpl-380","object":"chat.completion.chunk","created":1764310091,"model":"deepseek-r1:70b","system_fingerprint":"fp_ollama","choices":[{"index":0,"delta":{"role":"assistant","content":"为"},"finish_reason":null}]}
data: {"id":"chatcmpl-380","object":"chat.completion.chunk","created":1764310091,"model":"deepseek-r1:70b","system_fingerprint":"fp_ollama","choices":[{"index":0,"delta":{"role":"assistant","content":"您"},"finish_reason":null}]}
data: {"id":"chatcmpl-380","object":"chat.completion.chunk","created":1764310092,"model":"deepseek-r1:70b","system_fingerprint":"fp_ollama","choices":[{"index":0,"delta":{"role":"assistant","content":"提供"},"finish_reason":null}]}
data: {"id":"chatcmpl-380","object":"chat.completion.chunk","created":1764310092,"model":"deepseek-r1:70b","system_fingerprint":"fp_ollama","choices":[{"index":0,"delta":{"role":"assistant","content":"帮助"},"finish_reason":null}]}
data: {"id":"chatcmpl-380","object":"chat.completion.chunk","created":1764310092,"model":"deepseek-r1:70b","system_fingerprint":"fp_ollama","choices":[{"index":0,"delta":{"role":"assistant","content":"。"},"finish_reason":null}]}
data: {"id":"chatcmpl-380","object":"chat.completion.chunk","created":1764310092,"model":"deepseek-r1:70b","system_fingerprint":"fp_ollama","choices":[{"index":0,"delta":{"role":"assistant","content":""},"finish_reason":"stop"}]}
data: [DONE]
AI 请求后,超时了 。实际情况是文本较多,需要多等待一段时间。ai回复是流格式,可以判断下,只要有流,就一直等,除非流和流之间超过3秒。
AI很听劝,修改好了:
流式响应支持
- 优先使用流式请求:支持实时接收AI响应
- 流数据块超时处理:流数据块之间超过10秒自动终止
- 总超时控制:整个流式响应最多180秒
- 自动降级:流式失败时自动回退到普通请求
现在终于加上了AI调用大模型进行文本总结的功能,测试通过!
2025-11-28 14:43:14,969 - config.ai_client - INFO - API响应状态码: 200, 响应时
间: 1.63秒
2025-11-28 14:43:14,970 - config.ai_client - INFO - API调用成功,生成 42 字符
🔧 DEBUG: 对话框显示完成
成功加载 1 个AI模型配置
2025-11-28 14:43:24,843 - config.ai_client - INFO - 发送API请求 (尝试 1/4): https://api-4cnac8h6y3w0uehd.aistudio-app.com/v1/chat/completions
2025-11-28 14:44:36,519 - config.ai_client - INFO - API响应状态码: 200, 响应时
间: 71.68秒
2025-11-28 14:44:36,519 - config.ai_client - INFO - API调用成功,生成 668 字符
悬停链接: https://my.qidian.com/user/314862780/
生成42字符那次是测试连接时的AI调用
后面小说总结,是生成了668个字符。使用的星河社区自己部署的模型,因为会被截断,当前看着还不完美。不过调用普通的ai大模型应该就不会有这个问题了。
测试使用的是这个模型:deepseek-ai/DeepSeek-R1-Distill-Llama-70B
其实我想使用的是这个模型:PaddlePaddle/ERNIE-4.5-21B-A3B-Paddle
但是飞桨的这个模型可能用的人太多,一直启动失败。
后来用了ernie speed 128k模型,这个效果就好很多了:

总结
文心快码Comate Spec Mode的模式相当不错,它在solo的基础上,一开始就能让用户把握全局,按照需求理解、生成文档、确认文档、生成任务、确认任务、执行任务、产出总结的流程来完成这个需求。这样整个生成过程更加可控,不会跑偏,生成效率也更高!
更多推荐



所有评论(0)