开源项目 GitHub Trending 2026-09-15T12:01 正文 ok 1720 words

Atlas:面向编码 Agent 的源代码控制

英文标题:🔥 pacifio/atlas

Atlas 是一款面向编码 Agent 的源代码控制工具,可将每次 Agent 会话与其产生的 Git 提交、提示词、工具调用和推理过程关联为可查询的检查点(checkpoint)。它支持 Claude Code、Codex、Atlas Agent 及 ACP 注册表中的其他 Agent 并行运行,并通过本地共享记忆实现跨 Agent 的任务交接。Atlas 默认将代码、笔记和会话保存在本机,支持离线使用,并在写入磁盘前清理密钥等敏感信息。对开发者而言,它试图解决 Agent 会话上下文丢失、多 Agent 协作断层,以及代码变更缺少决策依据记录等问题。
打开原文相关 6 · 机会 3
media30.9 KB media5.1 KB media3.7 KB media2.7 KB media2.7 KB media1.3 KB media1.2 KB media1.3 KB media1.2 KB media1.3 KB media3.2 KB media42.5 KB media155.9 KB

中文

Atlas 是面向编码 Agent 的源代码控制工具。每一次 Agent 运行都会产生检查点:提交会关联回生成它的会话,并一同保留提示词、工具调用和推理过程。你可以查看究竟是哪个 Agent 做了什么,以及为什么这样做。

可在同一代码库上并排运行 Claude Code、Codex、Atlas 自有 Agent,或 ACP 注册表中的任意 Agent;它们共享记忆,因此在任务中途切换 Agent 不意味着需要从头开始。

  • 每次提交均可解释。 检查点会将一个提交关联回生成它的会话:提示词、工具调用和文件变更会被一同保存,数月后仍可查询。
  • 任意 Agent 并排运行。 Claude Code、Codex、Atlas 自有 Agent,以及更广泛的 ACP 注册表中的 Agent,均可在同一窗口中针对同一代码库运行。任务中途切换 Agent 无须重新开始。
  • 一份记忆,供所有 Agent 使用。 Claude Code 作出的决策会出现在 Codex 的下一条提示词中。计划、文件变更、失败记录和架构说明会自动共享,并会在设备本地与你的提问进行匹配。
  • 你的笔记就是 Agent 上下文。 .atlas/knowledge/ 中的 Markdown,以及你已经编写的 CLAUDE.md 和 AGENTS.md,都会提供给项目中的每个 Agent。
  • 在提示词中用 @ 引用任何内容。 文件、文件夹、符号、分支、提交、笔记、论文和过往会话,都会在提示词发送前于本地完成解析。
  • 默认本地化。 代码、笔记和会话均保留在你的机器上。只有需要跨团队同步时,才需登录并创建组织。

从 tryatlas.cc 或发布页面获取最新 .dmg 文件。

注

macOS 是受支持的平台。Linux 和 Windows 使用相同的 Tauri 代码库构建,但尚未经测试——请参阅“从源码构建”。

如今,Agent 编写了很大一部分代码,却不会保留其背后的任何推理。一次变更所对应的提示词、它进行的工具调用、它最先尝试后又放弃的方法——这些内容都只存在于滚动缓冲区中,直到缓冲区被滚动覆盖。

最终留下的只是由模型编写的一条提交信息,用于概述 diff。数月后,它成为代码为何呈现当前形态的唯一记录。

由此产生三个问题,而每一款在 Agent 出现前设计的编辑器都存在这三个问题:

  • Agent 每次会话都从零开始。 你昨天建立的上下文已经消失,每次都需要由你重新构建。
  • 切换 Agent 会丢失线索。 Claude Code 无法读取 Codex 的历史,Codex 也无法读取 Claude Code 的历史。在任务中途更换 Agent,意味着需要重新解释任务。
  • 上下文分散在十个地方。 知识库、CLAUDE.md、AGENTS.md,以及各 Agent 自己的记忆文件,没有任何东西能同时读取全部内容。

Atlas 通过两项承诺来应对这些问题:

  • 没有内容被锁定。 笔记是 Markdown,画布是 JSON,会话是 JSONL,编辑器本身也是磁盘上的文件。关闭 Atlas 后,你可以在 vim 中继续工作。唯一例外是检查点记录(即哪个 Agent 会话产生了哪个提交),它存储在项目被 Git 忽略的 .atlas/ 目录中的 SQLite 里,因为它是用来查询的,而非直接阅读。
  • 从底层起便为 Agent 构建。 Agent 运行时、共享记忆和会话历史是整个应用其余部分构建的基础。

