AtomCode 自动更新与版本发布分析
基于 release API 抓包、本地备份 binary 对比、二进制字符串分析 2026-06-22
1. 发布版本系统
1.1 版本来源
API: https://api.atomgit.com/api/v5/repos/atomgit_atomcode/atomcode/releases/latest
下载: https://api.atomgit.com/atomgit_atomcode/atomcode/releases/download/<tag>/<binary>
页面: https://atomgit.com/atomgit_atomcode/atomcode/releases1.2 支持平台与下载文件
| 平台 | 二进制文件 |
|---|---|
| Linux x64 | atomcode-v{version}-linux-x64 |
| Linux arm64 | atomcode-v{version}-linux-arm64 |
| macOS x64 | atomcode-v{version}-darwin-x64 |
| macOS arm64 (Apple Silicon) | atomcode-v{version}-darwin-arm64 |
| Windows x64 | atomcode-v{version}-windows-x64.exe |
| HarmonyOS arm64 | atomcode-v{version}-ohos-arm64 |
每个平台同时提供 .tar.gz 压缩包。
1.3 版本管理文件
latest.json — 包含最新版本元数据(从 release API 获取)2. 本地发现的版本
| 文件 | 版本 | 哈希 | 大小 | 创建时间 |
|---|---|---|---|---|
/usr/local/bin/atomcode | v4.25.3 (current) | 11f30561... | 28,447,568 B | 06-20 23:28 |
~/.local/bin/atomcode.bak | v4.25.1 (backup) | 5a026dd8... | 28,431,488 B | 06-19 13:59 |
staged/ | (空) | — | — | 06-20 23:28 |
backup binary 是之前的版本(二进制大小差 ~16KB),自动更新前被备份。
3. 更新流程(推断)
启动时检查 auto_update = true
→ 请求 releases/latest API
→ 比较本地版本与远程版本
→ 如有新版本:
1. 备份当前 binary 到 atomcode.bak
2. 下载新 binary 到 staged/
3. 替换 atomcode binary
4. 重启 daemon
5. 清理 staged/3.1 CLI 命令
| 命令 | 功能 |
|---|---|
/upgrade | 升级到最新版本 |
/upgrade rollback | 回滚到备份版本 |
/upgrade --force | 跳过版本检查强制升级 |
sudo atomcode upgrade | 需要提权安装 |
brew upgrade atomcode | Homebrew 方式升级 |
--dev 参数 | 禁用自动更新 |
4. v4.25.3 Release Notes 完整挖掘
通过 AtomGit API 获取到完整发布的版本说明:
4.1 新功能
写入审批增强:
- Workspace-aware 自动审批:工作区内非敏感写入操作自动批准
- 敏感路径保护:
~/.ssh、.env、/etc等敏感路径始终提示审批 - "总是允许" per 规范路径:出站写入权限按规范路径粒度缓存
4.2 修复
Windows 终端鼠标交互:
- 移除 Windows 控制台模式的主动管理
- conhost 和 Windows Terminal 上拖拽选择、复制、粘贴、滚轮恢复原生
- conhost 鼠标滚轮修复
JetBrains IDE / JediTerm:
- 修复 JediTerm 鼠标移动乱码(不再启用 Kitty 键盘协议)
- 修复 panic 时 Kitty 协议残留
写入审批:
- 修复"总是允许"退化为"允许一次"的 bug
edit_file/write_file的"总是允许"现在按工具粒度缓存
4.3 文档更新
- Slash-command 参考从 23 条补全至 48 条
- 新增
/goal、/effort、/review、/paste、/exit等命令文档 - 新增 Mode & autonomy 特性说明
- 新增微信通道插件文档
5. 更新相关源文件
crates/atomcode-core/src/self_update.rs
→ 全部更新逻辑
→ 含 rollback、force 升级
→ 备份 staged 机制相关结构体:
struct PendingUpgrade with 6 elements6. 更新过程安全性
| 步骤 | 安全措施 |
|---|---|
| 备份 | 自动创建 atomcode.bak |
| 回滚 | /upgrade rollback 可用 |
| 失败处理 | "upgrade failed" 消息 + 回滚 |
| 权限检查 | sudo atomcode upgrade |
| 提权提醒 | "Re-run with elevated privileges" |
7. 二进制差异统计
| 对比项 | v4.25.1 (backup) | v4.25.3 (current) | 差异 |
|---|---|---|---|
| 文件大小 | 28,431,488 B | 28,447,568 B | +16,080 B |
| 哈希 | 5a026dd8... | 11f30561... | 完全不同 |
| 更新日期 | 06-19 | 06-20 | ~1 天间隔 |
| 自动更新 | 启动触发 | 启动触发 | — |
差异主要在:写入审批系统、Windows 终端处理、JetBrains IDE 兼容性。
逆向命令索引
bash
# 提取自更新相关
strings atomcode.bin.bak | grep -iE "self_update|PendingUpgrade|upgrade|rollback" | sort -u | head -10
# 提取升级命令
strings atomcode.bin.bak | grep -E "upgrade|rollback|ATOMCODE_INTERNAL_PREPARE" | sort -u
# 输出: /upgrade [rollback|--force] ATOMCODE_INTERNAL_PREPARE_UPGRADE