Atlas 新手教程

Atlas 新手教程

给编程智能体做「版本控制」的桌面应用。它把每一次 agent 会话和你提交的代码连成一条链——几个月后你还能问:这段代码是哪个 agent 写的、当时让它干什么、它怎么想的。

Rust + Tauri v2 仅 macOS 受支持 alpha-0.3.1 MIT 许可 4,728 Stars 官方文档 GitHub 源仓库

01这是什么

一句话:Atlas 是编程智能体的源代码管理器(source control for coding agents)——它管的不是代码,是「产生代码的过程」。

4,728
GitHub Stars
0.3.1
最新版本(alpha)
MIT
开源许可
Rust
主语言 + Tauri v2
2026-05
首次发布

你打开一个项目文件夹,在里面跑 Claude Code、Codex、Atlas 自带的 agent,或者任何符合 ACP(Agent Client Protocol)协议的 agent。agent 每一次提交都会变成一个检查点(checkpoint),并反向链接回产生它的那次会话——提示词、工具调用、它改过哪些文件,全部绑在一起。

核心机制

git commit 记录的是「代码变了什么」;Atlas 的检查点记录的是「谁让它变、为什么变」。两者用同一个提交连起来,而且这份记录活在本地。

它明确不做什么

新手最容易误解的地方,往往不是「它能干什么」,而是「它是不是又一个 X」。先把边界划清:

它不是一个新 agent

Atlas 不跟你抢「谁的模型更强」。它是调度方:Claude Code、Codex、Cursor、OpenCode、Kilo Code 都在同一个窗口里跑,走同一条发送路径。

它不是云端 IDE

本地优先。代码、笔记、会话都留在你机器上,账号是可选的。唯一需要联网的场景,是你自己选的那个 agent 要调 API。

它不是团队 code review 平台

检查点服务的是你自己事后追问「这段代码背后的那次会话发生了什么」,不是给别人贴评论、开讨论串。

它不是跨平台的

官方写得很直白:只有 macOS 是受支持的平台。Linux 和 Windows 能从同一套 Tauri 代码编译,但未经测试,作者欢迎这两个平台的问题反馈。

项目还很年轻——首次发布在 2026 年 5 月,当前是 alpha-0.3.1。作者在贡献指南里列出的求助方向也很实在:Linux / Windows 生产包测试、更多 ACP agent、LSP 支持、MCP 接入、主题配色。

02为什么需要它

先看你今天是怎么凑合的——如果下面三条你一条都没中,那 Atlas 可能真的不是给你用的。

三个常见的失败 workaround

你现在的做法它会在哪一步断掉
靠终端滚动历史,或者 agent 自己的 --resume终端一滚就没了;而且 agent 之间读不到彼此的记录——Claude Code 的会话历史,Codex 看不见。
在每个仓库手写 CLAUDE.md / AGENTS.md每个 agent 只认自己那一份,于是同一件事被抄成好几份;改了一处,另外几处悄悄过期。
把 agent 生成的东西直接提交,之后靠 git log 猜提交信息只说了「改了什么」。三个月后你盯着一处诡异的实现,没人能告诉你当初让它干什么。

核心洞察

把这三条串起来看,会发现它们是同一个缺口的不同表现:agent 的产物(代码)已经有版本控制了,agent 的过程(提示词、工具调用、推理、失败)没有。

Atlas 的做法是给「过程」补上这一层,然后让两边在「提交」这个点上咬合起来。它有三条不变量,理解了这三条,后面所有功能你都能自己推出来:

不变量含义
Atlas 拥有历史侧边栏只读 Atlas 自己的 threads.db,不读 agent CLI 的私有存储(ADR-0001)。所以 agent 换版本、改存储格式,你的历史还在。
线程 ≠ 会话thread 是 Atlas 跟踪的对话(id 由 Atlas 生成),session 是 agent 那一侧的对话(ACP id)。两者对「一条消息」的理解本来就不同,中间有专门一层做调和。
流独立于标签页agent 的输出流由投影层广播,不挂在 UI 组件上。所以切标签页不会打断正在跑的某一轮。
一句话记住

别人给你的是「一个聊天面板贴在一个编辑器上」;Atlas 给的是「agent 运行时 + 共享记忆 + 会话历史」这三样当地基,编辑器和终端反而是后来砌上去的墙。

03核心概念与流程

三个动作就能走完一圈:打开项目、跑一个会话、看检查点。

① 打开项目
→
② 跑会话
→
③ 看检查点

先认词

官方文档把每个术语只在「概念」页定义一次,别处一律链接过去。这里把你会立刻用到的挑出来:

项目 · Project

Atlas 工作的一个文件夹,外加它旁边创建的 .atlas/ 目录。打开文件夹是它唯一要求的设置——没有配置文件,没有向导。

组织 · Organisation

拥有项目的账号容器,带成员和角色。每个项目属于恰好一个组织;Atlas 自动给你建一个本地「Personal」,所以你永远不用自己去建。

会话 · Session

一次 agent 对话,被记录下来、可恢复:每条消息、每次工具调用、每处文件改动,实时落盘。

检查点 · Checkpoint

会话与它所产生的那次提交之间的链接。一个会话可以产生多次提交,每次各自成为一个检查点。这是 Atlas 区别于普通聊天面板的东西。

时间线 · Timeline

一个项目里所有会话和检查点的记录。它的用途只有一个:不用读原始对话,也能找回一次改动背后的推理。

共享记忆 · Shared memory

设备端索引,每个 agent 都往里写、也都从里读:计划、决定、文件改动、失败。

知识库 · Knowledge base

.atlas/knowledge/ 里的 markdown 笔记。共享记忆是 Atlas 自己推断出来的,知识库是你主动决定值得写下来的。

提及 · Mention

在提示里 @ 任何东西:文件、文件夹、符号、分支、笔记、论文、过去的会话……

技能 / 包 · Skill / Pack

技能是一个 SKILL.md,按全局或项目划分作用域,再按 agent 分别启用。包是一堆技能 / 命令 / 钩子 / 子 agent / 规则的合集,通常来自一个 GitHub 仓库。

主流程

下面这条链路是 Atlas 唯一真正重要的东西。注意最后一步:检查点不是一个静态记录,你可以直接跟它对话。

打开项目 ⌘O 选一个文件夹 跑一个会话 选 agent,发消息 agent 提交代码 git commit 检查点 · 时间线 回到产生它的会话 提交是被「观察」的,不是被拦截的——在终端里提交,一样能找回会话 打开项目 ⌘O 选一个文件夹 跑一个会话 选 agent,发消息 agent 提交代码 git commit 检查点 · 时间线 回到产生它的会话 提交是被「观察」的,不是被拦截的
关键区别

Atlas 不装 git 钩子、不改 git 配置、不写 ref。它是旁观 git 历史,然后做匹配。这就是为什么「在终端里提交的代码」也能被认领,也是为什么「一次纯人工提交不会被误挂到 agent 头上」。

04安装:两条路

先想清楚你要干什么:只是想用,还是想改代码。这决定了走哪条路,也决定了要不要装 Bun 和 Rust。

路 A · 下载 .dmg

从 tryatlas.cc 或 Releases 拿最新安装包。适合只想用的人。

下载前务必分清芯片:

  • Atlas_0.3.1_aarch64.dmg — 78.8 MB,Apple Silicon(M 系列)
  • Atlas_0.3.1_x86_64.dmg — 87.4 MB,Intel

下错架构通常不会报「架构不匹配」这么清楚,一般表现是打不开,或者要 Rosetta 兜一圈。

路 B · 源码构建

想改代码、想给上游提 PR,或者你就是要跑最新 main,走这条。

需要三样东西:Bun、Rust(stable,用 rustup 装)、Xcode Command Line Tools。

项目自带 mise.toml 锁定 Bun 版本:用 mise 的话 mise install 会自动装对版本;不用 mise 直接装 Bun 也可以。

源码构建:最短路径

干净克隆就能跑起来,不需要 API key,不需要 .env,不需要账号。

git clone https://github.com/pacifio/atlas
cd atlas
bun install
bun run dev:app
第一次会等很久

首次 Rust 编译要几分钟,之后每次只要几秒。bun run dev:app 会让前端热重载,但 Rust 改动必须重启。

容易混淆的两条命令

这是这个项目里新手最容易踩的第一个坑:

bun run dev:app ← 默认用这个

完整应用:Vite 前端 + Tauri 外壳 + Rust 后端,三个都在。

任何涉及 invoke() 的功能都要求它。前端改动会热重载,Rust 改动必须重启。

bun run dev

只有 Vite,没有 Tauri 外壳,启动更快。

纯调 UI 样式时可以用它;但点任何真实功能都会失败——因为后端根本不在。