检查点补充了单独一条提交所无法说明的信息:哪个会话生成了它、向 Agent 提出了什么要求、它进行了哪些工具调用,以及此次变更背后的推理过程。这些内容会被一同保存,而不是在终端滚动后丢失。

Atlas 会将每次 Agent 会话记录在本地 .atlas/sessions.db 中,并在任何内容写入磁盘前清除敏感密钥。当你提交代码时——无论通过何种工具,即使 Atlas 已关闭——该提交都会作为检查点关联回生成它的会话;该关联可在 rebase 和 amend 后继续保留。

你无须阅读原始转录记录来恢复上下文:选择一个检查点并直接与其对话,它会根据该会话中实际发生的内容回答。本地模式无需账户即可完全离线运行。

Atlas 按 Agent 原本的方式运行它们,同时增强它们能够看到的上下文。

Claude Code 和 Codex 通过 ACP 以外部子进程方式运行;这是使用最广、测试最充分的路径。原生 Agent Atlas Agent 则在进程内运行,基于 Codex 引擎的硬分叉版本(见 CONTEXT.md 和 ADR-0004)。

此外,Atlas 还可启动 ACP 注册表中的任意 Agent(Cursor、OpenCode、Kilo Code 等),并自动拉取各自的官方二进制文件。所有 Agent 都经过相同的发送路径,因此无论选择哪一个,下述能力均适用。

注

对注册表中长尾 Agent 的 QA 仍在进行中。

在你的消息到达 Agent 之前,Atlas 会围绕该消息组装上下文:

注入内容 来源 时机
@ 提及 在提示词发送前由 Rust 于本地解析。笔记、技能、论文和过往会话会被内联;文件和文件夹会解析为路径 每一轮
共享 Agent 记忆 由任一 Agent 写入的当前计划、决策、文件变更、失败记录和架构说明 每一轮
语义匹配 你的消息会在设备本地嵌入,并与项目记忆索引匹配 每一轮
会话交接 精选事实包,加上你在该项目中上一次会话的末尾内容,其中可包括来自不同 Agent 的会话 首条消息
你已编写的内容 知识笔记、CLAUDE.md、AGENTS.md、Claude Code 的记忆文件,以及 Codex 的历史记录,汇总至同一索引 持续进行
  • 一条路径,无按 Agent 特殊处理。 通过 Atlas 运行你现有的 Claude Code 或 Codex 订阅,会话便可获得更多上下文,而无需改变你的工作方式。
  • Claude Code 的记忆对 Codex 可见,反之亦然。 任何一个 Agent 单独运行时都无法读取对方的历史。
  • 文件夹会解析为指针,而不是直接粘贴。 用 @ 引用一个 5000 行文件时,发送给 Agent 的是可按需读取的路径,因此一次提及不会占据本次会话其余部分的上下文窗口。
  • 嵌入在你的机器上运行。 检索数据不会离开设备。
能力 说明 链接
多 Agent 会话 Claude Code、Codex 和 Atlas 原生 Agent,可为每个会话选择,并在不同标签页中并行运行。会话独立于标签页,因此切换不会中断正在进行的运行 聊天与会话
共享 Agent 记忆 设备端语义索引(本地嵌入、HNSW 搜索),每个 Agent 均可从中读取和向其中写入 记忆
@ 提及 在本地解析文件、文件夹、符号、分支、提交、笔记、技能、论文和过往会话 聊天与会话
技能 作用域可设为全局或单项目的 SKILL.md 文件;通过符号链接至 Agent 自身的技能目录,为特定 Agent 启用 技能
Packs 安装包含技能、子 Agent、命令、钩子、规则和脚本的 GitHub 仓库,并通过 skills.sh 索引发现 技能
模型聊天 在独立标签页中直接与模型对话,外层不运行 Agent 循环 聊天与会话
组织 登录、创建组织,并在设备及团队成员之间同步 组织
能力 说明
会话捕获 每个会话都会记录至 .atlas/sessions.db:提示词、消息、工具调用、各工具触及的文件,以及应用的补丁
检查点 每个会话均会关联至它生成的提交。Atlas 观察提交而不是拦截提交,因此即使提交来自终端、其他编辑器,或发生在 Atlas 关闭期间,仍可找到其对应会话
可经受历史重写 通过 patch-id 对账,在 amend 和 rebase 后重新指向关联。当 squash 使关联确实存在歧义时,系统会将其标记为孤立,而不会猜测
转录记录导入 回填你现有的 Claude Code 历史,使记录从安装 Atlas 前便开始保留
写入时清除密钥 在持久化任何内容前执行脱敏,因此本地存储本身不会成为泄露风险
捕获健康状态 每个工作区一个状态信号:正常(OK)、降级(Degraded)或已停止(Stopped),并附带原因和下一步操作
任务控制中心 Agent 活动仪表盘:使用量随时间变化、消耗明细、时间线,以及可筛选的日志表格

