课程
想象一下,您正坐在火车上。家里的笔记本电脑正在进行一项需要 30 分钟的重构。手机一震:Telegram 里来自您自建的 Claude Code 机器人的摘要弹出。测试通过了,这里是变更,这里是出错的地方。您输入下一条指令,锁屏,继续看书。
Claude Code 的两个功能让这一套流程顺畅运行。自动模式移除了会卡住会话的审批提示;渠道(Channels)把来自 Telegram、Discord 或 iMessage 的消息转发到实时会话中,就像您本人在键入一样。
本教程将从零开始带您完成二者的配置,并演示如何用手机跑一遍“编写-测试-调试”的循环。
如果您刚接触 Anthropic 的大语言模型,建议先学习我们的课程 Introduction to Claude Models。
先决条件
要跟随本教程,您需要:
- Claude Code v2.1.200 或更高版本(更早的版本从 v2.1.83 起支持自动模式,但 v2.1.200+ 包含 Sonnet 5 分类器、手动模式标签以及若干自动模式修复)
- 已安装 Bun 运行时(所有渠道插件都需要它,Node 和 Deno 不可用)
- 处于 Max、Team 或 Enterprise 层级的 Claude 订阅,或具备 API 访问权限。自动模式不在 Pro 计划中提供,也没有附加包可开启(额外用量同样不可用)
- 您手机上的一个 Telegram 账号
- 主机上安装 Python 3.10 或更高版本
- 一台您离开时仍能保持唤醒的机器(笔记本保持开盖、台式机常开,或一台服务器)
什么是 Claude Code 自动模式(以及为何要与渠道搭配)?
Claude Code在执行任何超出项目范围的操作前,都会先询问。Anthropic 自身的数据表明,用户最终有 93% 的提示会选择批准。在这个比率下,这些提示增加了摩擦,却未明显提升安全性。
自动模式用一个分类器替代了这种模式。每次工具调用都会交给一个独立的 Claude 模型(Sonnet 5)来审核该动作,决定放行或拦截。长时间的无人值守运行不再每三十秒因审批而暂停。
该分类器与负责编写代码的模型不同。即使主模型被越狱或误导,也无法诱骗分类器放行不当调用。还有一个单独的探针会在工具输出(文件内容、网页抓取、Shell 标准输出)进入 Claude 上下文之前,扫描是否存在提示注入。

并非所有工具调用都会经过分类器。对项目目录内的读取、文本搜索、代码导航和文件编辑会走快速路径,无需审核。Shell 命令、网页抓取、任何触及项目外文件的操作,以及任何子代理的启动,都会交给分类器。

