README
_ _ ____ _
/ \ | |_ ___ _ __ ___ / ___|___ __| | ___
/ _ \| __/ _ \| '_ ` _ \ | / _ \ / _` |/ _ \
/ ___ \ || (_) | | | | | | |__| (_) | (_| | __/
/_/ \_\__\___/|_| |_| |_|\____\___/ \__,_|\___|
用 Rust 编写的开源终端 AI 编码助手
English · 简体中文
安装 · 快速开始 · 功能 · 架构 · 开发 · 贡献 · 社区
本项目 100% 由 AI 生成。 每一行代码、每一个架构决策的实现、每一次提交都由 AI 完成。人类开发者仅担任决策者和产品经理的角色——定义"要做什么",而不是"怎么做"。
AtomCode 是一款住在你终端里的 AI 编码助手。用自然语言给它一个任务,它会自动阅读代码、编辑文件、执行命令、验证结果——全程自主完成。
你可以把它理解为 Claude Code / Cursor Agent 的开源替代品,完全运行在终端里,并且可以接入任何兼容 OpenAI 接口的模型。
功能特性
Agent 循环
- 自主多步执行 —— 读文件、改代码、跑测试、修错误,循环直到完成
- 验证回路 —— 每次编辑后自动跑语法检查确认无误,才算任务完成
- 动态步数预算 —— 根据编辑文件数动态放宽步数上限,同时封顶以控成本
- 循环检测 —— 识别并打破重复调用同一工具的死循环
- 三层 JSON 修复 —— 修复畸形工具调用参数
- Turn 级 datalog —— 结构化记录每一轮工具调用,便于回放、调试和评测
模式与自主
- Plan / Build 模式 ——
/plan切换到只读探索模式(agent 只调研、不改文件),/build切回完整执行 - 目标模式 ——
/goal <目标>设定完成条件后,agent 会一轮接一轮自动循环执行,直到目标达成 - 代码审查 ——
/review审查当前改动,/review staged审查暂存区,/review <base>对比某个基准 ref - 后台会话 ——
/bg把任务放到分离的槽位执行,长任务进行时你仍可继续使用 TUI
内置工具
文件与 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、DeepSeek V4 |
| 智谱(GLM) | 支持 | GLM-4、GLM-5、GLM-5.2(AtomCode Pro 套餐专属模型) |
| 通义千问(阿里) | 支持 | Qwen-Plus、Qwen-Max |
| SiliconFlow | 支持 | 多种开源模型 |
| Ollama(本地) | 部分支持 | Llama 3、Qwen2 等 |
| 任意 OpenAI 兼容接口 | 支持 | — |
会话与登录
- 持久化会话 —— 每次对话都会保存;命令行可用
atomcode --continue或-c继续上一次会话,在 TUI 内可用/resume恢复或切换 - AtomGit OAuth 登录 ——
/login(或atomcode login)将 CLI 与你的 AtomGit 账号绑定 - SSO 登录 ——
/login-with-sso,GitCode 内部用户使用 - Headless 模式 ——
atomcode -p "..."非交互式跑一条 prompt,结果直接输出到 stdout(类似 Claude Code 的-p);需要确认的bash会自动批准,其他需要确认的工具会被拒绝 - Daemon 模式 ——
atomcode-daemon提供 HTTP API,用于查询会话历史和 SSE 流式对话
终端 UI
- 实时流式输出 —— Markdown 渲染 + 语法高亮
- 代码块 —— 语言标签、行号、
base16-ocean.dark主题 - 多行输入 —— Shift+Enter 或
\+ Enter 换行、高度自适应、历史记录 - 任务完成通知 —— 长任务结束后优先走终端原生通知协议,必要时回退到系统通知
- 文本选择 —— 鼠标拖选、自动滚动、复制到剪贴板
- 斜杠命令 ——
/model、/provider、/resume、/bg、/diff、/undo、/cost、/clear、/compact等(完整列表见下) - 文件附加 —— 粘贴文件路径即可把内容作为上下文带入
- Bracketed paste —— 长文本粘贴自动折叠为紧凑的指示器
- Skills —— 从 skill 目录加载的用户自定义命令,像普通斜杠命令一样调用
Web UI
/webui(TUI 内)或atomcode webui(命令行)会在浏览器里打开一个本地 Web 界面,作为终端界面之外的另一种选择——同一个 agent、同一份会话,渲染在浏览器中- 仅本地回环 —— server 绑定
127.0.0.1并使用一次性 token,不对网络暴露 /webui stop停止进程内 server(之后再次/webui会重新启动)
App 远程访问
/app(TUI 内)开启移动端远程访问,终端打印二维码,用手机 GitCode App 扫码即可在任意网络下连入当前对话- 任意网络可达 —— 电脑通过反向 WSS 隧道连接到公网中继,手机经中继访问电脑,不需要公网 IP、DDNS 或路由器端口映射
- 双向实时同步 —— 任一端发消息,另一端实时显示(AI 流式回复、工具调用卡片、token 用量)
- 远程命令 —— 手机端支持
/status、/cost、/diff、/whoami等斜杠命令,在桌面端执行并回显 - 切项目 / 切会话 —— 手机端切换项目或点开历史对话,桌面端跟随切换
- 模型双向同步 —— 任一端切换模型,另一端同步跟随
/app stop断开远程访问
安全性
- 破坏性命令检测 ——
rm -rf、git push --force、DROP TABLE等需要显式确认 - 按路径分层确认 —— 工作区外读取、敏感路径访问、以及所有工作区外写入会按风险等级请求确认
- 敏感文件保护 —— 系统保护路径、凭证目录、shell 配置、
.env文件、密钥/证书文件会触发更强的确认规则 - Shell 绕过防护 ——
cat、head、ls、cp、mv、tee等常见 shell 文件命令会继承和文件工具一致的路径审批模型 - 按会话的权限授予 —— 单条工具模式一次授权,或设为始终允许
- 源码文件删除必须确认 —— 对代码文件执行
rm从不自动放行 - 撤销 ——
/undo通过文件历史快照回滚上一轮的所有文件编辑
完整设计与当前边界见 权限模型。
隐私
- 📊 匿名遥测(默认开启,可关闭)— 详见 docs/telemetry.md
安装
官方安装脚本(推荐)
Windows PowerShell 用户:
irm https://raw.atomgit.com/atomgit_atomcode/atomcode/raw/main/scripts/install.ps1 | iex
Linux / macOS / WSL / MSYS / Git-Bash / HarmonyOS PC 用户:
curl -fsSL https://raw.atomgit.com/atomgit_atomcode/atomcode/raw/main/scripts/install.sh | sh
两个脚本都会下载最新版本的官方预编译二进制(从 AtomGit API 自动探测),安装并写入 PATH。
官方构建包含请求签名器,因此 /login 可以领取免费的 CodingPlan 模型(见下文「关于官方 CodingPlan」)。
环境变量覆盖项:ATOMCODE_VERSION 用于固定某个发布版本,ATOMCODE_PREFIX 用于指定安装目录
(详见脚本头部注释)。
从源码构建
git clone https://atomgit.com/atomgit_atomcode/atomcode.git
cd atomcode
WebUI 构建(使用 webui 功能时需要 —— 在 Rust 构建之前进行)
atomcode webui 浏览器 UI 从 webui/dist/ 嵌入二进制,该目录被 gitignore、并未提交。
Rust 构建本身不需要 Node.js 工具链,缺少该目录也能编译通过,但构建出的二进制在所有
webui 页面上都会返回 webui not built。如需可用的 webui,请在 Rust 构建之前先构建前端:
cd webui
npm ci
# Windows MSYS / Git Bash 用户请改用
# `PATH="/c/Program Files/nodejs:$PATH" npm run build`
# 以使用系统安装的 Node.js。
npm run build # 输出 webui/dist/,由下一次 Rust 构建嵌入
cd ..
不使用 webui 可跳过这一步(发布脚本会在 cargo build 前自动构建前端)。
注意 cargo 不会跟踪 webui/dist/ 的变化:重新构建前端后,需强制重编 daemon crate
(cargo clean -p atomcode-daemon)才会重新嵌入新 bundle。然后构建并安装:
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 环境变量中。
如果只想要编译,不要安装,运行:
# 只编译 CLI 包(`atomcode`)—— 跳过独立的
# `atomcode-daemon` 二进制和其他 workspace 成员
cargo build --release -p atomcode
编译产物会在 target/release/atomcode 生成。
关于官方 CodingPlan(闭源签名)
本仓库中的 crates/atomcode-codingplan-crypto/ 是一个开源占位实现。真正的请求签名实现是闭源的,
只由官方发布流水线覆盖注入,因此自行构建的二进制无法对 AtomCode 官方服务进行请求签名。
通过上方官方安装脚本(或下方包管理器)安装的二进制是官方构建,包含签名器。实际影响:
- 自行构建的二进制中,
/login无法领取官方免费 CodingPlan 模型。签名保持闭源是为了防止 免费计划在官方构建之外被滥用。 - 连接你自己的 API 提供商不受影响:在
~/.atomcode/config.toml的providers.*下配置的 任意提供商(DeepSeek、OpenAI 或任意 OpenAI 兼容端点)无需签名器即可使用。
包管理器安装
除了从源码构建外,AtomCode CLI 也可以通过以下包管理器安装:
# 使用 npm 安装
npm install -g @atomgit.com/atomcode
# 使用 Homebrew 安装
brew install --cask atomcode
Shell 补全
AtomCode 可为 Bash、Zsh、Fish、PowerShell 和 Elvish 生成补全脚本。例如:
# Bash(当前会话)
source <(atomcode completion bash)
# Zsh(持久生效)
mkdir -p ~/.zfunc
atomcode completion zsh > ~/.zfunc/_atomcode
# 同时在 ~/.zshrc 的 `compinit` 之前加入:fpath=(~/.zfunc $fpath)
# Fish(持久生效)
mkdir -p ~/.config/fish/completions
atomcode completion fish > ~/.config/fish/completions/atomcode.fish
PowerShell 可运行 atomcode completion powershell | Out-String | Invoke-Expression。完整 Shell 列表见 atomcode completion --help。该能力只作用于
外部命令行;TUI 内仍由 Tab 完成输入补全、Shift+Tab 切换执行模式。
依赖
- Rust 1.88+(用于构建;更旧的 Cargo 无法解析当前 lock 文件)
- 任一支持的模型提供方的 API Key(或使用
/login的 AtomGit 账号;免费 CodingPlan 模型需要官方构建——见上文「关于官方 CodingPlan」)
权限 —— 不要用 sudo 启动
请用普通用户运行 AtomCode,切勿 sudo。AtomCode 把配置、会话、日志都放在
~/.atomcode;一旦用 root 跑过一次,就会在那里留下 root 属主的文件,之后非 root
启动会在运行时初始化阶段报错:
coding runtime assemble failed: Permission denied (os error 13)
(提示里可能是 prepare 而非 assemble——同一个原因。)遇到这种情况,把属主收回
并停止使用 sudo:
sudo chown -R "$(id -un):$(id -gn)" ~/.atomcode
atomcode # 不要再加 sudo
在 Linux 客户机上,工作目录若在 VirtualBox 共享文件夹(/media/sf_*,属主
root:vboxsf)也会导致权限错误——用 sudo usermod -aG vboxsf "$USER" 把自己加进
该组(重新登录后生效),而不是用 sudo。
卸载
移除 AtomCode 及(可选)其数据:
atomcode uninstall # 交互模式:分组询问
atomcode uninstall --keep-data # 仅删除二进制 + PATH 配置
atomcode uninstall --purge # 一并删除 ~/.atomcode/
atomcode uninstall --dry-run # 仅打印计划,不实际删除
二进制已损坏或丢失时使用兜底脚本:
curl -fsSL https://raw.atomgit.com/atomgit_atomcode/atomcode/raw/main/scripts/uninstall.sh | sh
# Windows:
irm https://raw.atomgit.com/atomgit_atomcode/atomcode/raw/main/scripts/uninstall.ps1 | iex
默认保留凭据(auth.toml、mcp.json、config.toml、ATOMCODE.md),传 --purge 才会一起清除。
快速开始
1. 首次运行
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)
2. 配置
配置文件位于 ~/.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 重新加载配置,
不用重启。
3. 开始编码
# 在项目目录下启动
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 |
换行(终端能区分该组合键时) |
Alt+Enter |
换行(多数终端可用,见下方兼容性说明) |
\ + Enter |
换行(所有终端通用——输入一个 \ 后按回车,\ 会被自动删除) |
Esc |
清空输入 / 取消流式输出 |
Esc ×2 |
撤销上一轮 |
Up/Down |
浏览输入历史 |
Tab |
接受斜杠命令、Skill 或文件补全 |
Shift+Tab |
无补全菜单时切换到下一个执行模式 |
F2 / Shift+F2 |
切换下一个 / 上一个模型(Mac 通常按 Fn+F2 / Fn+Shift+F2) |
Ctrl+R |
反向搜索输入历史 |
Ctrl+T |
切换 reasoning_effort |
Ctrl+U |
清空当前行 |
Ctrl+W |
删除一个单词 |
Ctrl+K |
删除到行尾 |
Ctrl+V / Ctrl+Alt+V |
从剪贴板粘贴文本或图片(Windows 也可用 /paste) |
换行快捷键的终端兼容性:
Shift+Enter、Ctrl+Enter需要终端支持 Kitty 键盘协议 — kitty、WezTerm、Alacritty、iTerm2 ≥3.5、Windows Terminal ≥1.21。不支持的终端(以及 Windows,atomcode 在其上不启用该协议)会把它们退化成普通Enter(直接发送消息)—— 请改用\+Enter,它在所有终端都生效。- AtomCode 仅在明确兼容的终端中自动启用 Kitty 键盘协议。JumpServer 等通用 WebTerminal 默认使用传统键盘上报;可通过
ATOMCODE_KITTY=1强制开启,或用ATOMCODE_KITTY=0强制关闭。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,开箱即用。
导航
| 键位 | 动作 |
|---|---|
Shift+Up/Down |
滚动聊天区(一行) |
PageUp/PageDown |
滚动聊天区(10 行) |
Alt+Up/Down |
跳到上一条 / 下一条消息 |
Ctrl+Up/Down |
跳到上一条 / 下一条用户消息 |
空输入时 Home/End |
跳到对话顶部 / 底部 |
Ctrl+Shift+C |
复制选中内容 |
Ctrl+C |
取消当前操作(连按两次退出) |
斜杠命令
在 TUI 中输入 / 即可浏览完整列表并实时补全;/help 会列出命令与快捷键。
会话与工作区
| 命令 | 动作 |
|---|---|
/resume |
恢复或切换会话 |
/session |
创建新会话 |
/rename <名称> |
重命名当前会话 |
/clear |
开始新对话(清空上下文与屏幕) |
/bg |
将当前会话放到后台;子命令:/bg list、/bg <N>、/bg drop <N>、/bg help |
/background <task> |
兼容入口:在 /bg 槽位中启动一次性后台任务 |
/cd |
切换工作目录并开启新建对话 |
/worktree |
Git worktree 隔离(create / list / done / cleanup) |
/webui |
启动浏览器 webui(子命令:stop、lan、--host <地址>) |
/sync |
连接到实时 webui 会话(/sync off 断开) |
模式、自主与审查
| 命令 | 动作 |
|---|---|
/plan |
切换到 Plan 模式(只读探索) |
/build |
切换到 Build 模式(完整执行) |
/goal <目标> |
设置完成目标——agent 自动循环执行直到条件满足 |
/review |
代码审查当前改动(/review · /review staged · /review <base>) |
/think |
控制深度思考(on / off / budget N) |
/effort |
DeepSeek 推理努力控制(high / max / off) |
Provider 与账号
| 命令 | 动作 |
|---|---|
/model |
切换模型 / provider |
/provider |
管理 provider(添加 / 编辑 / 删除) |
/proxy |
切换出站代理模式 |
/login |
通过 AtomGit OAuth 登录并申领 CodingPlan 免费模型 |
/logout |
退出 AtomGit 登录 |
/whoami |
查看当前登录用户 |
/status |
查看登录状态和模型信息 |
文件、编辑与上下文
| 命令 | 动作 |
|---|---|
/diff |
显示当前修改的 git diff |
/undo |
撤销某一轮的文件编辑(/undo 或 /undo N) |
/view <文件路径> |
在浮层窗口中查看文件内容 |
/paste |
从剪贴板粘贴图片(Windows 下 Ctrl+V 被终端拦截时的备用入口) |
/copy |
从上一条回复复制代码块(/copy、/copy N、/copy all) |
/cost |
显示本次会话的 token 消耗 |
/context |
查看上下文预算占用明细 |
/compact |
压缩对话历史 |
记忆
| 命令 | 动作 |
|---|---|
/remember <事实> |
保存一条记忆(--global 对所有项目生效) |
/forget <关键词> |
删除匹配的记忆 |
/memory |
查看所有已保存的记忆 |
扩展
| 命令 | 动作 |
|---|---|
/mcp |
MCP 服务状态(子命令:reload、tools、login、logout) |
/plugin |
插件市场(marketplace / install / uninstall / list) |
/skills |
浏览已加载的 skills |
项目与系统
| 命令 | 动作 |
|---|---|
/init |
按当前语言及可选自定义提示词,创建或完善当前生效的项目指令文件 |
/config |
显示配置文件路径 |
/reload |
从磁盘重新加载 ~/.atomcode/config.toml |
/upgrade |
升级 atomcode 到最新版(子命令:rollback) |
/setup |
首次运行:安装推荐 skill 并执行 |
/welcome |
重新运行引导向导 |
/language |
切换显示语言及默认 Git 提交消息语言 |
/guide <问题> |
向 atomcode-guide 询问使用方式 |
/keys |
查看键盘快捷键 |
/help |
查看命令与快捷键 |
/quit、/exit |
退出 AtomCode(或连按 Ctrl+C) |
AtomGit Issue:
/issue已移除。执行/login后,直接用自然语言提出需求即可,例如“为这个 Bug 创建一个 AtomGit Issue”,AtomCode 会调用内置的atomgit_issue工具。读取 Issue 可直接执行;创建 Issue,以及新增、编辑或删除评论仍需权限确认。插件命令:除了上面的内置命令,插件还能注册自己的斜杠命令。例如安装官方频道插件后即可使用
/plugin marketplace add https://atomgit.com/atomgit_atomcode/AtomCode-Channel /plugin install weixin@atomcode-channel
自定义命令
除了内置命令和插件命令,你还可以通过 .md 模板文件定义自己的斜杠命令,适用于频繁使用的提示词。
存放位置(按优先级从低到高):
| 位置 | 作用域 |
|---|---|
$ATOMCODE_HOME/commands/(默认为 ~/.atomcode/commands/) |
全局 —— 所有项目生效 |
<project>/.atomcode/commands/ |
项目级 —— 覆盖同名的全局命令 |
plugins/<name>/commands/ |
插件贡献 —— 通过 /plugin install 安装 |
文件格式:
---
name: explain
description: 解释指定函数或模块的工作原理
args: required
---
请详细解释以下代码的工作原理:
$ARGUMENTS
包括:函数签名与参数含义、核心业务逻辑、数据流与副作用。
-
name—— 必填。命令名,输入/explain触发。 -
description—— 可选。Tab 补全时显示。 -
args—— 可选。控制参数期望与交互行为:值 菜单 Enter 行为 空参提交 none(默认)立即执行 允许(替换为空字符串) optional补全到 /name,等待输入允许 required补全到 /name,等待输入拒绝并提示错误 模板变量
$ARGUMENTS/${ARGUMENTS}始终替换为用户在命令名后输入的内容(未输入则为空字符串)。 -
模板正文 —— 输入命令后发送给 AI 的提示词。
$ARGUMENTS或${ARGUMENTS}会被替换为用户输入的命令参数。
示例:创建一个审查命令
mkdir -p .atomcode/commands
cat > .atomcode/commands/codereview.md << 'EOF'
---
name: codereview
description: 对当前 git diff 进行代码审查
args: optional
---
请对当前 git diff 中的所有改动进行代码审查。
如有指定文件则只审查: $ARGUMENTS
EOF
输入 /help commands 可查看所有已加载的自定义命令。
优先级规则:自定义命令名不能覆盖同名内置命令。如果内置已有
/review,项目级自定义的review.md不会出现在补全菜单中,也不会被 dispatch。
架构
AtomCode 是一个分层的 Rust workspace:
atomcode/
crates/
atomcode-kernel/ # 中立 agent 循环与运行时 trait
atomcode-capabilities/ # provider、tools、MCP、skills、session、memory
atomcode-coding/ # coding 专业化与 CodingRuntime 生命周期
atomcode-review/ # 代码评审专业化
atomcode-tuix/ # 终端 UI
atomcode-cli/ # TUI 与 headless 入口
atomcode-daemon/ # HTTP/SSE/WebSocket 传输层及历史 session importer
coding 主调用链是 CLI/TUI/daemon → CodingRuntime → kernel。已经退役的 core agent
协议和 atomcode-bridge 不再位于运行时路径中。
设计原则
-
技术栈无关 —— 核心引擎不硬编码任何特定语言的逻辑,通过
package.json、Cargo.toml、pyproject.toml、pom.xml等描述文件动态探测项目类型。 -
单一运行时所有者 ——
CodingRuntime统一拥有 live coding agent、provider/session 生命周期、pending request、snapshot 和 controller。driver 只负责输入、展示和传输,不重建第二套 agent runtime。 -
工具安全 —— 所有破坏性操作必须经用户显式确认。工具失败会作为 observation 返回给模型,绝不 panic。
-
上下文感知 —— token 预算感知的会话窗口、项目文件树注入、每轮系统提醒,在不超出上下文限制的同时让模型保持专注。
-
依赖单向 —— kernel 保持中立;capabilities 和 coding 保持 core-free;历史 session 数据只在显式兼容边界处理,不作为 runtime fallback。
项目指令文件
在项目根目录创建 .atomcode.md 文件,给 AtomCode 提供持久化上下文:
# Project Instructions
本项目是 Vue 3 + TypeScript,使用 Pinia 做状态管理。
- 始终使用 `<script setup>` 风格的 Composition API
- 样式使用 TailwindCSS,不写内联样式
- 编辑 .vue/.ts 文件后运行 `npm run lint`
AtomCode 会自动读取这个文件并注入到系统提示中。AtomCode 也支持 AGENTS.md(AI 编程代理的开放标准)作为替代——如果两个文件同时存在,.atomcode.md 优先。
运行 /init 可分析仓库并创建或完善当前生效的项目指令文件,生成语言跟随当前 /language。如需追加团队自定义要求,可在 /config 中设置“自定义 /init 提示词文件”,或在 $ATOMCODE_HOME/config.toml 中添加 init_prompt_file = "prompts/init.md";相对路径基于 $ATOMCODE_HOME 解析。
开发
前置条件
- Rust 1.88+ —— 通过 rustup 安装
- Git
- 任一支持的模型 API Key(用于运行时测试)
从源码构建
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-capabilities
cargo test -p atomcode-tuix
# 运行指定的用例
cargo test -p atomcode-capabilities test_name
常用命令
# 只做类型检查,不生成产物
cargo check
# 格式化代码
cargo fmt
# 运行 linter
cargo clippy
# 构建并安装到 ~/.cargo/bin
cargo install --path crates/atomcode-cli
贡献指南
欢迎贡献!AtomCode 正在积极迭代中。
如何贡献
- 在 AtomGit 上 Fork 仓库
- 克隆你的 fork:
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 - 清晰地写 commit:
git commit -m "feat: add xxx support" - Push 并向
main分支提交 Pull Request
分支命名
| 前缀 | 用途 |
|---|---|
feat/ |
新功能 |
fix/ |
Bug 修复 |
refactor/ |
重构(不改变行为) |
docs/ |
仅文档 |
chore/ |
构建、CI、工具链 |
约定
- 遵守项目的核心原则,尤其是 技术栈中立
(核心引擎中不写任何针对特定语言/框架的逻辑;通过
package.json/Cargo.toml/pom.xml等探测,并通过 adapter 分发) - 工具失败必须优雅处理——把错误作为 observation 返回给模型,绝不 panic
- 破坏性操作必须需要用户确认
- 系统提示保持紧凑(约 1.5K tokens)
- 提交前先跑
cargo fmt和cargo clippy
从哪里上手
- 新增工具 —— 在
crates/atomcode-capabilities/src/tools/下实现Tooltrait - 新增模型提供方 —— 在
crates/atomcode-capabilities/src/provider/下实现LlmProvider - 改进 UI —— 渲染相关代码在
crates/atomcode-tuix/src/render/ - 修 Bug —— 到 Issues 上挑一个
非 Rust 贡献者
不会 Rust?没关系!有很多方式可以不写 Rust 代码就能参与贡献:
- 📝 文档 — 改进 README、修正错别字、完善官方文档站、添加使用示例。文档位于
site/目录和 README 文件中。 - 🌐 本地化与翻译 — 帮助将文档站、README 或界面文案翻译成更多语言。查看
site/docs/了解现有翻译。 - 🧩 Skills 与插件 — 创建新的 skill(Markdown + JSON,无需 Rust),扩展 AtomCode 的能力。Skill 从
~/.atomcode/skills/加载。 - 🐛 Bug 报告 — 发现 Bug?在 Issues 中提交清晰的复现步骤、截图和环境信息。高质量的 Bug 报告非常宝贵。
- 🧪 测试用例与示例 — 添加测试场景、示例项目或使用演示,帮助验证功能并帮助新用户上手。
- 💬 社区支持 — 在社区群中回答问题、编写教程或制作视频指南。
每一份贡献,无论是代码还是非代码,都能让 AtomCode 变得更好。不确定从哪里开始?开一个 Issue 或发起讨论吧!
社区交流
用微信扫描下方二维码加入 AtomCode 用户群,反馈问题、分享使用心得,和其他用户、维护者一起交流:
打赏
☕ AtomCode 免费用,Coding Plan 也不收费。如果它帮你省下了一点时间,欢迎请作者喝杯咖啡,让我们更有动力把它做下去。
许可证
MIT License。详见 LICENSE。
用 Rust、ratatui 以及无数个深夜构建而成。
Claude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get Started
AtomCode使用问答Skills
项目展示
查看全部项目 >- Claude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust4.4 K651188464MIT更新于 1 小时前Star
- Star
- Star
- Star
- Star
- Star
- Star
- Star
- 📣
AtomCode v5.1.0版本发布(2026-09-18)
公告 013 天前 - 📣公告 08月28日
- 🙏开放讨论 08月22日
- 📣
- 🙏开放讨论 14月17日