如果你在 Linux 上构建(提醒:不受支持、未经测试),系统依赖得自己装:
# Debian / Ubuntu / Linux Mint:
sudo apt install -y libglib2.0-dev libgtk-3-dev libwebkit2gtk-4.1-dev

# Fedora / RHEL:
sudo dnf install glib2-devel gtk3-devel webkit2gtk4.1-devel

# Arch Linux / Manjaro:
sudo pacman -S glib2 gtk3 webkit2gtk-4.1

# openSUSE:
sudo zypper install glib2-devel gtk3-devel webkit2gtk3-devel

生产构建有两个目标:bun run build:app 出 .app 包,bun run build:app:dmg 再加一层 dmg 安装器。

05环境自检与 agent 选择

装完了先别急着发消息。跑四条命令,把「环境问题」和「应用问题」提前分开。

bun --version        # 期望:1.x
rustc --version      # 期望:stable,例如 1.8x
xcode-select -p      # 期望:打印 CommandLineTools 路径,而不是报错
which claude         # 只有你要用 Claude Code 才需要

最关键的一个认知分歧点

Atlas 里有两种 agent,它们在「谁负责装、在哪运行」上完全不同。这是读官方文档时最容易被跳过、但实际最影响体验的一节。

原生 agent(内置)

进程内运行,引擎是 Codex 的硬分叉(vendored,见 ADR-0004),所在 crate 叫 atlas-native-agent。

什么都不用装。它在应用里,装完 Atlas 就能用。

一个冷知识:它在存储里的 agent id 至今还是字面量 "cersei"——那是存储键,不是遗留引用;改名会让已有的历史变成孤儿。

外部 ACP agent

以子进程方式运行,通过 stdio 讲 JSON-RPC(Agent Client Protocol,Zed 那一套)。

Codex、Cursor、OpenCode、Kilo Code 在你第一次选中它们时会在后台自动安装。

Claude Code 需要你本机的 claude CLI;缺了的话输入框上方会有横幅,提供安装和登录入口。

别被「找不到 agent」吓到

全新安装的 Atlas 不附带任何 ACP agent,只有原生 agent——这是刻意的设计决定(ADR-0002)。所以第一次打开时列表很短是正常的,其他 agent 要你从 Marketplace 装了才存在。顺带一提:Atlas 在 PATH 里发现某个二进制,只代表「检测到了、可以提供」,不等于它自动成为候选。

依赖总表

组件是否必需说明
Bun源码构建必需包管理与脚本运行;仓库用 mise.toml 锁版本
Rust(stable)源码构建必需用 rustup 安装
Xcode Command Line Tools源码构建必需(macOS)提供系统编译链
claude CLI仅 Claude Code agent 需要缺了会有横幅引导安装
API key / 账号都不需要Atlas 本身不需要;但你要用的那个 agent 需要它自己的登录
.env不需要只有想把遥测指向自己的 PostHog 项目时才复制 .env.example;留空则遥测永久失效
每个 agent 保留自己的认证方式和模型选择。内置 agent 有 Atlas 提供的设置引导;从 registry 装的 agent,按它卡片上链接的仓库或官网去配。

06第一次实战:跑通检查点

官方说得很干脆:没有安装向导,你打开一个文件夹,就在工作了。从打开文件夹到看见第一个检查点,按顺序走一遍。

第 1 步 · 打开项目

按 ⌘O,或者点 Open Folder,挑一个磁盘上的文件夹。这个文件夹就成了一个项目,Atlas 不会先问你任何配置——没有提示、没有信任对话框。

下次启动时,它会出现在欢迎界面的最近项目列表里。

一个安静但值得知道的细节:Atlas 不会一打开就创建 .atlas/ 目录。记忆、知识库、画布这些功能,各自在第一次被使用时才创建自己那一块。唯一自动发生的事是——它会把你项目 .gitignore 里的 .atlas/ 补上(如果还没有的话)。

第 2 步 · 选 agent

Atlas 打开时停在一个聊天面板上。点输入框里的 agent 图标可以切换,或者直接按 ⌥/ 循环切换,不用碰鼠标。

agent怎么到位
Atlas Agent(原生)内置,什么都不用做
Claude Code需要本机 claude CLI,缺了会有横幅引导安装 + 登录
Codex / Cursor / OpenCode / Kilo Code第一次选中时后台自动安装
其他 ACP agent去 Settings → Agents,从 registry 手动装

第 3 步 · 跑一个会话

发一条消息。这次对话就是一个会话,会被记录,之后能从同一个面板恢复。