Anthropic 在自动模式公告中公布了数字。基于 10,000 次真实工具调用,该流程的误报率为 0.4%。在 52 个精心策选的“过度积极”动作上,漏报率为 17%。用自动模式替代--dangerously-skip-permissions明显更优。但它不能替代细致的人为审核:分类器平均每六次会漏掉一次。
当分类器拦截调用时,Claude 会把拒绝当作工具结果接收。Claude 预期会寻找更安全的路径,而不是绕过拦截。连续被拦三次或累计二十次后,自动模式会将控制权交还给您。无头的 claude -p 运行则会直接终止。
自动模式 vs bypassPermissions
我起初使用自动模式时,以为它只是更聪明的 bypassPermissions。我对 bypass 的不满在于它全都允许:读取 .env 文件、修改配置等等。
自动模式解决了这一点。对敏感文件的操作和显式删除默认会被拒绝。覆盖方式是您在提示中点名文件,使分类器允许该编辑。这已经比没有任何检查的 bypass 更好。
让我意外的是,自动模式不仅是权限模式,还是决策模式。此前我常把一串 Claude Code 技能串联起来,用流水线实现或调试一个功能。在 bypassPermissions 下,Claude 会在各阶段间停下来询问是否继续。
我喜欢这种模式:暂停正好是我审查成果或指示继续的节点。在自动模式下,Claude 会自行判断上下文是否足够,是否进入下一阶段。我原本依赖的人工审查检查点没了。您要么欢迎更快的运行速度,要么会怀念“人被纳入循环”的那些停顿。
另一个意外在反方向。使用 bypassPermissions 时,如果我让 Claude 修改它自己的配置或技能,它会拒绝。无论是否 bypass,它都会来问我。而在自动模式下,Claude 在这方面拥有更大自由:技能文件、.claude/ 设置以及自身配置都可在无需询问的情况下编辑。这对自维护技能很有用,但如果您期望 Claude 不碰自己的配置,这也是一个风险。
自动模式 vs 其他权限模式
Claude Code 提供六种模式,它们在“全部批准”与“全不批准”的光谱上分布。下表是简版。长版可阅读官方文档。
|
Mode |
What runs without asking |
Best for |
Risk profile |
|
|
仅读取 |
敏感工作,每个动作都要复核 |
最低。每次写入、Shell 和网络调用都会提示 |
|
|
读取、文件编辑、常见文件系统命令(mkdir、mv、cp) |
事后复核您正在审查的代码迭代 |
较低。Shell 和网络仍会提示 |
|
仅读取;Claude 提出计划但不执行 |
探索代码库,在任何写入发生前先审阅拟议变更 |
最低。不切换模式就不会执行任何操作 |
|
|
|
所有操作,后台有分类器检查 |
长任务、异步与远程工作、减少提示疲劳 |
中等。误报 0.4%,对过度积极动作的漏报 17% |
|
|
仅限通过 permissions.allow 预先批准的工具;其他一律自动拒绝 |
锁定的 CI 流水线和已完全预知允许工具集的自动化脚本 |
较低,但错误配置的允许列表可能悄然阻断合法操作 |
|
|
受保护路径之外的所有操作 |
仅限隔离的容器和虚拟机 |
最高。无分类器、无安全网 |
我的建议:敏感仓库、每次写入都需复核的场景用 default;个人项目用 auto;而 bypassPermissions仅在一次性容器内使用,以限制潜在影响面。
渠道如何融入整体
Claude Code 渠道是将事件发送到您运行中会话的 MCP 服务器。我们将使用 Telegram 插件,Discord 与 iMessage 插件的工作方式相同。您给机器人发私信,插件把消息转发到会话里,Claude 在本地文件上工作。回合结束时,回复会通过机器人发回。
Claude 只会在回合结束时给您发消息。中途没有流式输出,也没有主机上 Claude 正在做什么的实时预览。Claude 在回合内运行了什么,就会直接运行。您会在摘要到达时才知道发生了什么。这就是为什么在渠道上权限模式比在终端里更重要。
在 default 或 acceptEdits 模式下,渠道可以把权限提示转发到手机。您从 Telegram 回复 yes 或 no。少量提示还好,但真正的构建-测试-调试会话会发出几十个提示,一个个点确认很快就令人厌烦。
另一端更糟。 --dangerously-skip-permissions 虽然移除了提示,但通过渠道时,您失去了终端里对工具调用的实时视图。不会有任何提示告诉您某条高风险命令刚刚运行过。在终端里,bypass 至少还能让您看着流式输出并按 Esc。通过 Telegram,您发出提示,只能在回合末尾才知道发生了什么。
自动模式位于两者之间。没有提示垃圾刷屏。分类器会自行拦截明显危险的动作。回合末的消息提供了可复核的运行记录。对于远程工作而言,这是可行的权衡。
演示项目
我做了一个小演示,叫做 libcache。它是一个 Python CLI,从 OpenLibrary API 获取图书元数据,并把响应缓存在 ~/.cache/libcache/ 下。
技术栈故意保持“无聊”:用 uv 管理依赖,typer 搭 CLI,httpx 发 HTTP 请求,pytest 跑测试。
关于 libcache 有三点很关键。
-
它是多文件项目,在
default模式下从零搭建会叠出十几个权限提示。 -
它有 HTTP 边界,能让分类器进行真实判断。
-
它运行足够快,整个脚手架能在一个 Telegram 回合内完成。
配置自动模式与 Telegram 渠道
顺序有三:主机保持唤醒、插件配对成功、自动模式已激活。三者任何一项失败,其余都会失效。
准备主机
Claude Code 是本地进程。机器睡眠时,进程停止接收事件。Telegram 插件将没有投递目标。只有当会话开启时,事件才会抵达。
在 macOS 上,打开一个单独的终端运行:
caffeinate -d
参数 -d 会阻止显示器睡眠。Linux 主机可改为屏蔽睡眠目标:
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
可通过 unmask 还原。
若要跑一个下午以上,把会话放到 tmux 里。它能让您的 Shell 在窗口关闭或 SSH 断开时保持存活。新建会话:
tmux new -s claude
在其中启动 Claude,按 Ctrl+B 然后 D 脱离,稍后再附着:
tmux attach -t claude
在启动前还有一件事。Claude 可能会从 Telegram 触发任何 CLI 工具,这些工具必须已在主机完成认证。从手机上无法进行交互式登录或认证。检查我们今天会用到的 GitHub CLI gh:
gh auth status
如果尚未认证,运行 gh auth login 完成浏览器流程。其他希望让 Claude 访问的 CLI(aws、gcloud、docker、包管理仓库)也照此准备。
安装并配置 Telegram 插件
如果尚未安装 Bun,请先安装。macOS 或 Linux 上:
curl -fsSL https://bun.sh/install | bash
Windows 上:
powershell -c "irm bun.sh/install.ps1 | iex"
确认安装:
bun --version
然后创建 Telegram 机器人。
在 Telegram 打开 BotFather,发送 /newbot,选择显示名,并选择以 bot 结尾的用户名(例如 libcache_dev_bot)。复制 BotFather 返回的令牌。

