AtomCode v4.25.0 Release Notes
发布日期:2026-06-06
v4.25.0 聚焦于 ! Bash 直接执行模式、DeepSeek V4 推理强度控制、前缀缓存稳定性优化、MCP 工具审批增强、WebUI 交互与视觉升级,以及多项 Windows 兼容性修复。
✨ 新增功能(Features)
! Bash 直接执行模式
- 核心实现:输入行以 ! 开头即直接在本地 shell 执行命令,不启动 LLM 轮次
- 上下文注入:执行结果以 // 标签注入对话,模型在下一次真实消息时可见
- Bash 工具重构:提取 run_shell 执行内核,bash_execute(模型调用)与 ! 模式(用户调用)共享底层,消除重复逻辑
- 输出安全:XSS 防护——输出中的 HTML 标签自动转义,大输出按字符/行数截断
- 单调 call_id:LocalShell 使用单调计数器保证 call_id 唯一性
DeepSeek V4 reasoning_effort 推理强度控制
- /effort 命令升级:三级循环(off → high → max),TUI 状态栏与 spinner 同步显示当前级别
- Provider 侧门控:仅 DeepSeek V4 系列模型生效,其余模型显示"不适用"提示
- 配置支持:ProviderConfig 新增 reasoning_effort 字段,加载时校验合法值
MCP 工具审批增强
- 服务级信任:配置 trust: true 整服务端自动审批
- 逐工具永久授权:配置 autoApprove 列表,或 UI "永久允许此工具"一键写入 .mcp.json
- 失败服务可见:/mcp 状态列表展示连接失败的服务及错误信息,不再静默消失
@-mention 文件索引异步化
- 后台线程扫描:build_async() 不阻塞事件循环
- 浅层预扫描:根目录直接子节点秒级可用,首次 @ 不卡顿
- /cd 后索引重置:FileIndex::reset() 切换根目录、清缓存、取消后台扫描,下次 @ 在新目录重建
- gitignore 一致:浅层扫描与完整扫描应用相同 gitignore 过滤,无闪现消失
WebUI 增强
- 对话消息重构:按时间序交错展示 text/tool(与 TUI 一致),不再将所有工具折叠到消息头部
- 工具调用展示:每种工具类型提取关键参数作为摘要(文件路径、命令、搜索模式等)
- 模型选择器:支持文字过滤,匹配 provider 名、type 和 model
- 暖色主题:亮色主题从冷灰切换到暖米色调,视觉更舒适
- 数据刷新时间:Referral 面板显示相对时间("3 分钟前"),而非固定"刚刚"
LiveSession 同步增强
- /cd 跨视图同步:WebUI /cd 切换工作目录时,TUI 自动跟随切换并开新会话
- 三端统一:LiveSession 与 TUI/WebUI 当前会话统一,修复 #561(三端历史分离)
- 去重 + 延迟加载:SessionMode::Webui 去重合并,会话历史延迟加载避免无谓读盘
TUI 交互
- 菜单改进:/ 命令菜单唤醒后不被版本检查/空闲重绘覆盖
- Session 删除:/session 选择器支持 Ctrl+D 删除会话(二次确认),删除后自动定位
- 工具名显示:MCP 工具名以中点 · 分隔服务端与工具名,视觉更清晰
- 工具调用渲染:名称加粗、详情灰色,多样式行排版
管理员/root 检测
- 启动警告:检测以管理员/root 身份运行时,TUI 顶部横幅 + headless 模式 stderr 警告
429 限流分类
- 配额耗尽 429 不可重试:识别月度配额耗尽(非瞬时限流),避免无意义重试延长冷却
🛠 修复(Fixes)
缓存稳定性(前缀缓存)
- 渲染级 drop 路径延迟到持久压缩阈值:修复 build_messages 在 80% 预算时触发 drop,导致摘要随轮次滑动、前缀缓存每几轮断裂的问题(实测占 v4.25.0 剩余缓存未命中的 50.8%)
Windows 兼容性
- Hook 系统:使用 shell_command() 替代硬编码 sh -c,Windows 上走 cmd.exe /C
- 子进程输出解码:OEM 代码页自动检测 + CJK 回退(UTF-8 Beta 模式下 cmd.exe 资源串仍为 GBK 等原始编码)
- 控制台代码页警告:启动时检测输入代码页非 UTF-8,提示 IME 可能乱码并建议使用 Windows Terminal
- 清单 XML:修正 supportedOS 结构
- 自升级跨盘:robust_rename 检测跨设备错误自动回退到 copy,修复 staging 与安装目录在不同盘时升级失败
终端背景检测
- DA1 锚定:OSC 11 查询后追加 DA1 查询作为排空锚点,彻底消除 SSH/tmux 下 OSC 11 回复泄漏到输入框的问题,不再依赖固定超时
滚动与渲染
- 移除 smooth 动画:消除 bash 长命令执行时输入框频闪
- BSU/ESU 包裹:patched frame 正确包裹 Sync Update 序列,修复 patched 帧后光标重定位丢失
TUI
- Spinner effort 提示读取 ctx(匹配状态栏),而非 state
- Caret 重定位:patched frame 后重新定位光标,不仅限于光标移动时
WebUI
- --host 0.0.0.0 时移除多余的 127.0.0.1 绑定行
认证与安全
- 热路径时间戳:SystemTime::now().unwrap() 替换为安全处理,消除 panic 风险
- AtomCode 自身配置目录写入自动审批:is_under_atomcode_home() 同时检查原始路径与规范路径
- 敏感目录保护:.ssh / .aws / .gnupg 写入拦截(移除 .config,避免误杀合法操作)
自回归失控检测
- RunawayDetector:连续重复字符超过阈值自动终止轮次,防止 token 浪费
MCP
- OAuth token 刷新与登录:修复 Windows 代码页处理
Referral
- 未认证时先渲染静态区再显示登录态,修复空白页
- refreshedAt 时间戳展示
构建
- CLI 主函数改为显式大栈线程运行,避免 Windows 1MB 默认栈溢出