当 agent 改了文件并提交时,你不需要做任何事来保留这次提交背后的上下文——Atlas 会自动把提交链接回产生它的会话。这是整个产品存在的理由,所以它必须自动。

第 4 步 · 看见检查点

那个链接就是检查点。打开 Git 面板选中那个提交,你会看到 "Produced by 1 session",点一下就会跳回时间线里的那次会话。

时间线头部还有一个「Recent Checkpoints」列表,可以直接搜索。

验收标准

如果你按上面走完,能在一个提交上看到「Produced by 1 session」并且点得进去——说明核心链路已经通了。剩下所有功能都是这条链路的延长线。

如果想先跑一下源码版

git clone https://github.com/pacifio/atlas
cd atlas
bun install
bun run dev:app      # 首次 Rust 编译几分钟,之后秒级

提交之前想先检查一遍的话,这几个命令是你最常用的:

bun run lint              # oxlint on src/
bun run format:check      # oxfmt --check on src/
bun run typecheck         # 前端类型检查(含测试代码)
bun run test              # 前端与跨层测试
bun run test:rust         # 每个 Rust crate + src-tauri --lib
cargo check --workspace   # 全工作区的 Rust 类型检查

07产物结构:.atlas/ 里到底存了什么

这一节值得慢慢看。Atlas 对「你的数据归你」这件事的态度,全写在这个目录结构里。

<你的项目>/.atlas/
├── sessions.db            检查点 / 时间线记录(SQLite)+ blobs/
├── knowledge/             markdown 笔记,可以有子目录
├── shared-memory/         跨 agent 的记忆事实
├── memory/                设备端 RAG 索引(atlas-memory)
├── codebase-index/        atlas-codeindex 的输出
├── repos/                 通过 GitHub 面板克隆下来的仓库
├── skills/, agent-skills/ SKILL.md 文件
├── packs/                 已安装的包
├── plans/                 计划文档
├── screenshots/, canvas-media/
├── logs.jsonl             项目级活动日志
├── interactions.jsonl     知识库交互历史
├── canvas.json            ReactFlow 的节点/边状态(Canvas / Spaces)
├── editor-state.json      打开的标签页 + 分栏布局
├── project.json           项目级设置
├── recent-files.json      最近文件列表
└── git-status-cache.json  缓存的 git status

三个层级,别混

位置存什么说明
<项目>/.atlas/项目相关的一切跟着代码走。设计上它会被自动加进 .gitignore,所以通常不随 git 分发。
~/.atlas/置顶的活动日志行只有 log/pinned.jsonl——你钉住的日志能跨重启保留。
<app-config-dir>/threads.db会话历史macOS 上是 ~/Library/Application Support/dev.atlas.ide/。这是全局的,不属于任何单个项目。

设计原则:只有一样东西被锁进专有格式

README 承诺「Nothing is locked in」,落实下来是这样的:

笔记是 Markdown

知识库就是一堆 .md 文件,和代码一起放在项目里。哪天你不想用 Atlas 了,它们还是能用的笔记。

画布是 JSON

canvas.json 存节点和边。结构化、可读、可脚本处理。

会话是 JSONL

logs.jsonl、interactions.jsonl,一行一条,标准的追加式日志格式。

编辑器状态是磁盘文件

editor-state.json / project.json 等,重启后按项目恢复。

唯一的例外

检查点记录用 SQLite,存在项目内的 .atlas/sessions.db(另有一份会话历史的库在应用配置目录下)。这是唯一一个「你得靠 Atlas 才读得舒服」的数据。作者没有藏着这一点。

一个实用推论:因为 .atlas/ 被加进了 .gitignore,你的队友克隆仓库后拿不到你的会话记录。Atlas 的解法是另一条线——用组织(Organisation)做跨设备、跨成员的同步;本地那份始终是各自独立的。

08怎么用:@ 提及、斜杠命令、快捷键

Atlas 的设计目标是「让一次会话整个发生在应用里」。所以它的键盘密度很高——学会这几个,你会明显少用鼠标。

@ 提及:本地解析,不塞全文

在任何输入框里打 @,就能把某样东西拉进上下文。可提及的类型比多数人预期得多:

类型是什么
file / folder项目里的任何文件或文件夹
symbol一个函数、类,或其他代码符号
note知识库里的一条笔记
component从包里装来的命令、子 agent 或规则
repo一个克隆下来的 GitHub 仓库
project另一个项目
paper你在 Research 里加进来的论文
branch一个 git 分支
past message / past session本次会话里更早的消息,或者更早的一次会话

