• v8.0.4 749fb3f91c

    shuiyuPyLab released this 2026-08-08 00:54:36 +08:00 | 2 commits to master since this release

    v8.0.4 (2026-08-08) — 稳定性 & 存储升级

    🚀 重大改进:会话数据改用 SQLite 存储

    • 新增 xcli_core/session.py SQLite 后端:库文件 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 关键词搜索同时检索数据库会话,向后兼容未迁移的 JSON
    • SessionManager 类名与 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
  • v8.0.3 66de8eea13

    v8.0.3 Stable

    shuiyuPyLab released this 2026-08-07 23:35:42 +08:00 | 3 commits to master since this release

    小狸 Pro-CLI v8.0.3 — Vim 键位

    本次为体验增强版本,给 TUI 带来 Vim 风格键位,向 opencode 的「纯键盘流」交互进一步靠拢。

    ✨ 新功能:Vim 风格键位(默认开,/vim 可开关)

    输入框模态编辑 —— Esc 在 NORMAL / INSERT 间切换:

    • 移动:h j k l、w / b(跳词)、0 / $(行首/行尾)、^(首个非空白)、gg / G(文首/文尾)
    • 进入插入:i / a / o(插入/追加/下方新行)、I / A / O(行首/行尾/上方新行)
    • 编辑:dd(删行)、x(删字)、dw(删词)、d$(删到行尾)、u(撤销)
    • 普通模式下 回车 = 下移一行(与 vim 一致)

    聊天区导航(输入框未聚焦时生效):

    • j / k 逐行滚动、Ctrl+F / B 翻页、Ctrl+D / U 半页
    • Ctrl+Space 在输入框与聊天区之间切换焦点、i 聚焦并进入插入

    其它:输入框下方提示栏实时显示 -- INSERT -- / -- NORMAL --;/help 已补充 Vim 键位说明;可用 config.json 的 vim_mode: false 默认关闭。

    🛠 工程

    • 核心状态机抽成纯模块 xcli_core/vim_keys.py(VimInputState,不依赖 textual),配 tests/test_vim_keys.py,18 项动作单测全部通过
    • 版本号统一升至 v8.0.3

    注:本环境未安装 textual,无法在此跑通 TUI 实机冒烟;核心 vim 逻辑已单测覆盖,TUI 集成请在装有 textual 的环境验证。

    Downloads
  • v8.0.2 6f4fa5076f

    v8.0.2 Stable

    shuiyuPyLab released this 2026-08-07 19:53:16 +08:00 | 4 commits to master since this release

    小狸 Pro-CLI v8.0.2(小修复版本)

    🐛 Bug 修复

    • 加载动画在非 TTY 环境不再污染输出流(提交 c81914a)

      • _generate_response_with_animation 的 show_animation 用 print("\r...") 逐帧(约 10 帧/秒)输出 love.txt 情话 + spinner,仅真终端能原地覆盖;被聊天前端 / WebSocket 桥 / 管道 / 日志镜像捕获时每帧变成一行垃圾混进对话显示
      • 加 sys.stdout.isatty() 守卫:非 TTY 只输出单行提示、不跑逐帧 \r 动画
      • TUI 模式(tui_output_callback)本就跳过动画,不受影响
    • 非 TTY 环境保留情话「人味」(提交 1c52482)

      • 上一版修复导致聊天界面完全看不到情话,改为:非 TTY 在请求开始输出一句随机情话(💭 前缀,只打一次、零残帧)
      • love.txt 读取时过滤 http/https 行,避免把反战标语 / 网址当情话甩出
      • 真 TTY 逐帧情话 + spinner 动画、TUI 模式均不受影响
    • 修复文件管理器跨平台路径串台(提交 6f4fa50)

      • 模型在 Windows 主机上常给出 Linux/Mac 风格绝对路径(如 /home/user/Desktop、/Users/<谁>/Desktop、/root/Desktop),os.path.abspath 在 Windows 下会错误拼成 C:\home\user\Desktop 并报「路径不存在」
      • 新增 _resolve_cross_platform_path:Windows 下把 /home/<用户>/…、/Users/<用户>/…、/root/… 映射到当前用户家目录对应位置(~/Desktop 等);Linux/Mac 下这些路径本身合法,原样保留
      • file_manager 全部 10 个操作(list/read/write/append/copy/move/delete/search/info/mkdir)的路径解析均改用该归一化函数

    🛠 工程

    • 版本号统一更新至 v8.0.2(README 中英 badge / about.txt / 中央 VERSION / TUI banner / LSP·MCP clientInfo.version)

    详见 CHANGELOG.md

    Downloads