AI 编程 – 青瓜传媒 //m.clubpenjuin.com 全球数字营销运营推广学习平台! Thu, 09 Apr 2026 06:31:31 +0000 zh-CN hourly 1 https://wordpress.org/?v=5.2.21 https://static.opp2.com/wp-content/uploads/2021/04/favicon-1.ico AI 编程 – 青瓜传媒 //m.clubpenjuin.com 32 32 AI 编程从原型到上线的完整流程 //m.clubpenjuin.com/380584.html Thu, 09 Apr 2026 06:31:31 +0000 //m.clubpenjuin.com/?p=380584

 

我从2025年开始接触vibe coding,有成功也有失败。第一次搭建出属于自己的页面时很震撼,但永远陷在某个bug里解决不了的挫败感也很强。

所以总结复盘了这些使用经验,希望能给你带来一些帮助。

01 工具的对比与选择

工具大致分为两类:

  1. 全包式应用:帮你搞定一切(托管、数据库、部署)
  2. AI 助手:给你更多控制权,但需要你自己管理基础设施

如果你刚入门,从全包式应用开始。当你需要更多控制权,或碰到工具上限时,再转向 AI 助手。

我尝试过 Replit、Lovable、Codex 和 Claude Code。Claude Code 是我目前的首选。

但小项目我更喜欢Lovable(比如宠物的健康追踪管理),不用操心 UX,界面又好看。

Vibe Coding工具

AI 编程智能体

VS Code、Windsurf、Cursor 这类集成开发环境(IDE)我没有列入清单,不过它们很多都内置了自己的编码助手。Cognition 也做了编码助手 Devin,但感觉也不太适合放在这里对比。

也没有包含只做设计原型的工具,因为今天我们的重点是搭建应用。

02 会在哪里出问题

选好工具之后,就可以开始干活了。

然而大多数项目就是从这里开始跑偏的。如果不清楚自己想要什么,或者频繁改主意,最后就会得到一堆混乱的代码。

Vibe Coding的恶性循环是:总在修复同一个bug

我们在过程中经常会发现,你报了bug,AI说修好了,但其实没有。

无论怎么说、怎么做,都很难真正修复。让人非常崩溃。

这类问题通常源于几个原因:

  • 你对想要的东西描述不够清晰
  • 频繁改主意,代码里全是这些反复横跳的痕迹
  • 中途切换了技术栈,代码不同部分用了不同技术(通常也是需求频繁变更导致的)

要避免这种情况,你需要稍微理解软件是如何运作的。软件有三层:

  1. 数据层:数据存储的地方
  2. 控制层:软件运行的逻辑
  3. 视图层:你在界面上看到的内容

大部分问题,都出在这三层不同步。

当你最开始描述需求时,它会对需要存什么数据、逻辑如何运行、界面显示什么做出假设。

改主意时,AI必须记得同时更新这三层。

如果只做简单的界面修改,可能只影响视图层,AI通常能直接处理好。

但如果是复杂的界面改动 —— 比如想改变排序方式 —— 可能会影响全部三层。可能需要修改数据存储方式、数据获取时机,才能改变界面排序。

这就是容易出错的地方。当AI忘记跨三层同步修改,或是修改不一致时,就会出现难以解决的 bug。

前面提到给宠物做的健康追踪管理就是这样。随着不断迭代,需求一直在变。我想优化界面让输入更方便,但有些优化意味着数据存储方式也要改。改得越多,应用里的隐蔽 bug 就越多。

而且问题会不断累积。助手工作时,会倾向于遵循它看到的代码模式。如果它看到的是过时的视图层,在更新数据层时就可能做出错误决策。

这就是打破原有的项目重头再来的原因。第二次描述应用时,我已经清楚自己想要什么,需求没有变。Lovable 才能正确搭建三层结构,我才能得到完全符合预期的结果。

03 规划 – 评审 – 修正

先想清楚,再开始工作。

每个优秀的产品经理都知道,一个想法在理论上听起来再好,一旦开始细化规格,问题就全出来了。细节才是成败关键。

用vibe coding时,如果我们边写代码边细化细节,成本很高 —— 就算是AI 助手写也一样。而且很容易产生 bug。