把 @ 换成 ~,会打开同一个选择器,但范围只限定在知识库——和笔记编辑器里用的是同一个快捷键。

会发生什么 vs 不会发生什么

这一段是整篇教程里最值得记住的,因为它决定了你对 @ 的用法对不对:

你做的动作实际发生不会发生
@ 一个 5000 行的文件 发送的是一个路径,agent 需要时自己去读 不会把 5000 行原文粘进去,把上下文窗口占满整个会话
在提示里写 /some-command 只有当它出现在消息开头时才作为命令执行 写在句子中间时,Atlas 把它当普通文本发出去,不执行
一轮对话结束 给你一份摘要:耗时、token 用量、改动过的文件;可以打开 diff、跳转到文件、在 Finder 里定位,或者让 Atlas 起草提交信息等你确认 不会自动替你提交
agent 正在跑的时候你又写了消息 消息进入队列,运行前你可以编辑或删除 不会把正在跑的那一轮打断或重来

快捷键速查

这些直接来自官方的 Power user 页。挑前十个记住就够用了:

快捷键动作
⌘O打开一个项目
⌘K命令面板
⌘P文件选择器
⌘⇧F搜索
⌘T新建 agent 会话
⌥/循环切换 agent(不碰鼠标)
⌘⌥J开关会话侧栏(用来搜索历史会话)
⌘⇧B开关右侧面板(Git 与 diff 在这里)
⌘J开关终端
⌥J打开知识库
⌘F在长会话里搜索
Enter / Shift+Enter / ⌘Enter发送 / 换行 / 永远发送

还有一整组窗口操作:⌘1–⌘9 按序号跳标签(⌘9 是最后一个)、⌘⇧[ ⌘⇧] 循环标签、⌘\ 新建分栏、⌥; 和 ⌥' 在相邻分栏间移动焦点、⌥Z 进 Zen 模式、⌘B / ⌘⇧B / ⌘⌥B 分别开关左 / 右 / 下三块面板。

一个容易被忽略的细节

你写消息时打 @,Atlas 会把你引用的大块内容显示在消息下方,让你先看清楚 agent 到底收到了什么,再发出去。这个「可见的上下文块」,在知识库笔记和论文上是同一套交互。

09进阶:多 agent 与共享记忆

上文那条主链路只是骨架。真正让 Atlas 值得装的,是挂在骨架上的这几块。

共享记忆:换 agent 不等于从零开始

这是整个项目最核心的一个卖点,机制值得讲清楚:agent 干活时会写下指令文件、笔记和其它持久上下文,Atlas 持续索引这些文件,把它们和你的提示做匹配,把最强的那几条交给 agent。

嵌入(embedding)在你本机跑,文本不往外发。系统里还有一个低权重的结构化事实图,但图匹配永远不会压过更强的直接匹配。

Claude Code 会话 做了几个技术决定 共享记忆 决定 · 失败 · 改过的文件 Codex 的下一次提示 不用从零再讲一遍 设备端嵌入 + HNSW 检索;文本不出本机 Claude Code 会话 做了几个技术决定 共享记忆 决定 · 失败 · 改过的文件 Codex 的下一次提示 不用从零再讲一遍 设备端嵌入 + HNSW 检索

还有一层「跨项目记忆」:Atlas 只会把高置信度、且出现在不止一个项目里的偏好和约束提升上去,并且只在当前项目自身上下文稀少时才动用它。这个保守策略是对的——不然你在 A 项目定的规范会到处乱窜。

记忆面板:看得见才敢信

打开 Memory 面板可以检查 Atlas 到底「知道」什么:

页签内容
Graph结构化事实以及它们之间的连接
Agent preferencesAtlas 从你文件里找出来的、可编辑的规则
Timeline把记忆、会话、提交放在同一张日历上
Shared跨 agent 的事件日志和保存下来的计划

另外,Atlas 会单独索引你的代码库(tree-sitter 扫描),让记忆检索始终「贴住」这个仓库。索引状态就显示在输入框附近,可以在那里重建;嵌入模型在 Settings → Local Models 里选,换模型会重建索引——Atlas 会先跟你确认。这个操作有成本,别手滑。

Agent preferences:把你散落的规则收成一张清单

Atlas 会去搜你已有的记忆和指令文件,找出 12 类偏好。每条显示的都是源文件里的原文,不是摘要;你在这里改了,它去改原文里那一段。