无需账户和网络即可运行。

能力 说明 链接
编辑器 基于 CodeMirror 的编辑界面,重启后可恢复每个项目的编辑器状态 编辑器
Git 具备泳道分配的真实提交图,支持暂存/取消暂存/提交、分支操作和文件级 diff Git 与 Diff
终端 块式终端,每条命令均携带各自的输出、退出码和执行时长;另提供支持 vim、htop 等工具的完整交互界面 终端
知识库 .atlas/knowledge/ 中的纯 Markdown 笔记,与代码一同进行版本控制,支持反向链接、链接图谱,以及导出为 HTML 或独立服务器二进制文件 知识库
研究 搜索 arXiv 和 Semantic Scholar,导入论文,在应用内阅读,并通过 @ 将其提及至提示词中 研究
浏览器 标签页中的原生 WebKit webview,支持真实登录、Cookie 和阅读模式 Explorer
空间 用于笔记及其关联的空间画板,以 JSON 形式持久化于项目中 聊天与会话
分屏视图 最多三个可调整大小的列,每列均有自己的标签页 编辑器
活动日志 项目中的每项重要事件均会被记录并可筛选;可固定特定行并在重启后保留 时间线

如需使用 Claude Code Agent,请安装 claude CLI 并将其加入 PATH。Atlas 的原生 Agent 无需外部 CLI。

需要安装 Bun、Rust(稳定版,通过 rustup 安装)和 Xcode Command Line Tools。

Linux 系统依赖项(GTK 3、WebKit2GTK 4.1、GLib 头文件)

  • 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 webkit2gtk3-devel
    

    git clone https://github.com/pacifio/atlas cd atlas bun install bun run dev:app

首次 Rust 编译需要几分钟;此后只需数秒。仅迭代前端时可使用 bun run dev,但凡是调用 invoke() 的内容都需要使用 dev:app。

生产构建:

bun run build:app       # .app bundle
bun run build:app:dmg   # .app + .dmg installer

参阅 CONTRIBUTING.md。有一点常会让人困惑:

  • 功能开发应以当前版本分支为目标,而非 main。main 只接收已完成的版本分支,该合并即为发布。

ARCHITECTURE.md 介绍 Atlas 的构建方式。SECURITY.md 介绍漏洞报告方式。


  • 你的代码、笔记和会话保留在你的机器上。 运行 Agent 时不会上传任何内容。
  • 密钥会在写入磁盘前被清除。 不是在上传前,而是在持久化前。
  • 默认仅在本地进行会话捕获。 Checkpoints 记录写入 .atlas/sessions.db 并保留于此。无需账户,除非你明确选择同步,否则不会向任何地方发送内容。
  • 账户为可选项。 登录后可创建组织,并在设备和团队成员之间同步。
  • 默认启用匿名使用分析。 仅收集粗粒度元数据,绝不收集代码或提示词。查看收集内容及关闭方式。

MIT 许可证。参阅 LICENSE。


English / 原文

Atlas is source control for coding agents. Every agent run produces checkpoints: commits are linked back to the session that made it alongside the prompts, tool calls, and reasoning. You see which agent did exactly what and why.

