Claude Code 的工具与权限:怎么在放手和失控之间画线(中)
上篇把主循环讲完了。循环本身很简单模型产出工具调用SDK 执行结果回灌。真正决定一个 agent 是「好用」还是「危险」的是循环两侧的两样东西——工具给了它什么手权限给它套了什么缰绳。中篇就拆这两样。工具池最多 54 个怎么拼出来的所有内置工具不是一次性全塞给模型的而是由tools.ts里的assembleToolPool()动态拼装。设计空间论文给了一个具体数字最多 54 个内置工具其中 19 个无条件开放35 个受功能开关和用户类型控制。拼好之后再和 MCP 提供的工具合并。为什么要这样分批因为工具的「可见成本」不低每个工具定义都要占上下文每个工具都是模型可能走的一条岔路。把不常用、或当前用户用不上的工具折叠起来既省 token也减少模型「挑花眼」的概率——这跟我们之前聊过的「工具给到六十个它开始挑花眼」是同一个机理只不过 Claude Code 是在 harness 层用功能开关主动控量。官方把内置工具归成五类每一类代表一种「能动性」文件操作读文件、改代码、建新文件、重命名和重组。搜索按模式找文件、用正则搜内容、探索代码库。执行跑 shell 命令、起服务、跑测试、用 git。网页搜网页、抓文档、查报错。代码智能编辑后看类型错误和警告、跳定义、找引用需代码智能插件。此外还有一类「编排工具」派生子代理、向你提问等等。几个关键工具值得单独看Read默认一次读约 2000 行超了要分页。这是刻意的设计——防止一次把整个大文件灌进上下文把窗口吃爆。Grep / GlobGrep 是完整正则对标 ripgrep 的能力。有意思的是官方明确选了正则而不是向量库或 embedding——模型本来就懂代码结构能自己写出精准正则省掉维护索引的复杂度。这也呼应了上篇说的「先做最简单的事」。Edit做的是外科手术式的 diff只改目标片段Write / Replace 负责整文件或新建。终端只显示最小 diff但每次改动都可追溯。Bash维护持久 shell 会话环境变量、工作目录跨调用保留并对命令做风险分级和确认。它还会主动过滤注入尝试比如拦反引号和$()结构在灵活和安全之间取平衡。Task / Agent派生子代理——这块下篇会展开它是把噪音挡在主会话之外的关键手段。权限系统为什么是 deny-first工具越多越需要一道闸门。Claude Code 的权限系统核心是permissions.ts里的deny-first先拒后放求值。规则分三档allow直接放行不弹窗。ask弹窗让你确认。deny直接阻断。求值顺序是先查 deny再查 allow都不命中就落到 ask。这个顺序很重要——deny 优先于 allow意味着你可以先写一条严防死守的 deny比如Bash(rm -rf *)再在上面开若干安全的 allow比如Bash(npm test:)既不会漏掉危险操作也不用每次都点确认。settings.json里就是这么配的{ permissions: { allow: [Bash(npm test:), Read(**)], ask: [Bash(git push:)], deny: [Bash(rm -rf /), Read(.env)] } }除了手写规则Claude Code 还有一个auto-mode 机器学习分类器对模糊操作它自动判断该放行还是拦截减少「审批疲劳」。生产里常见的一个反模式是让 Claude 一天问你四十次npm test要不要跑问到最后你闭眼全点 yes——那一刻整套安全模型就成了摆设。把高频安全命令写进 allow本质上是在保住安全模型的严肃性。Hook比 CLAUDE.md 狠得多的那层理解 Claude Code 的人和不理解的人分水岭往往就在一句话CLAUDE.md 是建议Hook 是强制。CLAUDE.md 的内容是作为上下文喂给模型的模型「尽量照做」但文档自己也说不保证严格服从。如果某件事必须每次都发生、零例外别写进 CLAUDE.md写个 hook——一个在生命周期事件上确定性执行的 shell 命令。Hook 挂在哪些事件上PreToolUse工具执行前、PostToolUse执行后、UserPromptSubmit你提交消息时、SessionStart、Stop、PreCompact等。PreToolUse有个关键机制退出码 2 直接阻断该工具调用并把 stderr 回灌给 Claude 当错误信息。比如下面这段拦危险 Bash 的逻辑COMMAND$(jq -r .tool_input.command $CLAUDE_TOOL_INPUT) if echo $COMMAND | grep -q rm -rf; then echo rm -rf blocked 2 exit 2 # ← 阻断 fi exit 0 # 放行退出 0 放行退出 2 阻断其它退出码是非阻断的警告。这才是真正的护栏拦写受保护目录、在内容推进前先打分——这类事写在 Markdown 里的建议永远保证不了。沙箱执行环境的最后一道墙权限管的是「该不该做」沙箱管的是「做了会不会炸到宿主」。执行环境由shouldUseSandbox.ts决定是否走可选沙箱隔离——把 shell 执行、文件系统操作关进隔离边界里危险命令即使被放行影响也被框住。把这几层连起来看模型想调工具 → 权限系统先判 deny/allow/ask → 若放行PreToolUse hook 还能最后拦截或修改 → 真正执行时沙箱决定隔离边界。这是一条层层递减的防线不是一道开关。一句话带走中篇工具决定了 agent 能碰什么权限决定了它敢碰什么。deny-first 保证危险操作优先被挡hook 保证关键流程零例外执行沙箱保证即便漏了也不炸宿主。这三层加起来才是「放手让 agent 干活」却不会「失控」的真正原因。下篇讲上下文工程200K 窗口怎么被一点点吃掉、接近上限时五段压缩管线怎么触发、子代理怎么把大文件读取的噪音挡在主会话之外、Skills 和 MCP 怎么在不动主循环的前提下给 agent 续能力。参考资料Anthropic.How Claude Code works. https://docs.anthropic.com/en/docs/claude-code/how-claude-code-worksAnthropic.Sub-agents. https://code.claude.com/docs/en/sub-agentsAnonymous.Dive into Claude Code: The Design Space of Today’s and Future AI Agent Systems. arXiv:2604.14228Community.Claude Code: Behind-the-scenes of the master agent loop. https://blog.promptlayer.com/claude-code-behind-the-scenes-of-the-master-agent-loop/作者唐悦玮 | 从后端出发用 AI 拓展到全栈的工程师。