类别Atlas 在找什么
Version control提交、推送、暂存的规则
Theme浅色还是深色
Edit permissionsagent 什么时候可以改文件
Testing测试与测试驱动开发
Comments & style注释与代码风格
Package managernpm、pnpm、yarn 还是 bun
Commit messages提交信息格式与风格
Languages & frameworks你偏好的技术栈
Architecture逻辑该放在哪一层
Communication语气和解释深度
Dependencies & files添加依赖或文件的规则
Formatting & linting格式化与 lint 的期望

它还会把你措辞的强度分成两档:Strong("must" / "never" / "always" 这类硬要求)和 Soft(供 agent 权衡的建议)。想让一条建议变成规则,就在源文件里用更硬的措辞——写软话,就别指望它变成铁律。这个设计挺诚实。

这是个聚焦视图,不是你的文件的替代品。不在这些类别里的规则照样生效,只是不显示在这儿。Atlas 也刻意不把「你某次聊天随口说的一句话」提升成长期规则。

技能与包

两者都在 Settings → Skills 里管:

  • 技能(Skill)是一个 SKILL.md。作用域选 global(每个项目都能用)或 project(只留在这个项目)。
  • 再按 agent 分别启用——Atlas 保留一份正本,然后链接(symlink)到各个 agent 自己的 skills 目录。所以你不会在几处改同一件事。
  • 技能在被 agent 调用之前不占上下文。你还可以把一个 agent 专属的老技能「收编」进 Atlas,让它跨 agent 通用。
  • 包(Pack)是一批东西的合集:技能、命令、子 agent、规则、钩子、脚本。搜 skills.sh 的 registry、预览、一键装;Atlas 拉源仓库、用 lockfile 记版本、还能检查更新。

装完之后:包里的技能变成可调用的指令,而命令 / 子 agent / 规则变成你可以在输入框里 @ 的对象。

知识库与研究

知识库从左侧面板打开,块编辑器支持标题、列表、大纲、属性、图标和封面,⌘S 保存、⌘' 查看当前笔记、⌘; 开关侧栏。笔记之间可以互链并显示反向链接。

研究面板能搜 arXiv 和 Semantic Scholar,结果带标题、作者、摘要、发表日期、分类和论文 / PDF 链接。下载进项目后,用 @ 就能把它作为上下文交给 agent。

知识库可以带走

知识库能导出成 HTML,或者导出成一个独立的 server 二进制(atlas-kb-server,跑在 localhost:4747)。这个设计挺聪明:你不必为了看笔记而开着 Atlas,也不必把它部署到某台服务器上才能分享。

工作区本身也是记录的一部分

Atlas 同时是编辑器、终端和 git 客户端——所以它保留的记录覆盖的是提交周围的规划和手工改动,不只是 diff。几个值得一提的点:

模块关键设计
编辑器CodeMirror;编辑器状态按项目恢复,重启后标签页和分栏还在
终端块式终端——每条命令带着自己的输出、退出码和耗时;同时也提供完整交互界面给 vim、htop 这类程序
Git真正的提交图(带泳道分配)、暂存 / 取消暂存、分支操作、文件级 diff;History 里可以把提交 revert / cherry-pick / tag / reset
浏览器标签页里的原生 WebKit,带真实的登录、cookie 和阅读模式
Spaces笔记及其连接的空间画板,以 JSON 存在项目里
Split view最多三列,每列有自己的标签页
Mission controlagent 活跃度看板:随时间的用量、消耗构成、时间线、可筛选的日志表
Capture health每个工作区一个信号:OK / Degraded / Stopped,各自带原因和下一步

10不止于此:几个真实场景

「源代码管理」这个定位听起来很窄。但把它落在具体场景上,会发现它其实在解决一些你没意识到的问题。

接手三个月前的模块

你盯着一处诡异的实现,不知道它为什么长这样。打开时间线,找到那次提交对应的会话,直接跟检查点对话——它会基于那次会话实际发生的事回答你。本地模式完全离线。

同一个需求让三个 agent 各做一版

在同一窗口里开三个标签,分别选 Claude Code、Codex 和原生 agent,同一个需求各跑一遍,比完再挑。会话独立于标签页,所以切来切去看结果时没有任何一轮会被打断。

把团队的规则收敛成一张清单

你们的 CLAUDE.md、AGENTS.md、各路 agent 自己的记忆文件散在十处。Agent preferences 把它们折叠成一个索引,按 12 类归位,改一处就改到源头。

