Claude Code 是一个运行在终端里的 AI(人工智能)编程代理。它可以读代码、改文件、执行命令、解释报错,也能把一个需求拆成多步任务持续推进。
但它的上限不只取决于模型能力,还取决于工作环境。终端不好用,窗口来回切;任务跑到一半电脑睡眠;大段需求全靠打字;人离开电脑后无法继续指挥;每个文件操作都要点确认,这些都会把 Claude Code 的效率打断。
比较顺手的配置思路是:把 Claude Code 放进一个稳定的工作台,让输入、执行、反馈和远程控制都围绕它展开。
flowchart LR
A[输入需求] --> B{输入方式}
B --> B1[终端键盘]
B --> B2[语音转文字]
B --> B3[手机 IM 消息]
B1 --> C[Claude Code]
B2 --> C
B3 --> D[IM 适配层]
D --> C
C --> E[读取项目代码]
C --> F[执行 Bash 命令]
C --> G[修改文件]
C --> H[生成计划与结果]
H --> I[终端反馈]
H --> J[IM 回复]
H --> K[任务完成通知]
这套环境可以拆成 5 个关键配置。
1. 用 AI 原生终端承载 Claude Code
Claude Code 虽然可以在任何终端里运行,但普通终端只负责输入和输出。真实开发时,除了和 Claude Code 对话,还要看文件、查文档、对比代码、预览 Markdown、连接远程服务器。窗口一多,注意力就会被频繁打断。
WaveTerm 这类 AI 原生终端更适合长时间使用 Claude Code。它把终端、文件浏览、文件预览、网页查看和 AI 辅助面板放在一个工作区里,常见布局可以这样安排:
┌──────────────────────────┬──────────────────────────┐
│ Claude Code 会话 │ AI 聊天 / 临时笔记 │
│ 运行任务、改代码、看日志 │ 分析报错、整理提示词 │
├──────────────────────────┴──────────────────────────┤
│ 文件预览 / Markdown / CSV / PDF / 图片 / 网页 │
└─────────────────────────────────────────────────────┘
WaveTerm 的安装命令很简单:
brew install --cask waveterm
开源地址:
https://github.com/wavetermdev/waveterm
用这类终端的重点不在“界面好看”,而在减少上下文切换:
| 能力 | 解决的问题 |
|---|---|
| 多区块布局 | Claude Code、文件预览、辅助聊天可以同时显示 |
| 文件预览 | 不用频繁跳到编辑器或 Finder 查看结果 |
| 网页浏览 | 查文档、看接口说明时不必切应用 |
| SSH 会话管理 | 远程开发时减少网络抖动带来的会话中断 |
| 工作区保存 | 长任务、多个项目可以按上下文组织 |
SSH(Secure Shell,安全远程登录协议)场景尤其适合放进这种终端。Claude Code 经常要执行一串命令,如果远程连接因为电脑休眠或网络波动断掉,任务状态就很难追踪。一个能管理会话、保留工作区的终端,会让长任务更稳定。
2. 让 Mac 合盖后继续运行 Claude Code
Claude Code 经常处理耗时任务,例如大范围重构、批量修复测试、生成文档、扫描代码结构。Mac 合盖后默认会睡眠,终端会话、网络连接和正在执行的任务都可能中断。
macOS 自带 caffeinate 命令,可以阻止系统进入睡眠状态:
caffeinate -s
-s 表示阻止系统睡眠,并且通常需要接入电源适配器。执行后终端会一直占用当前会话,想停止时按:
Ctrl + C
如果只想让某个命令运行期间保持唤醒,可以把命令接在后面:
caffeinate -s bash -lc "claude"
还可以配合系统设置,让接电时更稳定:
系统设置 → 电池 → 选项 → 打开「防止连接电源适配器时自动进入睡眠」
如果确实需要合盖后完全不触发睡眠,可以使用更强的 pmset 配置:
sudo pmset disablesleep 1
查看当前状态:
pmset -g | grep disablesleep
恢复默认行为:
sudo pmset disablesleep 0
这条配置会让系统忽略睡眠触发条件,风险也更高。长时间合盖运行时要注意散热,不要把电脑放进包里,也不要在被子、软垫这类影响散热的环境里执行长任务。
| 方案 | 适合场景 | 停止方式 | 风险 |
|---|---|---|---|
caffeinate -s | 临时跑长任务 | Ctrl + C | 相对可控 |
| 系统电池设置 | 接电时长期不自动睡眠 | 关闭设置项 | 需要注意耗电和发热 |
sudo pmset disablesleep 1 | 合盖也必须持续运行 | sudo pmset disablesleep 0 | 容易忽略散热问题 |
3. 用语音输入提交复杂需求
和 Claude Code 对话时,真正耗时的不是敲几个命令,而是描述清楚上下文:项目背景、改动目标、限制条件、期望输出、已有问题。打字很容易让思路被键盘速度限制,语音转文字更适合输入大段需求。
常见方案可以按场景选择:
| 方案 | 启动方式 | 适合输入 | 特点 |
|---|---|---|---|
| macOS 自带听写 | 连按两次 fn 键 | 短句、临时说明 | 系统级可用,任何输入框都能用 |
| 微信输入法语音 | 长按空格说话 | 中文长句 | 实时转写,识别速度快 |
| 低声识别工具,如闪电说 | 独立语音输入 | 办公室低声输入 | 适合不方便大声说话的环境 |
语音输入有一个常见问题:口语会比较散,转写结果可能出现重复、断句奇怪、代词不清。可以在项目的 CLAUDE.md 里提前告诉 Claude Code 如何处理语音转写内容。
示例:
# 交互约定
我可能会使用语音转文字输入需求。语音转写可能存在以下问题:
- 标点不准确
- 句子顺序不够严谨
- 出现重复表达
- 个别技术名词识别错误
- 代词指向不清楚
处理这类输入时,请先根据上下文整理真实意图。
如果需求存在歧义,先列出你的理解并提出确认问题。
不要因为语音文本不规整就直接执行高风险修改。
提交需求时可以用固定结构,语音输入会更稳:
背景:这个项目是一个 Next.js 管理后台,用户列表页面现在加载慢。
目标:请分析用户列表的请求链路,找出可能的性能问题。
约束:不要改数据库结构,不要引入新的状态管理库。
交付物:先给我一个排查计划,确认后再改代码。
这种结构能减少误解。Claude Code 接收到的不是一团口语,而是带有目标和边界的任务说明。
4. 用 IM 远程控制 Claude Code
IM(Instant Messaging,即时通讯)远程控制的核心思路很简单:手机把消息发给一个适配层,适配层再把消息转给 Claude Code,Claude Code 执行后把结果返回到手机。
sequenceDiagram
participant Phone as 手机 IM
participant Adapter as IM 适配层
participant SDK as Claude Agent SDK
participant Claude as Claude Code
participant Repo as 项目目录
Phone->>Adapter: 发送需求
Adapter->>SDK: 转换为 Claude 请求
SDK->>Claude: 在指定工作目录执行
Claude->>Repo: 读文件 / 改代码 / 跑命令
Repo-->>Claude: 返回结果
Claude-->>SDK: 输出总结
SDK-->>Adapter: 返回文本
Adapter-->>Phone: 推送执行结果
这里的关键不是接入哪个聊天软件,而是中间的适配层。飞书、企业微信、微信个人号、Telegram 都可以做类似方案,只要能接收消息、调用 Claude Agent SDK(软件开发工具包),再把结果发回去。
可以参考 Claude-to-IM 这类项目的实现思路:
https://github.com/op7418/Claude-to-IM/blob/main/README.zh-CN.md
伪代码结构大致如下:
// 伪代码:展示消息转发结构,不代表某个 SDK 的真实 API
im.onMessage(async (message) => {
if (!isAllowedUser(message.senderId)) {
return im.reply(message.chatId, "没有权限执行该操作");
}
const task = normalizeMessage(message.text);
const result = await claudeAgent.run({
cwd: "/Users/dev/projects/my-app",
prompt: task,
});
await im.reply(message.chatId, result.summary);
});
远程控制一定要加安全边界。手机发消息让本地机器执行命令,本质上已经接近“远程运维入口”,不能只靠聊天软件登录态保护。
| 风险 | 建议做法 |
|---|---|
| 任意用户发消息触发任务 | 做用户白名单,只允许指定账号 |
| Claude Code 修改了错误项目 | 每个聊天会话绑定固定工作目录 |
| 多条消息同时执行导致冲突 | 做任务队列,同一项目串行执行 |
| 执行了危险命令 | 限制命令范围,必要时要求二次确认 |
| 结果难以追踪 | 保存消息、任务 ID、执行日志和 Git diff |
| 远程误操作难回滚 | 所有任务在独立分支或 worktree 里执行 |
比较稳的工作方式是:手机只发“分析、规划、低风险修改”任务;涉及删除文件、改配置、发版、数据库操作时,要求 Claude Code 先生成计划,再人工确认。
5. 用 Plan Mode 和无人值守模式控制执行节奏
Claude Code 不只有普通对话模式,还可以通过不同执行模式控制“先规划还是直接动手”。
Plan Mode:先设计,再执行
Plan Mode 适合需求不够明确、改动范围较大、影响面需要评估的任务。进入规划模式后,Claude Code 不会马上修改文件,而是先拆解目标、分析代码结构、列出执行步骤。确认计划后,再让它开始改代码。
在交互界面里可以用 Shift + Tab 在模式之间切换,切到 Plan Mode 后再提交任务。
典型流程是:
flowchart TD
A[提交需求] --> B[Claude Code 分析项目]
B --> C[输出修改计划]
C --> D{人工确认}
D -- 需要调整 --> E[补充约束]
E --> B
D -- 确认执行 --> F[Claude Code 修改文件]
F --> G[运行测试或检查]
G --> H[输出变更总结]
适合使用 Plan Mode 的任务:
| 任务类型 | 为什么需要先规划 |
|---|---|
| 大范围重构 | 需要先确定影响面,避免改一半发现方向错了 |
| 性能排查 | 要先建立排查路径,而不是随机改代码 |
| 架构调整 | 需要比较多个方案的代价 |
| 跨模块 Bug 修复 | 要先找到调用链和状态流向 |
| 生成迁移方案 | 涉及步骤顺序和回滚策略 |
无人值守模式:跳过权限确认
Claude Code 默认会在执行 Bash 命令、读写文件等操作前请求确认。这对安全很重要,但对于确定范围内的批量任务会比较慢,比如统一格式化、批量替换、补测试、整理文档。
可以用危险权限模式启动:
claude --dangerously-skip-permissions
这个模式会跳过权限确认,让 Claude Code 自动执行工具调用。它适合“范围明确、可回滚、低风险”的任务,不适合直接在重要目录或主分支上使用。
更安全的做法是把任务放进独立 worktree:
# 在当前仓库旁边创建一个独立工作区
git worktree add ../my-app-agent-task -b agent/batch-format
cd ../my-app-agent-task
# 确认工作区干净
git status --short
# 在隔离分支里启动 Claude Code
claude --dangerously-skip-permissions
执行结束后检查变更:
git status --short
git diff --stat
git diff
确认没有问题再提交:
git add .
git commit -m "chore: batch format files"
权限模式可以按任务风险来选:
| 模式 | 行为 | 适合场景 | 不适合场景 |
|---|---|---|---|
| 默认模式 | 每次关键操作前确认 | 日常开发、高风险项目 | 大批量机械修改 |
| Plan Mode | 先生成计划,不直接改代码 | 架构调整、复杂 Bug、需求拆解 | 非常明确的小改动 |
--dangerously-skip-permissions | 跳过权限确认自动执行 | 隔离分支里的批量任务 | 生产环境、主目录、不可回滚操作 |
长任务还可以配合通知机制。思路是让 Claude Code 或外层脚本在任务结束时调用系统通知、Webhook 或 IM 接口,避免一直盯着终端。macOS 上可以用 terminal-notifier 之类的工具:
brew install terminal-notifier
terminal-notifier -title "Claude Code" -message "任务已结束,请检查 diff"
如果当前 Claude Code 版本支持 hooks,可以把通知挂到任务结束事件上;如果不想依赖 hooks,也可以在外层脚本或 IM 适配层里做通知。
组合后的使用方式
5 个配置解决的是同一条工作链路上的不同问题:
| 配置 | 解决的问题 | 关键动作 |
|---|---|---|
| AI 原生终端 | 减少窗口切换,集中管理代码、预览和会话 | 用 WaveTerm 组织 Claude Code 工作区 |
| Mac 防睡眠 | 长任务不被合盖或系统睡眠打断 | caffeinate -s 或按需配置 pmset |
| 语音输入 | 快速提交长需求和复杂上下文 | 使用系统听写或输入法语音,并在 CLAUDE.md 声明语音约定 |
| IM 远程控制 | 人不在电脑前也能派发任务和收结果 | IM 适配层 + Claude Agent SDK + 权限控制 |
| Plan Mode / 无人值守 | 在“安全规划”和“自动执行”之间切换 | 复杂任务先 Plan,低风险批量任务放进隔离分支自动跑 |
Claude Code 最适合被当成一个持续工作的开发代理,而不是一次性问答工具。终端负责承载工作区,macOS 配置保证任务不中断,语音和 IM 提高输入效率,Plan Mode 控制风险,无人值守模式处理机械重复任务。把这些环节接起来后,Claude Code 才能稳定承担更长、更复杂的开发任务。