回到 Claude Code 会话,安装插件:
/plugin install telegram@claude-plugins-official
如果 Claude Code 提示商店中没有它,请先手动添加再重试:
/plugin marketplace add anthropics/claude-plugins-official
安装完成后,重载插件以显示 Telegram 工具:
/reload-plugins
用从 BotFather 获取的令牌配置机器人:
/telegram:configure <your_bot_token_here>
该令牌会写入 ~/.claude/channels/telegram/.env。

执行 /telegram:configure 后,彻底退出 Claude Code(按 Ctrl+D 或输入 /exit),然后重新启动。 /reload-plugins 在首次私信时不一定能可靠显示配对码。
重启会话,在 Telegram 打开机器人并发送 /start。机器人会回复一个 6 位字符的配对码。

回到 Claude Code,用该代码完成配对:
/telegram:access pair <code>
配对是双向的。必须双方同意,会话才会接收消息。

最后一步。将机器人锁定为仅您账号可用:
/telegram:access policy allowlist
不在允许列表中的任何人向机器人发私信都会被默默丢弃,不会发放配对码。

以自动模式和渠道启动
在项目目录中,用两个标志启动 Claude:
claude --channels plugin:telegram@claude-plugins-official --permission-mode auto
已有会话可在中途切换至自动模式:反复按 Shift+Tab,直到状态栏显示 auto。若要让自动模式成为每次启动的默认值,把以下内容加入 ~/.claude/settings.json:
{ "permissions": { "defaultMode": "auto" } }
有一条约束:Claude Code 会忽略项目级或本地设置文件中的 defaultMode: "auto"。自动模式的配置必须放在用户级的 ~/.claude/settings.json 中。自 v2.1.207 起新增的 autoMode 规则同样遵循此规定。

进入自动模式后,Claude Code 会暂时移除 settings.json 中的宽泛允许规则。诸如 Bash(*) 这类通配的解释器(如 Bash(python*))及对 Agent 的一揽子允许,会在进入时被移除、退出时还原。像 Bash(pytest) 这类窄化规则会保持不变。
验证一下配置。随便给机器人发条消息,看看是否有回复。然后让 Claude 在项目里写个小文件,确认能不经提示就落盘。如果两者都正常,配置就完成了。
Claude Code 自动模式与渠道实战
让我们看看如何在实际中通过 Telegram 开局。
一条提示,多个工具调用,零审批
从 Telegram 发送一个开场提示。关键是任务类型:在 default 模式下会叠出十多个审批提示的任务。以 libcache 为例,提示大致是:
Create a Python CLI that fetches book metadata from OpenLibrary and caches it to disk, use uv for deps, typer for the CLI, httpx for requests, pytest for tests, scaffold the directory and add a README, and when you're done, summarize what you built in under 80 words.
“用不超过 80 个词进行总结”这种收尾,是我在渠道上的小习惯。回合末的回复会发到手机,而手机并不适合阅读长篇输出。
插件把手机消息送入主机上的运行会话。它会以 ← telegram · <sender>: ... 的横幅显示在终端。