边读论文边改代码

在 Research 里搜 arXiv,把论文下进项目,@ 进提示。对做算法实现的人来说,这比在浏览器和编辑器之间来回复制摘要靠谱得多。

没有 git 也想留记录

Git 是可选的。一个不是仓库的文件夹照样会保留会话,只是不会产生检查点而已。做实验、写脚本的临时目录也能用。

看清 agent 到底花了多少

每一轮结束都有耗时和 token 摘要;Mission control 把用量按时间和构成拆开。同时跑多个 agent 的人,迟早会需要这个。

一个反直觉但重要的能力

检查点在 rebase 和 amend 之后依然存活——它靠 patch-id 做重对账,把链接重新指过去。而当一次 squash 让链接真的变得有歧义时,它选择变成孤儿,而不是瞎猜。对一个「记录真相」的工具来说,这个取舍是对的。

11性能、成本与限制

先说结论:Atlas 是个本地优先的桌面应用,它自己几乎不产生服务端成本。你花钱的地方,是你自己选的那个 agent 的 API 额度。

项目数值 / 事实条件
安装包体积78.8 MB(aarch64)/ 87.4 MB(x86_64)0.3.1 release
首次 Rust 编译几分钟源码构建,bun run dev:app 第一次
增量启动秒级首次编译之后
嵌入与检索全在本机跑(candle + HNSW)文本不外发
代码库索引tree-sitter 扫描,状态在输入框可见可手动重建;换嵌入模型会重建
IPC 接口规模365 个命令,分布在约 70 个域模块架构文档自述
Rust 工作区19 个 crate + vendor 化的引擎架构文档自述
知识库独立服务localhost:4747导出成独立二进制后
遥测PostHog,匿名、粗粒度、可关(默认开)不含提示词与文件内容

现在就该知道的限制

平台

macOS 是唯一受支持平台。Linux / Windows 同源可构建,但未经测试——终端字体、PATH 解析、整体 GUI 行为都是作者列出的已知缺口。

另外,macOS 会剥掉 GUI 进程的 PATH,所以 Atlas 得先猜,再执行 $SHELL -lc 'echo $PATH' 来还原真实 PATH。这就是为什么在某些终端配置下,agent 二进制的探测可能不准。

成熟度

当前版本是 alpha-0.3.1,标签形态是 alpha-X.Y.Z,偶尔有 exp- 快照。默认分支 main 永远严格等于最新已发布的构建。

这意味着:装正式版的人拿不到未发布的功能,但也不会撞上 main 上的半成品。想贡献代码得瞄准版本分支,不是 main。

一个很能说明项目风格的细节:release 构建里的 panic = "unwind" 是必须的,用来让 atlas-embed 捕获 Metal 的 panic。这种约束不写在文档里就只能靠踩坑发现——这也是为什么下面这一节值得读。

12FAQ 与踩坑

这些都是文档和架构笔记里明确写过的行为。遇到怪事先查这里,多数时候答案是「这是设计,不是 bug」。

装完打开,agent 列表里没有 Claude Code,是装失败了吗?

不是。全新安装的 Atlas 本来就没有任何 ACP agent,只有内置的原生 agent(ADR-0002 就是这个决定)。外部 agent 只在你从 Marketplace 装过之后才存在。

顺带一个容易误导的点:Atlas 在 PATH 里找到某个二进制,只意味着「检测到了、可以提供」,不等于它自动成为可选候选。

我明明提交了,为什么没有生成检查点?

链接规则是明确定义的:

  • 已存在的文件——提交里包含了 agent 碰过的路径,就建立链接。
  • 新增的文件——提交的内容必须与 agent 的输出一致。

这样设计是为了:后续的正常编辑仍然保持链接,但不会把你亲手替换掉的文件算成 agent 的功劳。另外两条:一旦某个被碰过的路径已经判定完毕,Atlas 就不再拿它去提名未来的提交;合并提交不产生检查点,纯人工提交也不会被认领。

我 rebase / amend 过了,链接会断吗?

不会。链接会通过 patch-id 重新对账,指回原来的会话。只有一种情况它会放弃:squash 让链接真的变得有歧义时,它选择变成孤儿,而不是猜一个。

还有一点值得强调:Atlas 全程没有安装 git 钩子、没改 git 配置、没写 ref。它是从外部观察历史——这也解释了为什么在别处提交的代码同样能被认领。

bun run dev 界面正常,但点什么都报错?

