-
released this
2026-08-08 00:54:36 +08:00 | 2 commits to master since this releasev8.0.4 (2026-08-08) — 稳定性 & 存储升级
🚀 重大改进:会话数据改用 SQLite 存储
- 新增
xcli_core/session.pySQLite 后端:库文件chat_history/conversations.db,启用 WAL 模式 - 两张表:
sessions(id,title,created_at,updated_at,engine,model,messages)与snapshots(name,saved_at,messages) - 首次启动自动迁移:扫描旧
chat_history/*.json,id+messages写入sessions、纯conversation写入snapshots,迁移后移入_migrated_json/并写.migrated标记;迁移包在 try/except 中,绝不阻塞启动 /chat save|list|open与/resume改走 SQLite;memory.py关键词搜索同时检索数据库会话,向后兼容未迁移的 JSONSessionManager类名与new_session/save/list_sessions/resolve/load接口不变,旧调用方零改动
🐛 Bug 修复 / 体验:去掉「一直打印加载动画」的根源
- 移除流式显示:
_typeprint改为一次整段打印(去掉逐字符time.sleep打字机循环) - 移除常驻加载动画:
_generate_response_with_animation去除show_animation线程、love_sentences、animation_running事件与逐帧输出;TTY 仅打印一行静态💭 思考中… (按 ESC 取消),完成后清除该行 - 经核查 OpenAI / Ollama 引擎本就用
stream: False,「流式」实为打字机 + 逐帧动画,本次一并去除
✨ 新功能:展示消息过长自动截断(仅展示层,存储完整)
cli_display.py新增_truncate_for_display:超过 4000 字符 / 160 行时保留前若干并追加… (展示已折叠,完整内容共 N 字符 / M 行,已完整保存到会话)- 底层会话数据(
messages)不做任何截断,完整保存
🛠 工程:工具调用解析更稳,减少因格式错误浪费 token
_loads_json升级 4 级兜底修复:①标准 → ②未配对反斜杠转义 → ③字符串内未转义换行/制表符 → ④多余尾逗号删除,全局统一复用- 新增
_extract_last_action_json:扫描所有成对错括号对象(字符串感知),返回键集合与CONTROL_KEYS相交的最后一个候选;开头即[纯数组(多次工具调用)直接返回数组;替代脆弱的「方法5/6/7」正则抓取 _build_fc_tools去除「续轮剥离 Function Calling 工具」逻辑,续轮也始终下发 FC 工具,模型可用结构化调用而非散文 JSON- 配套独立校验 8 用例全过(未转义换行、纯数组、尾逗号、正文误触发不应判为工具等边界)
完整会话历史与代码保持不变,升级后旧 JSON 会话会在首次启动时自动迁入 SQLite,无需手动操作。
Downloads
- 新增