项目内的文件写入会走快速路径,完全跳过分类器。依赖安装、初次 pytest 运行,以及最后的 git init 会通过分类器,默认允许。没有任何暂停,这一回合从头到尾一口气跑完。

在手机上,摘要是回合内唯一的反馈信号。

在手机上输入长提示很痛苦。语音转文字能应付大部分,而简洁的陈述式提示也足够好用。“搭脚手架 libcache,OpenLibrary + 磁盘缓存,80 词以内总结”就够了。
迭代循环:提问、工作、回复、再来
每次跟进都按同样循环来。一条 Telegram 消息,一回合工作,一条摘要返回。摘要是 Claude 的叙述,而非真实状态。让 Claude 跑测试并粘贴原样输出:
uv run pytest -v
让它对某个特定文件执行 cat。要文件大小或行数,或近期提交历史:
git log --oneline
自动模式会像其他操作一样,用快速路径运行验证调用。提问的成本很低。结果是一条您能在锁屏上查看的可核对声明,无需走到电脑前。

再来一回合,证明这个循环能触达真实的外部系统。用手机发送:
push libcache to a new public GitHub repo called libcache, clean commit, decent message, send me the URL when it's up.
Claude 使用先前已认证的 gh CLI,并回复仓库 URL。

当自动模式顺利工作时,这个循环会显得很安静。下一节将介绍它不顺时会发生什么。
当自动模式开始“顶撞”
自动模式会用两种方式打断您。
分类器会对一小部分模式进行硬拦截:
-
curl | bash管道 -
对
main的强制推送 -
云存储中的大规模删除。
更温和也更常见的是,Claude 自身会在识别为不可逆的操作上暂停。两者在手机上的呈现方式相同:没有红色横幅、没有模态窗,只有普通文本。Claude 会点名该动作、列出命令,并要求您给出一个特定确认短语才会继续。
像“删除该项目,同时删除 GitHub 仓库”这类破坏性请求,会触发不可逆性暂停。回复会明确列出命令,并给出更安全的替代方案:归档、仅本地、或仅远端。它会等待 Claude 指定的短语,而不是 yes/no。