这是预期行为。bun run dev 只有 Vite,没有 Tauri 外壳,所以任何走 invoke() 的调用都会失败。

纯改 UI 样式时用它更快;但只要你要碰真实功能,就换回 bun run dev:app。前端会热重载,Rust 改动必须重启。

.atlas/ 要提交进 git 吗?

不需要。Atlas 会自动把 .atlas/ 加进项目的 .gitignore(如果还没有的话)。

代价是:队友克隆仓库后拿不到你的会话记录。要跨设备、跨成员共享,走组织(Organisation)那条线,而不是 git。

agent 读了我的 .env,密钥会不会被存下来?

不会。Atlas 在写入磁盘之前先做密钥擦除(redaction),所以本地存储本身不构成泄露风险。这个擦除逻辑集中在 atlas-redact 这一个 crate 里,是单一事实源,而不是各处零散实现。

我在非 git 目录里工作,还能用吗?

能。git 是可选的:非仓库文件夹照样保留会话,只是无法产生检查点(检查点的定义就是「会话与提交之间的链接」)。

另外,即使一个会话从未产生提交,Atlas 也会把它记录下来。

在终端里跑 vim / htop 行不行?

行。终端是基于 portable-pty 的。除了块式展示(每条命令带退出码和耗时),它同时提供一个完整的交互界面给这类全屏程序用。

我想把知识库给别的机器或别人看,要装 Atlas 吗?

不用。知识库可以导出成 HTML,或者导出为一个独立的 server 二进制 atlas-kb-server,跑在 localhost:4747。

这个小 crate 有个有意思的工程细节:它被排除在根 cargo workspace 之外,保留自己的 Cargo.lock,用 --manifest-path 单独构建。原因是它要在运行时按自己的 release profile 编译,而 profile 是工作区全局的——如果加进工作区,就会被应用自己的 profile 覆盖掉。

我要给这个项目提 PR,该合到哪个分支?

不是 main。Atlas 的分支模型和多数开源项目相反:它是要发号版本、带自动更新的应用,所以 main 必须永远等于「已经发布的那个版本」,不能超前。

于是工作先汇集到版本分支(比如 0.2.5),PR 指向它;等版本分支要发布时,整条合进 main——那次合并本身就是发布。只有不需要等版本的改动(文档修正、一行热修)才直接提给 main。

13隐私、遥测与合规

这类工具会看到你的代码、你的终端、你的浏览器。所以「它往外发什么」必须能查清楚,而不是靠信任。

本地优先,具体指什么

  • 代码、笔记、会话保存在本机。
  • 会话捕获默认仅本地。
  • 账号是可选的。
  • 密钥在写入磁盘前被擦除。

遥测:一条很窄的管道

Atlas 只有一条 PostHog 管道,代码在 src-tauri/src/telemetry/。它是匿名的、粗粒度的、可关闭的(默认开启,属于 opt-out)。

官方明确列出了「任何情况下都不发送」的清单:

永不发送说明
提示词或响应文本你和 agent 说的任何话
文件内容,或绝对路径路径只以相对或匿名形式参与
知识库或聊天内容包括笔记正文
API key 与凭据—
终端输入或输出—
浏览器 URL—

新增遥测事件需要先在 issue 里讨论,而且任何对管道的改动,都必须在同一个 PR 里更新 TELEMETRY.md。想彻底关掉,把 .env 留空即可——遥测会永久失效。

一个诚实的注记

架构文档里自己写着:遥测默认开启这件事,「真实行为的定义在 app_state.rs」,而模块的 doc 注释已经过期了。看到这种自我纠正,比看到一句「我们很重视隐私」更让人放心。

许可与第三方

Atlas 本体是 MIT 许可。但它调度的 agent 是另一回事:Claude Code、Codex、Cursor、OpenCode、Kilo Code 各自有自己的许可和条款;Research 面板用的 arXiv / Semantic Scholar 也各有自己的使用规则。你实际承担的义务,取决于你用了哪些。

关于审计完整性:Atlas 会在你的机器上索引代码库和会话。这些都不外发,但它们确实存在于本地磁盘——所以如果你在共享机器上工作,记得 .atlas/ 和 ~/Library/Application Support/dev.atlas.ide/ 这两处。

Atlas 新手教程 · 基于 pacifio/atlas 的 README、ARCHITECTURE.md、CONTRIBUTING.md 与 docs.tryatlas.cc 整理,内容抓取于 2026-09-16(版本 alpha-0.3.1)