基本使用
掌握 CLI 参数、如何描述任务、如何给模型提供上下文、如何在多个任务之间切换。
启动方式
# 在当前目录启动 TUI
atomcode
# 指定工作目录
atomcode -C /path/to/project
# 指定 provider / 模型(一次性覆盖默认)
atomcode --provider claude --model claude-sonnet-4-6
# 继续上一次会话
atomcode -c
atomcode --continue
# 使用指定的配置文件
atomcode --config ./custom.toml
CLI 参数总览
| 参数 | 简写 | 作用 |
|---|---|---|
--dir PATH | -C | 工作目录,不指定则使用当前目录 |
--continue | -c | 继续上一次会话,而不是新建 |
--provider NAME | — | 覆盖默认 provider |
--model NAME | — | 覆盖当前 provider 的 model |
--config PATH | — | 使用指定的配置文件 |
--prompt TEXT | -p | Headless 模式,单次执行并把回复写到 stdout |
--prompt-file PATH | — | 从文件读取 prompt(适合长文本,与 -p 互斥) |
--verbose | -v | Headless 模式下把工具调用、token 用量等信息打到 stderr |
--max-turns N | — | 强制限制 Agent 循环的最大轮数,防止无限跑下去 |
--disable-tools LIST | — | 逗号分隔,禁用某些工具。例如 --disable-tools bash,web_fetch |
Tip
--disable-tools 让被禁用的工具对模型完全不可见(不会出现在 schemas 中),模型就不会重复尝试调用它。在沙箱评测、离线环境、禁止联网的 CI 等场景里非常实用。
描述任务的原则
AtomCode 的 Agent 循环能力主要取决于你给出的任务描述的质量。几条经验:
- 说目标,不说步骤 —— "修复登录后跳 404 的 bug",而不是"打开 src/auth/callback.ts,删除第 27 行,再…"。模型有足够的探索能力。
- 点明约束 —— 当你有偏好时明确说出:"保持 API 兼容"、"不改动测试文件"、"用 TypeScript 而不是 JS"。
- 给出验证方式 —— "改完后跑
npm test确认通过",让模型完成自我验证闭环。 - 先问后改 —— 不确定方向时,先让它"分析这个模块的结构并提出重构方案",对齐之后再让它动手。
示例任务
# Bug 修复
> 修复 OAuth 回调后用户被重定向到 404 的问题,确保回调完整恢复原始路径
# 新增功能
> 在设置页增加深色模式切换,使用 Tailwind 的 dark: 前缀,并持久化到 localStorage
# 重构
> 把 src/db/*.ts 重构成使用连接池,保持公有 API 不变,改完后跑 npm test
# 测试
> 给 src/payment/processor.ts 写单元测试,覆盖所有异常分支
# 代码理解
> 简要说明这个仓库的目录结构、构建入口和核心模块职责
多行输入
在 TUI 中:
Enter发送消息Shift+Enter换行(不发送)- 输入框高度会随内容自动增长
引用文件内容
把一个文件路径粘贴到输入框里,AtomCode 会把它当作"附件"并在发送时读入该文件的内容作为上下文。这比"让模型自己去读"更可控,尤其适合大文件中的片段。
粘贴长文本
AtomCode 支持 bracketed paste。当你粘贴一段很长的内容(比如一堆日志)时,TUI 会把它折叠成一个紧凑的 [paste #N · 132 lines] 指示器,避免输入框被撑爆。发送时会完整带入。
切换会话和目录
/resume—— 在不同会话之间切换或恢复/session—— 新建一个干净会话/cd或直接输入cd /path—— 切换工作目录(状态栏实时更新)/clear—— 清空当前会话的消息/compact—— 压缩历史消息以腾出上下文预算
详细行为见 会话与撤销。
查看成本和 diff
/cost—— 本次会话输出 token 数和上下文用量(不支持 usage 的 API 会自动估算)/diff—— 当前工作目录未提交改动的 git diff/undo—— 回滚上一轮的所有文件编辑