AI会犯错。每次你改主意,都会带来一点技术债 —— 旧想法的痕迹还留在代码里。这些技术债会迷惑后续处理,导致恶性循环,bug 越来越多。

永远从规划开始,在规划方案上迭代。

有时只有一个模糊想法,要和AI一起把它变具体;有时我想法很明确,只需要写下来。无论哪种方式,每一次都要从规划开始。

不是PRD或者技术文档,而是小批量、迭代式的方式工作,不是传统大型项目那套流程。

系统性学习PMP的敏捷流程对个人小项目真的很有用。

实操案例

比如做一个回答产品探索相关问题的知识库。我对它有宏大愿景,希望它成为全能的coach。但需要时间一步步实现。

第一个目标,是能访问我所有写过的内容,这样它就能回答那些我已经有文字答案的常见问题。但我不知道怎么实现。于是找 Claude 帮忙,一起制定方案。

Claude 梳理出了端到端的实现方式,解释了很多我不懂的东西,帮我选择服务商(比如向量数据库和嵌入 API)。在讨论中,我不断补充和细化需求。我们用 Markdown 一起迭代,而不是用代码。

方案成熟后,也不是立刻开始写代码。而是把方案交给AI评审。

在和 Claude 的初始对话中,Claude 会学到我的偏好(这是好事),也会学到我的偏见(这是坏事),它会继承我的思维盲区。我们俩都很可能漏掉关键细节,这些细节在实现时会引发问题。

方案评审的任务,就是用全新视角评估方案。

用来验证:

  • 方案是否符合项目的编码规范和架构
  • 没有过度设计
  • 找出逻辑缺陷、思考漏洞、思维盲区,或任何值得注意的问题

不修复方案,只反馈问题。

然后我把评审的意见发给规划助手,一起整合有效反馈。我们重复这个循环,直到三方都满意:我、规划、方案评审。

这个循环对避免 “死活修不好 bug” 的恶性循环至关重要。从一份扎实的方案开始,意味着我们不是在代码里思考,而是在文档里思考,只有确定至少第一个小模块要做什么时,才开始code。

用AI做规划时,记住这些方法:

  1. 频繁开启新对话:对话越长,AI表现越差,这叫 “上下文腐烂”。我常分块规划:先做整体概览,理解端到端流程,写成文档,然后开新对话。下一轮对话深入某个模块,完成后清空上下文,再做下一部分。这样能保证助手始终输出高质量结果。
  2. 不只依赖AI的训练数据:我经常让第二个AI调研我们要做的东西,研究最佳实践,找出人们最常犯的错误,再把报告交给规划助手。
  3. 质疑AI的建议:如果某条建议听起来不对劲,或你不确定,让它澄清甚至解释理由。你不一定是专家,但你应该理解选择,并确保走在正确的路上。
  4. 让AI解释所有你不懂的东西:碰到不熟悉、不理解的内容,直接让AI解释。如果还不懂,告诉它哪里困惑,让它再讲一遍。

04 实现 – 评审 – 修正

方案准备好后,我会开启全新对话,重置上下文窗口。让新AI按方案实现功能。

如果规划做得好,AI应该能独立完成实现。完成后,它通常会让我测试改动。但我不会立刻测试。相反,我要让另一个AI检查编码的工作。

这就是AI 代码评审的作用。AI 代码评审会阅读方案、浏览代码库、评估改动,查找:

  • bug
  • 重复代码
  • 不必要的新模式或技术
  • 过度设计

AI 代码评审的核心目标,就是帮我们避开恶性循环,确保编码遵循良好的软件工程实践。

我会让代码评审重点关注三块:

  1. 异常处理
  2. 测试覆盖率
  3. 安全性

刚开始做时,我对这三块一窍不通,但一路学到了很多。这里我简单讲一下技巧。

异常处理

简单说,就是出问题时代码该如何响应。比如代码调用 API 时,如果出现以下情况该怎么办:

  • API 不可用
  • 没有访问 API 的正确权限
  • 得到意料之外的响应

我们经常只为 “理想情况” 写代码 —— 一切顺利的场景。异常处理,就是列出所有可能出错的情况,以及每种情况该如何处理。

你不需要懂代码里怎么写异常处理,AI可以搞定。但你应该问:

  • 这一步可能出什么问题?
  • 每种情况我们想怎么处理?

然后和AI讨论这些决策。我会明确让代码评审AI检查异常处理的缺失,标出覆盖不足的地方。如果不确定怎么修复,就和编码AI讨论。关键是让专家帮你评审 —— 这就是代码评审助手的价值。

测试覆盖率

代码评审还会检查测试:

  • 有没有完整的单元测试和集成测试?
  • 集成测试是否覆盖所有真实使用场景?

如果你不熟悉自动化测试,那就选:

  • 单元测试:单独测试代码片段(比如这个函数是否按预期运行)
  • 集成测试:测试所有部分如何协同工作

你不需要知道怎么写,但如果你想让代码稳定运行,就必须告诉 Claude 写出合适的测试。

Claude 很会写单元测试,但不太会写正确的单元测试,所以需要代码评审AI检查。Claude 几乎从不记得写集成测试,所以我会让评审AI专门检查这两项。

对于集成测试,让代码评审AI列出代码所有可能的使用方式,然后根据使用场景决定哪些需要写集成测试。

安全性

早期工具在安全方面做得很差,好在现在很多都大幅改善了。很多常用的工具都有自带的安全检查。

我让 Claude 帮我给代码评审写安全检查规则,它会检查各种常见安全漏洞:

  • 依赖漏洞:过时包或虚构包名
  • 代码中的密钥:不暴露 API key 或其他凭证
  • IAM 角色遵循最小权限原则

输入验证

  • 日志规范:不记录敏感数据
  • 跨域资源共享(CORS)配置

你不需要懂这些是什么。关键是让编码AI帮你确保应用安全,并让代码评审AI验证。

和方案评审一样,代码评审AI不修复问题,只写出问题报告。我审阅后,把报告发给编码AI。

我以前会让编码助手直接调用评审助手,让它们自行迭代,但更多的时候是无休止地修复本不需要修的东西。所以我们人力还是得保持在循环中。

和规划一样,代码直到三方都满意才算完成:我、编码、代码评审。

代码评审帮我发现了无数 bug。这一步看起来很繁琐,尤其当代码表面上运行正常时。但长期来看,它会帮你节省大量时间,不用走到某个失败临界点然后从0开始。

05 出问题时如何恢复

就算你严格遵循规划 – 评审 – 修正、实现 – 评审 – 修正循环,问题仍然会出现。记住,AI会犯错。

但别慌。大概率另一个AI能帮你解决。当你碰到编码AI死活修不好的 bug 时,别让它继续瞎试,那样只会引入更多 bug。

相反:

  1. 开新对话
  2. 让新AI看问题
  3. 明确告诉它:只诊断并反馈,不要直接修复

最后一点很重要,不能让它随便乱改代码。

如果是特别难的 bug,我可能会开两个甚至三个AI,用完全相同的提示词,看它们是否得出同一个诊断结论。

只有确信找到真正原因后,才开始写代码。

人们很容易想当然地判断问题根源,其实根本不对。如果让助手直接开始 “修复”,它会乱改很多不需要改的地方,反而带来更多 bug。

永远把诊断和修复分开。

从原型到生产,关键不在 “快”,而在稳。清晰的需求、规范的架构、严格的代码评审、理性的问题排查,这些传统编程的经验,在 AI 时代依然有效,甚至更加重要。

与其在混乱里反复试错,不如用一套成熟流程避开 “恶性循环”,让 AI 真正帮我们把想法落地成可用、可靠、可上线的产品。

作者:朱莉的产品笔记

来源:朱莉的产品笔记

]]>
Claude Code 技术架构拆解 //m.clubpenjuin.com/380434.html Fri, 03 Apr 2026 00:45:46 +0000 //m.clubpenjuin.com/?p=380434

 

Claude Code 是 Anthropic 开源的 AI 编程助手,产品形态是一个跑在终端里的 CLI 工具。开发者在命令行里用自然语言告诉它想做什么,它就能直接读写文件、执行 Shell 命令、操作 Git、调用外部服务,把一个编程任务从头到尾干完。这不是又一个“代码补全插件”。它的野心更大——做一个终端原生的 AI 开发操作系统。

作为 AI 产品经理,理解 Claude Code 的架构设计有三层价值:

第一,它是目前工程成熟度最高的开源 AI Agent 实现之一,1902 个 TypeScript 文件,每一个架构决策都经过了真实产品场景的打磨;

第二,它的分层设计、权限模型、多 Agent 协调机制,对任何 AI 产品的架构规划都有直接参考价值;

第三,读懂它,你和工程团队讨论技术方案时就能说到点子上。

产品定位与核心能力

Claude Code 的核心能力可以拆成五个具体的东西:

  1. 终端交互——用户在命令行输入自然语言指令,Claude Code 理解意图后调用对应工具执行。不是生成代码片段让你复制粘贴,而是直接操作你的项目文件和开发环境。
  2. 工具调用——内置 45+ 工具,覆盖文件读写(FileRead、FileEdit、Write)、Shell 命令执行(BashTool)、代码搜索(Glob、Grep)、Git 操作等。每个工具都有独立的权限控制和进度追踪。
  3. 多 Agent 协作——支持创建并行子代理,一个主 Agent 拆分任务给多个子 Agent 同时干活。团队模式下多个 Agent 可以通过消息协议互相通信。
  4. 远程会话——通过 Bridge 系统,用户在 claude.ai 网页端可以远程控制本地的 CLI 实例。在公司电脑上跑着 CLI,回家用浏览器继续操作。
  5. 可扩展性——100+ 内置 Slash 命令、MCP 协议集成、插件/技能系统。第三方开发者可以通过标准协议接入自己的工具和服务。

和 GitHub Copilot、Cursor 等竞品相比,Claude Code 的本质差异在于:它不依赖 IDE,不做代码补全,而是把整个开发环境当作操作对象,通过 Agent Loop 自主完成任务链路。这是“辅助工具”和“自主代理”的根本区别。

整体架构设计

Claude Code 的架构分成六层,从上到下依次是用户交互层、命令与技能层、核心引擎层、服务层、通信层和基础设施层。

逐层看每一层的职责和存在理由:

  1. 用户交互层负责接收用户输入和展示结果。这一层的关键决策是自研 Ink 终端渲染引擎而不是用现成的 blessed、ink 等库。原因很实际:AI Agent 的输出是流式的、长文本的、需要实时更新的,现有终端 UI 库在这个场景下的性能和灵活性都不够。自研引擎保证了 16ms 级别的渲染刷新和流畅的滚动体验。
  2. 命令与技能层是用户意图到系统行为的翻译层。100+ Slash 命令覆盖了开发者日常工作流:/commit、/diff、/pr_comments处理 Git 工作流,/tasks、/agents管理多 Agent 任务,/mcp、/skills接入外部能力。这一层的产品价值在于:降低用户的学习门槛,把复杂的 Agent 能力包装成熟悉的命令行交互模式。
  3. 核心引擎层是整个系统的大脑。QueryEngine 编排对话流程,Tool 系统定义能力边界,权限框架控制安全底线。这三个模块的耦合度很低——QueryEngine 不关心具体有哪些工具,Tool 系统不关心对话上下文怎么管理,权限框架独立于两者运行。这种解耦设计让每个模块可以独立迭代。
  4. 服务层对接外部依赖。Claude API 支持 Anthropic 直连、AWS Bedrock、Azure Foundry、Vertex AI 四种接入方式,自动重试加指数退避。MCP 协议支持 stdio、SSE、WebSocket、HTTP 四种传输方式。这一层抽象掉了外部服务的差异,上层不需要关心底层用的是哪家云厂商。
  5. 通信层解决一个具体的产品场景:用户想在网页端远程操作本地 CLI。Bridge 系统通过 WebSocket/SSE 建立双向通道,JWT 做认证,崩溃后能自动恢复会话。
  6. 基础设施层提供全局共享的底层能力:Deep Immutable 的状态树保证数据一致性,配置系统支持多级优先级覆盖(CLI 参数 > 本地设置 > 项目设置 > 用户设置),Hook 注册表让扩展点可以被外部代码挂载。

核心模块深度拆解

QueryEngine:13000 行代码的对话编排中枢

QueryEngine 是 Claude Code 最核心的模块,每个对话实例创建一个 QueryEngine 实例。它的职责用一句话概括:把用户的输入变成一次完整的 AI 交互,中间处理好上下文组装、工具调度、Token 管理、异常恢复等所有脏活。

几个关键的设计决策值得拆开讲:

  • 系统 Prompt 组装不是一段固定文本,而是动态拼接的。QueryEngine 会读取项目根目录的 CLAUDE.md 文件(类似项目级的记忆文件),获取当前 Git 分支和最近提交信息,收集项目结构和依赖信息,然后把这些内容拼成完整的系统 Prompt。这意味着同一个用户在不同项目里使用 Claude Code,得到的是不同的“AI 助手人格”。
  • Snip 压缩解决的是一个实际的工程问题:Claude API 有上下文窗口限制,长对话会超出 Token 上限。Snip 机制在对话变长时自动截断历史消息,但不是简单地删掉旧消息,而是保留语义连续性——压缩后的上下文仍然能让模型理解之前在干什么。这个机制对产品体验的影响很大:用户可以在一个会话里连续工作几小时,不会因为上下文溢出而丢失前面的工作进度。
  • 推测执行(Speculation)是一个提升响应速度的设计。在用户还没输入下一条指令时,QueryEngine 会根据当前上下文预判用户可能的下一步操作,提前生成建议。这类似于搜索引擎的“搜索建议”,但发生在 Agent 的任务执行链路上。

Tool 系统:45 个工具背后的设计哲学

Claude Code 的工具不是随便堆的。每个工具都是一等公民,拥有完整的类型定义、权限声明、渲染逻辑和进度追踪机制。

工具分成六类:

延迟加载是一个影响启动速度的关键设计。45 个工具不是启动时全部加载,而是通过 ToolSearch 按需加载。核心工具(FileRead、BashTool 等)常驻内存,非核心工具(LSPTool、SkillTool 等)首次使用时才加载。实际效果:CLI 启动时间从秒级降到毫秒级。

MCP(Model Context Protocol)集成让 Claude Code 的工具体系变成开放的。任何实现了 MCP 协议的外部服务器,都可以把自己的工具暴露给 Claude Code 使用。这意味着第三方开发者不需要修改 Claude Code 的源码,就能给它增加新能力。

Ink 终端渲染引擎:为什么要自己造轮子

Claude Code 的终端 UI 不是用 React Ink 库简单包装的,而是从 Reconciler 层开始重写的自研渲染引擎,共 80+ 文件。

为什么不用现成方案?三个具体原因:

第一,流式输出的性能问题。AI 模型的响应是 token 级别的流式输出,每秒可能触发几十次 UI 更新。通用终端 UI 库在这种频率下会出现明显的闪烁和卡顿。Claude Code 的双缓冲渲染方案——两个 Screen Buffer 交替写入和显示,前后帧原子交换——把闪烁问题彻底消除了。

第二,长文本滚动的体验问题。AI 生成的代码可能有几百行,用户需要在终端里顺畅滚动查看。自研引擎使用 DECSTBM 硬件滚动区域指令,把滚动操作交给终端模拟器硬件处理,配合 ScrollBox 的视口裁剪(只渲染可见行),滚动体验和原生终端一样流畅。

第三,布局复杂度。Claude Code 的 UI 包含多栏布局、进度条、代码高亮、折叠面板等复杂元素。Yoga Flexbox 引擎提供完整的弹性布局支持,让终端 UI 的布局能力接近 Web 页面。

性能优化的细节很多:脏标记传播避免无效重绘,Blit 快速路径直接复制未变更区域,字符池和样式池做内存复用,渲染节流控制在 16ms 一帧。这些优化加在一起,让 Claude Code 在低配终端上也能流畅运行。

双缓冲渲染的工作原理:

这个机制的关键价值:AI 流式输出每秒可能触发 30-50 次 UI 更新,双缓冲保证了前后帧的原子交换,用户看到的画面永远是完整的一帧,不会出现“半帧闪烁”。

Bridge 远程会话:解决“我不在电脑前”的问题

Bridge 系统的产品场景很具体:开发者在办公室的电脑上跑着 Claude Code CLI,回到家想在 claude.ai 网页端继续操作,或者想在手机浏览器上查看任务进度。

Bridge 提供两种架构模式:

Environment-based 模式适合需要管理多个会话的场景。本地 CLI 注册一个“环境”,云端分配 environment_id,然后在这个环境下创建多个会话。这种模式的好处是会话可以独立管理,一个环境里可以同时跑多个任务。

Env-less 模式适合简单的交互式场景。跳过环境注册,直接通过 OAuth 拿到 token,建立单个会话。启动更快,但只支持一个活跃会话。

崩溃恢复是这个系统的硬需求。如果网络断开或进程意外退出,Bridge 会把 environment_id 和 session_id 持久化到bridgePointer.json文件。重启后读取这个文件,重新建立连接,通过序列号跟踪补发丢失的消息。UUID 环形缓冲做去重,防止恢复过程中消息重复投递。

权限系统:安全不是可选项

Claude Code 让 AI 直接操作文件系统和执行 Shell 命令,安全是生死问题。权限系统不是一个简单的“允许/拒绝”开关,而是一个多层决策模型。

六种权限模式对应六种不同的产品场景:

  1. default:标准模式,危险操作需要用户确认
  2. plan:计划模式,只允许只读操作,AI 只能“看”不能“动”
  3. acceptEdits:允许文件编辑但不允许执行命令
  4. bypassPermissions:完全信任模式,适合 CI/CD 自动化场景
  5. dontAsk:不弹确认框,但仍然记录
  6. auto:由分类器自动判断

bashClassifier 做的事情很直接:检查 Shell 命令是否包含rm -rf、DROP TABLE、chmod 777等已知危险模式。yoloClassifier 更复杂,它调用 LLM 做两阶段 XML 分类——先生成思考过程,再给出决策结果。

拒绝追踪是一个容易被忽略但很重要的设计。系统会记录用户历史上拒绝过的操作类型,下次遇到类似操作时自动提高警戒级别。这避免了一个常见问题:用户拒绝了一个危险操作,但 AI 换个措辞又来一遍。

多 Agent 协作:一个 Agent 不够用的时候

单个 Agent 处理复杂任务有两个瓶颈:上下文窗口有限,串行执行太慢。Claude Code 的多 Agent 架构直接解决这两个问题。

主 Agent 作为协调器(Coordinator),负责任务拆解和结果汇总。子 Agent 通过 TeamCreate 协议创建,通过 SendMessage 协议互相通信,通过共享任务列表同步状态。

每个子 Agent 有独立的上下文窗口,这意味着一个 200k token 上下文的任务可以拆成三个 70k token 的子任务并行处理。任务总量没变,但每个 Agent 的上下文压力减小了,回答质量更高。

并行执行的速度优势也很明显。三个子任务如果串行处理需要 3 分钟,并行处理只需要 1 分钟多。

架构设计亮点

拉远视角看整个架构,有几个设计决策特别值得关注。

懒加载贯穿全局。不只是工具系统做延迟加载,Snip 压缩模块、Coordinator 协调器、非核心 UI 组件都通过feature()函数按需加载。这种设计的产品影响是:CLI 首次启动时只加载必要模块,用户输入第一条命令的等待时间控制在毫秒级。对于一个命令行工具来说,启动速度直接决定用户是否愿意每天使用。

懒加载的启动时间对比:

启动时间从 800ms 降到 200ms,用户感知的等待时间减少了 75%。非核心工具在首次使用时才加载,对后续操作几乎无感知。

  • 双缓冲渲染的工程实现不只是“两个 buffer 换来换去”这么简单。脏标记传播机制追踪哪些节点发生了变化,Blit 快速路径让未变更区域直接从旧 buffer 复制到新 buffer,字符池和样式池做内存复用避免 GC 压力,Yoga 布局引擎的单槽缓存在布局参数未变时直接返回上次结果。这些优化叠加在一起,保证了 AI 流式输出时终端不卡顿。
  • 传输抽象的可扩展性体现在 Bridge 系统的 v1/v2 传输层设计上。v1 用 WebSocket+POST,v2 用 SSE+CCR(Claude Communication Record),应用层代码完全不感知底层用的是哪种传输协议。当 Anthropic 需要从 WebSocket 迁移到 SSE 时,只改传输层代码,上面所有的会话管理、消息路由、崩溃恢复逻辑一行不动。
  • 推测执行对用户体验的影响比看起来大。AI Agent 的一次任务执行通常包含多个来回:调用工具→看结果→决定下一步→再调用工具。每一次来回都有网络延迟和模型推理延迟。推测执行在用户还在看结果时,就预判下一步可能的操作并提前准备好。用户看完结果点确认时,下一步操作几乎瞬间完成。
  • 插件化扩展的三位一体设计——技能(Skills)、钩子(Hooks)、MCP 服务器——覆盖了三种不同的扩展场景。技能是预定义的工作流模板(比如“前端组件开发技能”),钩子是在特定事件点执行自定义逻辑(比如“每次提交前跑 lint”),MCP 服务器是完整的外部工具接入。三种机制各有适用场景,不互相替代。

产品经理可以借鉴什么

Claude Code 的架构设计有几个思路,对做 AI 产品的产品经理有直接参考价值。

分层架构不是技术偏好,而是产品迭代速度的保障。

Claude Code 的六层架构让每一层可以独立迭代。要换大模型供应商?改服务层就行。要加新的交互方式(比如语音)?改用户交互层就行。要接入新的外部工具?改 MCP 集成就行。产品经理规划功能迭代时,如果架构分层合理,每个新功能的影响范围是可预期的,排期就不会经常翻车。

“权限即代码”意味着安全不是后补的。

很多 AI 产品的安全机制是在出了安全事故后才加上的,导致权限逻辑散落在代码各处,难以维护也容易遗漏。Claude Code 的做法是每个工具声明自带权限元数据,运行时由统一的权限框架校验。产品经理在设计 AI 产品时,应该在 PRD 阶段就把权限模型写清楚,而不是等开发完了再补。

性能优化是用户体验的一部分。

双缓冲渲染、懒加载、推测执行——这些技术手段的最终目的都是让用户觉得“这个工具很快”。在 AI 产品中,模型推理延迟是不可避免的,但通过架构层面的优化(流式输出、预加载、并行处理),可以把用户感知到的等待时间压缩到可接受的范围。

可扩展性要在第一天就设计好。

Claude Code 的 MCP 协议集成、技能系统、Hook 机制,都不是后加的,而是从架构设计初期就预留了扩展点。一个 AI 产品如果想让第三方开发者参与进来,扩展接口必须是架构的一等公民,不是一个“也可以扩展”的附属功能。

多 Agent 不是噱头,是解决具体性能瓶颈的方案。

不要因为“多 Agent”听起来很酷就在产品里加这个功能。Claude Code 引入多 Agent 是因为单 Agent 的上下文窗口和串行执行速度确实限制了复杂任务的处理能力。做产品决策时,先确认单 Agent 的能力天花板在哪里,再决定是否引入多 Agent 架构。

写在最后

Claude Code 的 1902 个 TypeScript 文件背后,是一套经过严肃工程实践验证的 AI Agent 架构。它不是一个实验性 Demo,而是一个每天被大量开发者使用的生产级产品。

对 AI 产品经理来说,这套架构最值得学习的不是某个具体技术(双缓冲渲染、MCP 协议这些细节交给工程团队就好),而是它背后的设计理念:安全是架构的一部分而不是补丁,性能优化服务于用户体验而不是技术指标,可扩展性要在第一天而不是第 N 天设计。

这些理念听起来像正确的废话,但 Claude Code 用 13000 行的 QueryEngine、多层权限决策模型、自研渲染引擎证明了:把这些理念落地到每一行代码里,产品就是不一样。

作者:JZNext

]]>