avatar
文章
491
标签
109
分类
29
首页
归档
分类
标签
关于
xhj的博客
首页
归档
分类
标签
关于

xhj的博客

18-Hooks系统
发表于2026-05-18|Claude Code
第 18 篇:Hooks 系统 — 用 Shell 命令扩展 AI 行为 本篇是《深入 Claude Code 源码》系列第 18 篇。我们将深入 Hooks 系统的完整实现,揭示 Claude Code 如何让用户在 AI 生命周期的关键节点注入自定义逻辑,以及这套系统在安全性、可扩展性和性能上的精巧设计。 为什么需要 Hooks?想象一个场景:你希望 Claude Code 在每次执行 Write 工具后自动运行 prettier 格式化代码,或者在 Session 启动时自动加载项目特定的环境变量,又或者在模型即将结束回答时用一个验证脚本检查代码质量。 这些需求有一个共同特征:它们不是 AI 本身的能力,而是用户希望在 AI 工作流的特定节点注入的自定义行为。 Hooks 系统正是为此而生。它是 Claude Code 的”生命周期钩子”框架 —— 类似于 Git Hooks、Webpack Plugins 或 React 的 useEffect,但面向的是 AI Agent 的执行周期。用户通过 settings.json 声明:在哪个事件(event)、匹配什么条件(...
17-Settings-系统
发表于2026-05-17|Claude Code
第 17 篇:Settings 系统 — 多层配置的合并之道 本篇是《深入 Claude Code 源码》系列第 17 篇。我们将剖析 Settings 系统如何从 5 个正式配置源(加 1 个 Plugin 基底层)中读取、验证、合并配置,以及如何在运行时监听变更并热更新 —— 一个面向企业级部署的多层配置合并架构。 为什么需要多层配置?一个 CLI 工具的配置需求看似简单 —— 用户写一个 JSON 文件就行了。但 Claude Code 面对的现实远比这复杂: 个人偏好 —— 用户想全局设置自己偏好的模型、权限规则 团队共享 —— 项目组要把 MCP 服务器、Hook 脚本提交到 Git 仓库共享 本地覆盖 —— 个人本地调试需要覆盖项目设置,但不能提交到 Git 企业管控 —— 安全团队需要强制启用沙箱、禁用危险权限,且用户不能覆盖 远程策略 —— 企业管理员通过 API 远程下发配置,无需触碰每台机器 平台差异 —— macOS 用 plist + MDM、Windows 用注册表、Linux 用文件 这些需求层层叠加,任何单一配置文件都无法满足。Claude C...
16-权限系统
发表于2026-05-16|Claude Code
第 16 篇:权限系统 — AI 安全的最后一道防线 本篇是《深入 Claude Code 源码》系列第 16 篇。我们将深入权限系统的完整架构:从权限模式、规则体系、决策管线到 AI Classifier 辅助判断,揭示一个生产级 AI Agent 如何在”自动化”与”安全”之间找到平衡。 为什么权限系统是 AI 产品中最关键的模块?传统 CLI 工具的权限模型很简单——用户敲什么命令就执行什么命令,责任完全在用户。但 AI Agent 改变了这个范式:模型自主决定执行什么操作。用户说”帮我重构这个项目”,模型可能决定删除文件、执行 shell 命令、修改配置——这些操作的风险程度天差地别。 这意味着,AI 产品的权限系统面临独特的挑战: 操作不可预测:用户无法提前知道模型会调用哪些工具、传入什么参数 风险谱系宽广:从读取文件(无害)到 rm -rf /(灾难性),所有操作都通过同一个工具接口 效率与安全的矛盾:每次都弹确认对话框会让用户抓狂,但完全自动化又有安全风险 Claude Code 的权限系统用 多层防线 + 渐进式信任 的方式解决了这个矛盾。本篇将从三个层面解...
15-MCP-协议实现
发表于2026-05-15|Claude Code
第 15 篇:MCP 协议实现 — 连接外部工具的标准化桥梁 本篇是《深入 Claude Code 源码》系列的第 15 篇。我们将剖析 Claude Code 如何实现 Model Context Protocol(MCP),包括类型系统设计、多层配置合并、传输层适配、连接生命周期管理、Tool 发现与代理,以及认证体系。 为什么需要 MCP?Claude Code 内置了 40+ 个工具(BashTool、FileEditTool、GlobTool 等),足以覆盖大部分编程场景。但真实世界的开发远不止于此——你可能需要查询 Jira 看板、操作 Slack 消息、调用公司内部的 API 网关、访问 GitHub Issues……这些能力不可能全部内置,也不应该内置。 Model Context Protocol(MCP) 就是这个问题的答案。它是 Anthropic 提出的一个开放标准,定义了 AI 应用(Client)与外部工具/数据服务(Server)之间的通信协议。可以把 MCP 理解为 AI 世界的 “USB 接口”——只要服务实现了 MCP 协议,Cla...
14-任务系统
发表于2026-05-14|Claude Code
第 14 篇:任务系统 — Agent 的并发执行引擎 本篇是《深入 Claude Code 源码》系列的第 14 篇。我们将深入分析 Claude Code 如何通过一套统一的任务系统,管理从后台 Shell 命令到多 Agent 并行协作的所有异步工作。 为什么需要任务系统?在前几篇中,我们已经见过了 Agent 系统(第 12 篇)和内置 Agent 设计模式(第 13 篇)。但有一个关键问题尚未解决:当模型同时发起多个 Agent、多个后台 Shell 命令、甚至一个”做梦”式的记忆整理任务时,这些并发工作如何被统一管理? 想象一个真实场景:Coordinator 模式下,主 Agent 同时派出 3 个 Worker 去研究代码库的不同部分,每个 Worker 又可能启动自己的后台 Shell 命令。此时系统需要: 追踪所有任务的生命周期(pending → running → completed/failed/killed) 安全地终止任务(包括清理子进程、释放文件句柄) 收集并转发任务输出(任务完成时通知主 Agent) 隔离任务状态(一个任...
13-内置Agent设计模式
发表于2026-05-13|Claude Code
第 13 篇:内置 Agent 设计模式 — Explore、Plan、Verification 的 Prompt 设计 本篇是《深入 Claude Code 源码》系列第 13 篇。我们将深入 6 个内置 Agent 的 System Prompt 设计,揭示如何通过 prompt 工程将同一套工具系统塑造出截然不同的 Agent 人格与行为模式,并解析自定义 Agent 的 markdown frontmatter 配置全貌。 为什么需要内置 Agent?在第 12 篇中,我们了解了 Agent 系统的整体架构 —— AgentDefinition 数据结构、runAgent() 生命周期、createSubagentContext() 的隔离机制。但架构只是骨架,真正赋予 Agent “灵魂”的是它们的 System Prompt 设计。 一个核心问题:Claude Code 拥有 40+ 个工具,为什么不让一个通用 Agent 做所有事?答案藏在工程实践中: 成本控制 —— Explore Agent 用 Haiku 模型就够了,不需要用 Opus 来做文件搜索 安全...
12-Agent-系统
发表于2026-05-12|Claude Code
第 12 篇:Agent 系统 — 从单体到多智能体协作 本篇是《深入 Claude Code 源码》系列的第 12 篇。我们将深入剖析 Agent 子系统的完整架构:从 Agent 定义的数据结构与加载机制,到 runAgent() 的完整生命周期,再到 createSubagentContext() 如何实现 context 隔离与选择性共享。 为什么需要多 Agent?当你让 Claude Code 帮你”重构整个模块的测试”时,一个单体 Agent 会怎么做?它会搜索文件、阅读代码、编写测试、运行验证——所有步骤串行执行,上下文窗口迅速膨胀。更糟糕的是,搜索过程中产生的大量中间输出(grep 结果、文件内容)会永久占据上下文,挤压真正有价值的信息空间。 Claude Code 的解决方案是多 Agent 协作:主 Agent 可以按需生成子 Agent,每个子 Agent 拥有独立的上下文窗口和对话循环,完成任务后只返回精炼的结果。这就像一个团队 lead 把任务分派给专人,每个人独立工作后汇报结论。 这个设计解决了三个核心问题: 上下文污染:搜索类任务的海量中间输出...
11-命令系统
发表于2026-05-11|Claude Code
第 11 篇:命令系统 — 斜杠命令的聚合与扩展架构 本篇是《深入 Claude Code 源码》系列第 11 篇。我们将深入 commands.ts 及其周边模块,揭示 Claude Code 如何将内建命令、用户自定义 Skill、Plugin 命令、Bundled Skill、MCP Skill 和 Workflow 命令统一到一套类型体系中,并实现懒加载、条件注册和动态发现。 为什么需要一个命令系统?当你在 Claude Code REPL 里输入 /commit、/compact、/review 时,你用的是斜杠命令(Slash Command)。这些命令看起来只是快捷操作,但在 Claude Code 中,它们承载着远比表面复杂的职责: 有的命令本地执行(如 /clear 清空对话历史) 有的命令生成 Prompt 发给模型(如 /commit 生成代码审查提示词) 有的命令需要渲染交互式 UI(如 /config 弹出配置面板) 有的命令来自用户自定义 Skill(.claude/skills/ 目录下的 Markdown 文件) 有的命令来自第三方 Plugi...
10-BashTool-深度剖析
发表于2026-05-10|Claude Code
第 10 篇:BashTool 深度剖析 — 最复杂的单个工具 本篇是《深入 Claude Code 源码》系列第 10 篇。BashTool 是 Claude Code 中代码量最大、安全逻辑最复杂的单个工具,总计约 12,400 行代码。我们将从命令语义分析、多层安全防线、沙箱执行、输出处理、权限匹配五个维度,完整剖析它如何让 AI 安全地执行 Shell 命令。 为什么 BashTool 是最复杂的工具?在第 9 篇中我们了解了 buildTool() 的抽象体系和 Tool 接口的设计。所有工具都遵循相同的 name / inputSchema / call() / checkPermissions() 协议。但 BashTool 的特殊之处在于:它是唯一一个允许 AI 在用户机器上执行任意代码的工具。 这意味着它必须同时解决两个相互矛盾的需求: 足够强大 — AI 需要通过 Shell 命令完成 git 操作、运行测试、安装依赖、查看日志等几乎一切任务 足够安全 — 绝不能让 AI(或通过 prompt injection 操控 AI 的攻击者)执行破坏性操作 这...
09-工具系统设计
发表于2026-05-09|Claude Code
第 9 篇:工具系统设计 — buildTool() 的抽象之美 本篇是《深入 Claude Code 源码》系列的第 9 篇。我们将深入工具系统的核心设计:从 Tool 接口的核心方法,到 buildTool() 的 builder 模式,到 tools.ts 的注册表架构,再到 ToolSearch 的延迟加载机制,揭示一个生产级 AI Agent 如何管理 40+ 个内置工具和无限数量的 MCP 工具。 为什么工具系统是 Agent 的灵魂?一个 AI Agent 与普通 chatbot 的本质区别在于:Agent 能执行动作。当模型决定读取一个文件、运行一条 Shell 命令、或搜索代码时,它依赖的就是工具系统。 Claude Code 拥有 40+ 个内置工具(BashTool、FileReadTool、GlobTool……)和通过 MCP 协议接入的无限数量外部工具。管理这样规模的工具集面临几个核心挑战: 接口一致性:每个工具需要统一的调用、验证、权限检查、UI 渲染协议 安全默认:工具涉及文件系统和 Shell 操作,默认行为必须 fail-closed 条件注...
123…50
avatar
xhj
相关学习笔记
文章
491
标签
109
分类
29
Follow Me
公告
欢迎来到我的博客
最新文章
Multi-Agent2026-06-03
Multi-Agent vs Single-Agent2026-06-02
Harness Engineering2026-06-01
25-架构模式总结2026-05-25
24-Skill-Plugin开发实战2026-05-24
分类
  • AI Agent40
  • Algorithm20
  • Backend Dev74
  • Big Data2
  • C/C++2
  • Claude Code71
  • Computer Basics18
  • Computer Network2
标签
Netty PyG Stacking Pandas Neural Networks PCA Maven Tornado PCV RabbitMQ Claude Code Heap Memory Tree dijkstra Redis GAT MySQL Computer Basics JVM Architecture Linear Regression List Kruskal Algorithm Object Identification Message Queue Gradient descent HBOS LOF Grid search OSI Embedding OLSE Prim NMF DataFrame AI Agent Kafka GNN Thread Compilation
归档
  • 六月 2026 3
  • 五月 2026 25
  • 四月 2026 16
  • 三月 2026 20
  • 二月 2026 10
  • 一月 2026 22
  • 十二月 2025 15
  • 十一月 2025 19
网站信息
文章数目 :
491
本站访客数 :
本站总浏览量 :
最后更新时间 :
© 2025 - 2026 By xhj框架 Hexo 8.1.2|主题 Butterfly 5.5.4