同一截图也显示了二阶行为:在删除过程中,Claude 遇到了 gh CLI 的权限范围缺失(令牌没有 delete_repo)。Claude 并未半途而废,而是暂停并让我在终端运行一个交互式命令:
gh auth refresh -h github.com -s delete_repo
自动模式无法驱动基于浏览器的认证流程,Claude 也不会试图绕过缺失的权限范围。
会话历史不等于默示同意。即使是 Claude 在同一会话中 15 分钟前刚创建的仓库,删除时依然会触发暂停。同样适用“三次连续 / 累计二十次”的上限。叠加的打断最终会把控制权交还给人。
请注意两个已知缺陷。Claude Code 在 REPL 提示符空闲时发送的消息会被直接丢弃,不会排队(issue #44380)。插件有时在回复一次后会停止转发新消息,直到被“轻推”一下(issue #36477)。前者的规避是保持回合在运行中,或设置基于 cron 的保活;后者则重启会话。目前二者都尚无修复。
调优自动模式的安全规则
对于您自己的代码库,多数情况下自动模式的默认设置已足够。当您想对具体路径加强或放宽时,先看看 Anthropic 为您预设了什么:
claude auto-mode defaults
该命令会以 JSON 打印内置的阻止与允许规则。这个结构是为扩展而设计的,而非替换:在基线之上编辑,不要从零开始。每删掉一条规则,都会迫使分类器做一次决策,而每次决策都存在漏报的可能。

在 项目的 settings.json 的 permissions 键下添加特定规则。窄化允许会原样应用到自动模式。宽泛规则会在进入时被去除。像 Bash(pytest) 或 Bash(gh pr create *) 这类足够具体的规则,会让分类器信任您的判断。实践上,每个项目实际会用到的工具写一条窄化允许,不用通配符。
如果您的工作流曾把权限提示当作流水线阶段之间的审查闸点,请把这些检查点显式加回来。为希望 Claude 暂停的工具模式或路径添加 ask 规则。或者把该工作流放到 acceptEdits 而非 auto,以在项目内文件编辑之外的所有操作上保留提示检查点。
一个常被低估的功能:分类器会把对话中明确声明的边界视为阻断信号。告诉 Claude “在我审查前不要推送”,它就会拦下匹配的动作,即便默认规则会允许。这是对单次会话而言比写正式规则更简单的替代方案。
对于持久化自动化,Claude Code Hooks 允许您在特定工具调用前后触发自定义脚本,给您带来无需人工提示的程序化检查点。
查看您的 settings.json 与默认规则合并后的有效配置:
claude auto-mode config
两个较新的命令补齐了 CLI 能力。claude auto-mode reset(v2.1.212+)可一键恢复默认的自动模式配置,适合在试验后清理残留覆盖项。而 autoMode.classifyAllShell 设置会把每条 Shell 命令都送去分类器,而不仅是那些匹配“任意代码执行”模式的子集。若要收紧到最严,可将其加入 ~/.claude/settings.json:
{ "autoMode": { "classifyAllShell": true } }
企业管理员可以通过托管配置中的 permissions.disableAutoMode: 'disable' 在组织范围内关闭此功能。
结语
自动模式配合渠道,把 Claude Code 从一款“桌面工具”变成了您可以随时随地驱动的异步伙伴。分类器决定哪些工具调用可通过。Claude 决定何时为足够严肃的动作而暂停。您来决定提示、范围与规则。终端只是您能工作的一个地方,而不再是唯一的地方。
想要深入阅读,推荐我们的指南:Claude Code Remote Control、Claude Code Plugins、Claude Code Best Practices、Claude Code Routines,以及 Claude Code Security。
Claude Code 自动模式与渠道常见问答
什么是 Claude Code 自动模式?
自动模式是 Claude Code(v2.1.83+)中的一种权限模式,使用一个独立的分类器模型(Sonnet 4.6)审核每次工具调用并决定放行或拦截,从而避免长时间的无人值守会话因审批提示而停滞。
自动模式与 --dangerously-skip-permissions 有何不同?
Bypass 模式移除了所有检查,因而对读取 .env 文件、修改配置和破坏性命令也会放行。自动模式则在每个关键调用前保留分类器,默认拒绝对敏感文件的操作,并在连续拦截过多时把控制权交还给您。
什么是 Claude Code 渠道?
渠道(Channels)是基于 MCP 的插件,会把来自 Telegram、Discord 或 iMessage 的消息转发到您运行中的 Claude Code 会话。您给机器人发私信,插件把消息传到主机,回合结束时 Claude 会通过同一聊天回复。
哪些 claude.ai 计划层级支持自动模式?
自动模式可在 claude.ai 的 Max、Team 和 Enterprise 层级或通过 API 使用。不在 Pro 计划中提供,也没有附加包或额外用量可解锁。
自动模式是否适用于任何项目?
对您的自有项目来说,它足够安全,但不能替代人工审核。Anthropic 报告显示,误报率 0.4%、对过度积极动作的漏报率 17%,也就是说每六次风险动作可能有一次漏网。对于敏感仓库,请坚持使用 default 模式。
我是一名数据科学内容创作者,拥有超过 2 年的经验,并在 Medium 上拥有较大的读者群。我喜欢用略带讽刺的笔调撰写有关 AI 和机器学习的深度文章——毕竟总得想点办法让这些内容不那么枯燥。我已发表 130 多篇文章,并制作了一门 DataCamp 课程,另有一门正在筹备中。我的内容已被超过 500 万人次阅读,其中有 2 万人在 Medium 和 LinkedIn 上成为关注者。