Run Claude Code, Codex, Atlas's own agent, or anything from the ACP registry side by side against the same codebase, with shared memory so switching agents mid-task doesn't mean starting over.

  • Every commit, explained. A checkpoint links a commit back to the session that produced it: prompts, tool calls, and file changes kept together, queryable months later.
  • Run any agent, side by side. Claude Code, Codex, Atlas's own agent, and the wider ACP registry, all in the same window, against the same codebase. Switching agents mid-task doesn't mean starting over.
  • One memory, every agent. A decision Claude Code made shows up in Codex's next prompt. Plans, file changes, failures, and architecture notes are shared automatically, matched on-device against what you're asking about.
  • Your notes are agent context. Markdown in .atlas/knowledge/, plus the CLAUDE.md and AGENTS.md you already wrote, feed every agent in the project.
  • @ anything into a prompt. Files, folders, symbols, branches, commits, notes, papers, and past sessions resolve locally before the prompt is sent.
  • Local by default. Code, notes, and sessions stay on your machine. Sign in and create an organisation when you want to sync across a team.

Grab the latest .dmg from tryatlas.cc or the releases page.

Note

macOS is the supported platform. Linux and Windows build from the same Tauri codebase but are untested — see Build from source.

Agents now write a large share of the code and keep none of the reasoning behind it. The prompt that produced a change, the tool calls it made, the approach it tried first and abandoned — all of it lives in a scrollback buffer until the buffer scrolls.

What survives is a commit message, written by a model, summarising a diff. Months later that is the only record of why the code looks the way it does.

Three problems follow, and every editor designed before agents has all three:

  • Agents start from zero every session. The context you established yesterday is gone, and rebuilding it is your job, every time.
  • Switching agents loses the thread. Claude Code cannot read Codex's history, and Codex cannot read Claude Code's. Changing agent mid-task means starting the explanation over.
  • Context lives in ten places. The knowledge base, CLAUDE.md, AGENTS.md, and each agent's own memory files. Nothing reads all of them at once.

Two commitments shape how Atlas answers them:

  • Nothing is locked in. Notes are markdown, canvases are JSON, sessions are JSONL, and the editor is a file on disk. Close Atlas and pick up in vim. The one exception is the checkpoint record (which agent session produced which commit), which is SQLite in the project's gitignored .atlas/, because it is queried, not read.
  • Built for agents from the ground up. The agent runtime, shared memory, and session history are the foundation the rest of the app is built on.

A checkpoint is what a commit doesn't tell you on its own: which session produced it, what the agent was asked, the tool calls it made, and the reasoning behind the change, kept together instead of lost the moment the terminal scrolls.

Atlas records every agent session locally in .atlas/sessions.db, with secrets scrubbed before anything touches disk. When you commit (from any tool, even with Atlas closed), the commit is linked back to the session that produced it as a checkpoint, and links survive rebases and amends.

You don't have to read the raw transcript to get the context back: select a checkpoint and chat with it directly, and it answers from what actually happened in that session. Local mode works fully offline with no account.

Atlas runs your agents as they are, and enriches what they see.

Claude Code and Codex run as external subprocesses over ACP, the most-used, most-tested path. Atlas Agent, the native agent, runs in-process on a hard fork of the Codex engine (see CONTEXT.md and ADR-0004).

Beyond those, Atlas can spawn any agent in the ACP registry (Cursor, OpenCode, Kilo Code, and more), pulling in each one's official binary automatically. All of them go through the same send path, so everything below applies whichever one you pick.

Note

QA on the long tail of registry agents is ongoing.

Before your message reaches the agent, Atlas assembles context around it:

Injected Where it comes from When
@ mentions Resolved locally in Rust before the prompt is sent. Notes, skills, papers, and past sessions are inlined; files and folders resolve to a path Every turn
Shared agent memory Active plan, decisions, file changes, failures, and architecture notes, written by any agent Every turn
Semantic matches Your message is embedded on-device and matched against the project's memory index Every turn
Session handoff A curated fact pack plus the tail of your last session in this project, including one from a different agent First message
What you already wrote Knowledge notes, CLAUDE.md, AGENTS.md, Claude Code's memory files, and Codex's history, folded into one index Continuously
  • One path, no per-agent special-casing. Run your existing Claude Code or Codex subscription through Atlas and the session gets more context, with no change to how you work.
  • Claude Code's memory is visible to Codex, and the reverse. Neither agent can read the other's history on its own.
  • Folders resolve to a pointer, not a paste. @-ing a 5000-line file sends a path the agent reads on demand, so one mention doesn't occupy the context window for the rest of the session.
  • Embedding runs on your machine. Retrieval never leaves the device.
Capability Description Link
Multi-agent sessions Claude Code, Codex, and Atlas's native agent, selectable per session and running in parallel across tabs. Sessions are independent of tabs, so switching never drops a run in flight Chat & Sessions
Shared agent memory On-device semantic index (local embeddings, HNSW search) that every agent reads from and writes to Memory
@ mentions Local resolution of files, folders, symbols, branches, commits, notes, skills, papers, and past sessions Chat & Sessions
Skills SKILL.md files scoped globally or per project, enabled per agent by symlinking into that agent's own skills directory Skills
Packs Install a GitHub repo of skills, subagents, commands, hooks, rules, and scripts, discovered through the skills.sh index Skills
Model chat Talk to a model directly in its own tab, with no agent loop around it Chat & Sessions
Organisations Sign in, create an organisation, and sync across devices and teammates Organisations
Capability Description
--- ---
Session capture Every session recorded to .atlas/sessions.db: prompts, messages, tool calls, the files each one touched, and the patches it applied
Checkpoints Each session linked to the commits it produced. Commits are observed rather than intercepted, so one made from a terminal, from another editor, or while Atlas was closed still finds its session
Survives history rewrites Links re-point through amend and rebase by patch-id reconciliation. When a squash makes the link genuinely ambiguous, it orphans instead of guessing
Transcript import Backfills your existing Claude Code history, so the record starts before you installed Atlas
Secrets scrubbed on write Redaction runs before anything is persisted, so the local store is never itself a disclosure risk
Capture health One signal per workspace, OK, Degraded, or Stopped, each with a reason and the next step
Mission control Dashboard for agent activity: usage over time, consumption breakdown, timelines, and a filterable log table

Works with no account and no network.

Capability Description Link
Editor CodeMirror editing surface, with per-project editor state restored across restarts Editor
Git Real commit graph with lane assignment, stage/unstage/commit, branch operations, and file-level diffs Git & Diff
Terminal Block terminal where each command carries its own output, exit code, and duration, plus a full interactive surface for vim, htop, and friends Terminal
Knowledge base Plain markdown notes in .atlas/knowledge/, versioned next to the code, with backlinks, a link graph, and export to HTML or a standalone server binary Knowledge base
Research Search arXiv and Semantic Scholar, pull papers in, read them in-app, and @-mention them into a prompt Research
Browser Native WebKit webview in a tab, with real logins, cookies, and a reader mode Explorer
Spaces Spatial board for notes and their connections, persisted as JSON in the project Chat & Sessions
Split view Up to three resizable columns, each with its own tabs Editor
Activity log Every significant event in the project, filterable, with rows you can pin across restarts Timeline

To use the Claude Code agent, install the claude CLI and put it on your PATH. Atlas's native agent needs no external CLI.

Requires Bun , Rust (stable, via rustup), and Xcode Command Line Tools.

Linux system dependencies (GTK 3, WebKit2GTK 4.1, GLib headers)

  • 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
    

    git clone https://github.com/pacifio/atlas cd atlas bun install bun run dev:app

The first Rust compile takes a few minutes; after that it is seconds. Use bun run dev for frontend-only iteration, though anything calling invoke() needs dev:app.

Production builds:

bun run build:app       # .app bundle
bun run build:app:dmg   # .app + .dmg installer

See CONTRIBUTING.md. One thing catches people out:

  • Feature work targets the current version branch , not main. main only receives a finished version branch, and that merge is the release.

ARCHITECTURE.md covers how Atlas is built. SECURITY.md covers reporting vulnerabilities.


  • Your code, notes, and sessions stay on your machine. Nothing is uploaded to run an agent.
  • Secrets are scrubbed before anything is written to disk. Not before upload, before persistence.
  • Session capture is local-only by default. The Checkpoints record is written to .atlas/sessions.db and stays there. No account required, and nothing sent anywhere until you explicitly opt in to sync.
  • Accounts are opt-in. Sign in to create an organisation and sync across devices and teammates.
  • Anonymous usage analytics are on by default. Coarse metadata, never code or prompts. What's collected, and how to turn it off.

MIT. See LICENSE.