_ _ ____ _
/ \ | |_ ___ _ __ ___ / ___|___ __| | ___
/ _ \| __/ _ \| '_ ` _ \ | / _ \ / _` |/ _ \
/ ___ \ || (_) | | | | | | |__| (_) | (_| | __/
/_/ \_\__\___/|_| |_| |_|\____\___/ \__,_|\___|
用 Rust 编写的开源终端 AI 编码助手
English · 简体中文
安装 · 快速开始 · 功能 · 架构 · 开发 · 贡献 · 社区
本项目 100% 由 AI 生成。 每一行代码、每一个架构决策的实现、每一次提交都由 AI 完成。人类开发者仅担任决策者和产品经理的角色——定义"要做什么",而不是"怎么做"。
AtomCode 是一款住在你终端里的 AI 编码助手。用自然语言给它一个任务,它会自动阅读代码、编辑文件、执行命令、验证结果——全程自主完成。
你可以把它理解为 Claude Code / Cursor Agent 的开源替代品,完全运行在终端里,并且可以接入任何兼容 OpenAI 接口的模型。
文件与 Shell:
read_file、write_file、edit_file、search_replacebash、grep、glob、list_directory、change_dirweb_search、web_fetch代码图谱(语言感知的代码智能):
list_symbols、read_symbol、find_referencestrace_callers、trace_callees、trace_chainfile_deps、blast_radius自动化:
auto_fix —— 自动 lint / 类型检查修复循环use_skill —— 调用用户自定义 skill支持任何实现了 OpenAI function calling 接口的模型:
| 提供方 | Function Calling | 已验证模型 |
|---|---|---|
| Claude(Anthropic) | 支持 | Claude Sonnet 4.5/4.6、Opus 4.6 |
| OpenAI | 支持 | GPT-4o、GPT-4.1 |
| DeepSeek | 支持 | DeepSeek V3、DeepSeek R1 |
| 智谱(GLM) | 支持 | GLM-4、GLM-5 |
| 通义千问(阿里) | 支持 | Qwen-Plus、Qwen-Max |
| SiliconFlow | 支持 | 多种开源模型 |
| Ollama(本地) | 部分支持 | Llama 3、Qwen2 等 |
| 任意 OpenAI 兼容接口 | 支持 | — |
atomcode --continue 或 -c 继续上一次会话,在 TUI 内可用 /resume 恢复或切换/login(或 atomcode login)将 CLI 与你的 AtomGit 账号绑定/login-with-sso,GitCode 内部用户使用atomcode -p "..." 非交互式跑一条 prompt,结果直接输出到 stdout(类似 Claude Code 的 -p);需要确认的 bash 会自动批准,其他需要确认的工具会被拒绝atomcode-daemon 提供 HTTP API,用于查询会话历史和 SSE 流式对话base16-ocean.dark 主题\ + Enter 换行、高度自适应、历史记录/model、/provider、/resume、/bg、/diff、/undo、/cost、/clear、/compact 等(完整列表见下)rm -rf、git push --force、DROP TABLE 等需要显式确认.env 文件、密钥/证书文件会触发更强的确认规则cat、head、ls、cp、mv、tee 等常见 shell 文件命令会继承和文件工具一致的路径审批模型rm 从不自动放行/undo 通过文件历史快照回滚上一轮的所有文件编辑完整设计与当前边界见 权限模型。
git clone https://atomgit.com/atomgit_atomcode/atomcode.git
cd atomcode
cargo install --path crates/atomcode-cli --locked
编译产物位于 target/release/atomcode。在 macOS / Linux / HarmonyOS PC 其被安装到 ~/.cargo/bin/atomcode,
在 Windows 系统上其被安装到 $env:USERPROFILE/.cargo/bin/atomcode.exe。请确保 ~/.cargo/bin
(或 %USERPROFILE%\.cargo\bin)已经被添加到 PATH 环境变量中。
如果只想要编译,不要安装,运行:
cargo build --release
编译产物会在 target/release/atomcode 生成。
/login 的 AtomGit 账号)移除 AtomCode 及(可选)其数据:
atomcode uninstall # 交互模式:分组询问
atomcode uninstall --keep-data # 仅删除二进制 + PATH 配置
atomcode uninstall --purge # 一并删除 ~/.atomcode/
atomcode uninstall --dry-run # 仅打印计划,不实际删除
二进制已损坏或丢失时使用兜底脚本:
curl -fsSL https://atomgit.com/atomgit_atomcode/atomcode/raw/main/uninstall.sh | sh
# Windows:
irm https://atomgit.com/atomgit_atomcode/atomcode/raw/main/uninstall.ps1 | iex
默认保留凭据(auth.toml、mcp.json、config.toml、ATOMCODE.md),传 --purge 才会一起清除。
atomcode
首次运行会有一个向导帮你配置模型:
Welcome to AtomCode! Let's set up your first provider.
Select provider:
[1] Claude (Anthropic)
[2] OpenAI
[3] OpenAI Compatible (DeepSeek, Qwen, Zhipu, Moonshot...)
[4] Ollama (local)
配置文件位于 ~/.atomcode/config.toml,最小单 provider 样例:
default_provider = "deepseek"
[providers.deepseek]
type = "openai"
api_key = "sk-..."
model = "deepseek-chat"
base_url = "https://api.deepseek.com/v1"
context_window = 64000
可以配置多个 provider,用 /model 或 /provider 切换。完整示例
(涵盖 Claude / OpenAI / OpenAI-兼容 endpoint 如 DeepSeek / GLM /
SiliconFlow / OpenRouter / Ollama,以及 [datalog] 段)见
docs/config.example.toml——拷出来按需改。
手动改完 config.toml 后,在 atomcode 里执行 /reload 重新加载配置,
不用重启。
# 在项目目录下启动
cd your-project
atomcode
# 或指定目录
atomcode -C /path/to/project
# 或指定模型
atomcode --model gpt-4o
# Headless 模式(单条 prompt,结果输出到 stdout)
atomcode -p "简要说明这个仓库的 agent loop"
# 从文件读取 prompt
atomcode --prompt-file task.md
在 headless 模式下,需要确认的 bash 会自动批准并写到 stderr;其他需要确认的工具会被拒绝。
然后直接用自然语言描述你想做的事:
> 修复 OAuth 回调后用户被重定向到 404 的登录 bug
> 给设置页加一个深色模式切换
> 把数据库模块重构为使用连接池
> 给支付处理模块写单元测试
| 键位 | 动作 |
|---|---|
Enter | 发送消息 |
Shift+Enter | 换行(需要终端支持 Kitty 键盘协议) |
Ctrl+Enter | 换行(需要终端支持 Kitty 键盘协议) |
Ctrl+J | 换行(需要终端支持 Kitty 键盘协议) |
Alt+Enter | 换行(多数终端可用,见下方兼容性说明) |
\ + Enter | 换行(所有终端通用——输入一个 \ 后按回车,\ 会被自动删除) |
Esc | 清空输入 / 取消流式输出 |
Up/Down | 浏览输入历史 |
Tab | 接受补全 |
Ctrl+U | 清空当前行 |
Ctrl+W | 删除一个单词 |
Ctrl+K | 删除到行尾 |
Ctrl+V | 从剪贴板粘贴图片(Windows 下请改用 /paste,见下方说明) |
换行快捷键的终端兼容性:
Shift+Enter、Ctrl+Enter、Ctrl+J都需要终端支持 Kitty 键盘协议 — kitty、WezTerm、Alacritty、iTerm2 ≥3.5、Windows Terminal ≥1.21。不支持的终端会把它们都退化成普通Enter(直接发送消息)。Alt+Enter在多数终端的字节层面就能工作,但 Windows Terminal 默认把它绑给"切换全屏" — 在 设置 → 操作 中删掉那条绑定即可释放。- Xshell 不支持 Kitty 协议;可在键盘映射设置中把某个空闲组合映射为发送
ESC, Enter(\x1b\r)达到同样效果,或直接从剪贴板粘贴多行文本(已启用 bracketed paste)。
Windows 下粘贴图片: Windows Terminal 和 conhost 默认把
Ctrl+V绑给它们自己的pasteaction — 这个 action 只会从剪贴板读CF_UNICODETEXT,剪贴板上只有图片时它什么都不会发,应用里的Ctrl+V处理器根本收不到事件。两种解法:
- 使用
/paste—— 这个斜杠命令直接读取剪贴板图片并以[Image #N]的形式附加到输入框,在 Windows Terminal、PowerShell 7、conhost、git bash 等所有终端里都能正常工作。Windows 版的 TUI 右下角会自动显示剪贴板有图片 · /paste 粘贴作为提示。- 若想保留
Ctrl+V的肌肉记忆:打开 Windows Terminal 的settings.json(Ctrl+,→ 右下角"打开 JSON 文件"),在"actions"数组里删掉{ "command": "paste", "keys": "ctrl+v" },或把它改绑到ctrl+shift+v。重启 Windows Terminal 后,Ctrl+V就能透传给 atomcode 了。Git Bash(MinTTY)不拦截
Ctrl+V,开箱即用。
| 键位 | 动作 |
|---|---|
Ctrl+Up/Down | 滚动聊天区(3 行) |
PageUp/PageDown | 滚动聊天区(一页) |
Ctrl+L | 清空对话 |
Ctrl+Shift+C | 复制选中内容 |
Ctrl+C | 取消当前操作(连按两次退出) |
| 命令 | 动作 |
|---|---|
/resume | 恢复或切换会话 |
/session | 创建新会话 |
/bg | 将当前会话放到后台;子命令:/bg list、/bg <N>、/bg drop <N>、/bg help |
/background <task> | 兼容入口:在 /bg 槽位中启动一次性后台任务 |
/provider | 管理 provider |
/model | 切换模型 / provider |
/login | 通过 AtomGit OAuth 登录 |
/cd | 切换工作目录 |
/paste | 从剪贴板粘贴图片(Windows 下 Ctrl+V 被终端拦截时的备用入口) |
/undo | 撤销上一轮的文件编辑 |
/diff | 显示当前修改的 git diff |
/cost | 显示本次会话的 token 消耗 |
/copy | 复制 AI 的最后一条回复 |
/clear | 清空对话 |
/issue | 在 AtomGit 上创建 issue |
/config | 编辑配置文件 |
/status | 查看登录状态和模型信息 |
/logout | 退出 AtomGit 登录 |
/help | 查看命令与快捷键 |
/quit | 退出程序(或连按 Ctrl+C) |
AtomCode 是一个 Rust workspace,由四个 crate 组成:
atomcode/
crates/
atomcode-core/ # 无头核心库,不依赖 TUI
agent/ # AgentLoop:自主工具调用循环
turn/ # TurnRunner、datalog、权限决策器
config/ # 配置加载、provider 配置
conversation/ # 消息类型、窗口化上下文
provider/ # LlmProvider trait + OpenAI/Claude/Ollama
tool/ # Tool trait + 内置工具实现
session/ # 持久化会话
skill.rs # 用户自定义 skill
atomcode-tuix/ # 终端 UI — retained-mode 渲染器(CC 风格 normal mode)
event_loop/ # App 状态机、命令分发
render/ # cell-level 渲染器、diff、retained-mode 帧循环
modals/ # 各种 picker(dir、model、session、provider、issue)
atomcode-cli/ # 可执行入口(TUI + headless -p 模式)
main.rs # CLI 参数、首次运行向导、启动
auth/ # AtomGit OAuth 客户端
atomcode-daemon/ # 基于 atomcode-core 的 HTTP/SSE API 服务
技术栈无关 —— 核心引擎不硬编码任何特定语言的逻辑,通过 package.json、Cargo.toml、pyproject.toml、pom.xml 等描述文件动态探测项目类型。
Agent 解耦 —— AgentLoop 作为独立的异步任务运行,通过 channel(AgentCommand / AgentEvent)与 TUI 通信。核心库完全不依赖 TUI,这也是 daemon 得以存在的基础。
工具安全 —— 所有破坏性操作必须经用户显式确认。工具失败会作为 observation 返回给模型,绝不 panic。
上下文感知 —— token 预算感知的会话窗口、项目文件树注入、每轮系统提醒,在不超出上下文限制的同时让模型保持专注。
在项目根目录创建 .atomcode.md 文件,给 AtomCode 提供持久化上下文:
# Project Instructions
本项目是 Vue 3 + TypeScript,使用 Pinia 做状态管理。
- 始终使用 `<script setup>` 风格的 Composition API
- 样式使用 TailwindCSS,不写内联样式
- 编辑 .vue/.ts 文件后运行 `npm run lint`
AtomCode 会自动读取这个文件并注入到系统提示中。
git clone https://atomgit.com/atomgit_atomcode/atomcode.git
cd atomcode
# Debug 构建(编译快、运行慢)
cargo build
# Release 构建(编译慢、运行快)
cargo build --release
# 直接运行 TUI(debug 模式)
cargo run -p atomcode-cli
# 带参数
cargo run -p atomcode-cli -- -C /path/to/project
cargo run -p atomcode-cli -- --model gpt-4o
# Headless 模式
cargo run -p atomcode-cli -- -p "总结一下这个仓库"
# Daemon(HTTP API)
cargo run -p atomcode-daemon
# 运行全部测试
cargo test
# 运行指定 crate 的测试
cargo test -p atomcode-core
cargo test -p atomcode-tuix
# 运行指定的用例
cargo test -p atomcode-core test_name
# 只做类型检查,不生成产物
cargo check
# 格式化代码
cargo fmt
# 运行 linter
cargo clippy
# 构建并安装到 ~/.cargo/bin
cargo install --path crates/atomcode-cli
欢迎贡献!AtomCode 正在积极迭代中。
git clone https://atomgit.com/<你的用户名>/atomcode.git
cd atomcode
git checkout -b feat/your-feature
# 或
git checkout -b fix/your-bugfix
cargo build && cargo test && cargo clippy
git commit -m "feat: add xxx support"
main 分支提交 Pull Request| 前缀 | 用途 |
|---|---|
feat/ | 新功能 |
fix/ | Bug 修复 |
refactor/ | 重构(不改变行为) |
docs/ | 仅文档 |
chore/ | 构建、CI、工具链 |
package.json / Cargo.toml / pom.xml 等探测,并通过 adapter 分发)cargo fmt 和 cargo clippycrates/atomcode-core/src/tool/ 下实现 Tool traitcrates/atomcode-core/src/provider/ 下实现 LlmProvidercrates/atomcode-tuix/src/render/用微信扫描下方二维码加入 AtomCode 用户群,反馈问题、分享使用心得,和其他用户、维护者一起交流:
MIT License。详见 LICENSE。
用 Rust、ratatui 以及无数个深夜构建而成。