相关新闻

喜报!SGS通标青岛公司现代轻工质量标准实验室入选筑基试点

喜报!SGS通标青岛公司现代轻工质量标准实验室入选筑基试点

近日,青岛市质量标准实验室筑基试点名单(第一批)正式公布,通标标准技术服务(青岛)有限公司(以下简称 “SGS通标青岛公司”)申报的青岛市现代轻工质量标准实验室成功入选。本次试点遴…

2026/10/13 3:17:47 阅读更多 →
项目记录|军用望远镜里做绝对方位:钢壳电池和铁螺丝怎么不把磁力计搞砸

项目记录|军用望远镜里做绝对方位:钢壳电池和铁螺丝怎么不把磁力计搞砸

项目记录|小型光学设备绝对方位测量:铁磁结构环境下磁力计的干扰抑制与工程踩坑修改要点说明(解决 CSDN 判定营销下架问题) 删除全部外站链接、产品官网引用标记,去掉厂商推广话术;弱化商业项目、产品推销感…

2026/10/13 3:16:47 阅读更多 →
推荐算法与 AI 结合:从猜你喜欢到生成式推荐的工业实践

推荐算法与 AI 结合:从猜你喜欢到生成式推荐的工业实践

引言推荐系统与人工智能其实是一起长大的:从上世纪 90 年代的协同过滤,到深度学习时代的 Wide&Deep、双塔、DIN,每一次模型能力的跃升,都会在推荐效果上留下印记。但 2024 年之后发生的变化与此前不同——不再是"换一个更…

2026/10/13 3:16:47 阅读更多 →

最新新闻

darknet运行报错libopencv_highgui.so.3.2缺失?动态库排查与解决全攻略

darknet运行报错libopencv_highgui.so.3.2缺失?动态库排查与解决全攻略

直接跑./darknet就报错error while loading shared libraries: libopencv_highgui.so.3.2,这种动态库缺失的问题,估计每个搞深度学习目标检测的人都被它堵过一阵子。明明编译都过了,运行却翻车,查了半天也不知道到底哪里没对上。如…

2026/10/13 4:02:58 阅读更多 →
AnyPS5:面向PS5主机的本地化系统工具链设计与实现

AnyPS5:面向PS5主机的本地化系统工具链设计与实现

项目标题本身“AnyPS5”未提供足够上下文,但结合命名惯例、技术社区常见实践及合规安全边界,可明确判断:这是一个面向 PlayStation 5 主机的本地化工具类项目代号,聚焦于主机端系统级功能增强、本地环境适配或用户侧体验优化&…

2026/10/13 4:02:58 阅读更多 →
并查集动态维护连通块大小:‘星球联盟‘题解与易错点

并查集动态维护连通块大小:‘星球联盟‘题解与易错点

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 4:02:58 阅读更多 →
AI原生IDE与插件深度对比:Cursor、Trae、通义灵码能力边界与选型指南

AI原生IDE与插件深度对比:Cursor、Trae、通义灵码能力边界与选型指南

这两年AI编程工具的变化速度,快得有点不讲道理。我回想最早用插件式AI补全的时候,代码行预测已经够惊艳了;但现在的AI原生IDE和新一代编程插件,已经把范围从“猜你下一个单词”扩展到了“替你改文件、跑命令、做收尾”。Cursor、T…

2026/10/13 4:02:58 阅读更多 →
GEO优化实战:让DeepSeek、Qwen、豆包、Kimi主动引用你的内容

GEO优化实战:让DeepSeek、Qwen、豆包、Kimi主动引用你的内容

上周我把同一个问题同时丢给 DeepSeek、Qwen、豆包、Kimi,问的是某工业软件厂商的产品优势。四个助手给出的答案里,只有两个提到了这个品牌,引用来源几乎没有交集;其中一个完整转述了官网页面上的一句话,另一个却把品牌…

2026/10/13 4:02:58 阅读更多 →
基于三菱PLC的自动配料控制系统设计:双速给料与落差补偿实战

基于三菱PLC的自动配料控制系统设计:双速给料与落差补偿实战

做自动配料控制系统,绕不开两件事:PLC的选型,和配料流程里那些让人头疼的细节——飞料、秤漂、配方切换、粘度变化导致的给料差异。这个“基于三菱PLC的自动配料控制系统的设计”项目,从需求拆解、硬件选型、控制逻辑到现场调试完…

2026/10/13 4:01:58 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →