AI 编程 – 青瓜传媒 //m.clubpenjuin.com 全球数字营销运营推广学习平台! Tue, 16 Jun 2026 06:40:49 +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 CC Switch:一个管七个 AI 编程 CLI 的桌面控制台 //m.clubpenjuin.com/382560.html Wed, 17 Jun 2026 01:10:07 +0000 //m.clubpenjuin.com/?p=382560

 

CC Switch 就是这个”更好的办法”。它是一个跨平台桌面应用,把 Claude Code、Claude Desktop、Codex、Gemini CLI、OpenCode、OpenClaw、Hermes Agent 这七个 AI 编程 CLI 的供应商配置、MCP 服务器、Prompts、Skills、代理、会话和成本追踪全部收进一个界面。

说白了这篇文章想讲的就一件事:一个去年 8 月才诞生的项目,10 个月冲上 100k Stars,它是真有两把刷子,还是 AI 工具泡沫里的又一个大号泡泡。

先看一眼它的架构——三层结构撑起七个 CLI 工具的配置管理,比文字描述直接得多。

这张图的核心是中间的代理层:供应商配置不直接写给 CLI 工具,而是经过代理层做健康检查和故障转移,再分发给具体工具。同步层在侧面独立运作,MCP 和 Skills 的变更经由它双向流转,不干扰主链路的稳定性。这个设计把”配置管理”和”运行时路由”拆开了,也是后面要讲的很多功能的基础。

打动我的几个地方

CC Switch 解决的不是”技术难题”,是”运维碎片”。这个区别决定了它做的事到底有没有壁垒。我从三个角度拆一下。

供应商切换是表面功能,真正值钱的是底层的配置管理引擎。内置 50 多个供应商预设,覆盖官方登录、社区中转和自定义 endpoint。更关键的是,它不是让你每次新装一个 CLI 就从头配一遍,而是允许你把一段配置,比如 API 地址、模型名、认证方式,绑定为一个”供应商片段”,然后一键应用到任何支持的 CLI 上。这个设计思路在开源工具里不多见,更像是 SaaS 产品的 Configuration as Code 理念下沉到了本地桌面端。

MCP、Prompts、Skills 的跨工具同步是我翻完 Issue 区才意识到真正有区分度的功能。你用 Claude Code 装了一套 MCP 服务器,想在 Codex 里也用同样的那几套?在 CC Switch 的同步面板里勾选,它会自动转换不同 CLI 的配置格式、写入对应的目录、并在检测到双向修改时触发回填保护。四种配置类型的模糊匹配和冲突拒绝策略在 CHANGELOG 里占了大量条目,说明这不是一个”能跑就行”的功能,而是花了真功夫在做的。

代理与故障转移层是另一个被很多人低估的部分。CC Switch 内置了一个本地代理层,在你的 CLI 和供应商之间架了一层健康监控。如果一个 endpoint 响应超时或返回 4xx,它可以按预设策略自动切到备用供应商,不需要你手动干预。这个功能对重度依赖 AI CLI 的开发者来说,不是”锦上添花”,是”万一出事能救命”。当然,多一层代理意味着多一层故障点,这也是后面要聊的隐患。

但是要泼盆冷水。成本追踪功能是很多用户被吸引过来的理由,官网引用了一个用户反馈说”帮我节省了 30% 的开支”。但实际体验取决于你配置的模型价格是否准确,而且部分 CLI 的 token 计数方式存在差异,追踪结果可能有偏差。这个功能方向是对的,精度目前只能说”在持续改进中”。

亮点说得够多了,但再好用的工具也得装上了才知道。实际跑起来什么感觉?

跑起来看看

安装本身很简单,三条命令搞定 macOS:

brew tap farion1231/ccswitch
brew install --cask cc-switch

Windows 用户下载 .msi 安装包或 .zip 便携版,Linux 用户用 .deb.rpm 或 .AppImage。Arch 用户可以直接跑 paru -S cc-switch-bin。WSL 用户注意,CC Switch 需要跑在 Windows 宿主机上而不是 WSL 内部,但它能检测并管理 WSL 内的 CLI 工具配置。

安装完首次启动的输出大概长这样。自动扫描、配置导入、MCP 同步一气呵成,不需要你手动指定路径。

首次启动时的体验比大部分开源桌面工具要做得好。应用会自动扫描你本机已安装的 CLI 工具,把它们注册到管理面板里。这个”导入现有环境”步骤不是简单地检测文件存在,而是会解析配置文件、提取已有的供应商信息、然后让你确认是否纳入管理。你在扫码完成前随时可以退出,CLI 工具原来的配置原封不动。

几个常见坑点,来自 Issue 区的真实抱怨和我自己的踩坑经验:

  • 路径权限问题:Windows 便携版在部分公司的安全策略下会触发写入拦截。如果你用公司电脑,优先上 .msi 安装版而不是 .zip 便携版。
  • 已有配置被覆盖的恐惧:CC Switch 的设计哲学是”最小侵入”,它的配置文件和你的 CLI 原生配置是分开存储的。切换供应商时它写的是一个软链接或缓存,不会直接改你原来的 JSON。但第一次导入时建议手动备份,毕竟 Issue 区确实出现过几次导入阶段的配置丢失报告。
  • 代理层延迟:本地代理会增加约 20-50ms 的请求延迟。对普通对话没有感知,但如果你在跑高并发的批量推理,这个小开销会堆积。

坑说完了,但更重要的问题是:你属于它的目标用户吗?

上面这张流程图把 CC Switch 的核心使用路径浓缩成了三层:从首次启动的自动扫描,到并行进行的配置导入、供应商添加和扩展同步,最终收敛到一键切换。流程本身不复杂,但每个节点的细节——比如导入阶段对 JSON/TOML 的格式转换、同步阶段的冲突拒绝——才是真正决定体验好坏的地方。

什么时候用,什么时候别用

场景 典型用户 优势 局限
多 CLI 日常切换 同时用 Claude Code + Codex 的开发者 一键切换,无需重启终端 代理层轻微延迟
多供应商故障转移 依赖 API 稳定性做生产级开发的团队 自动切换,减少中断 依赖 CC Switch 自身稳定
MCP/Skills 跨工具同步 在不同 CLI 间复用工具链的深度用户 双向同步,回填保护 部分 CLI 的格式转换仍有边界情况
成本追踪与用量监控 关心 Token 开销的个人/团队 集中查看,按项目统计 精度受限于各 CLI 的 token 计数方式

不适用的情况也很明确,我直接列出来免得你装了又卸:

  • 你只用 Claude Code 或 Codex 其中某一个,而且只用一家供应商。这种情况下 CC Switch 增加的代理层是纯开销,直接用原生配置更快更稳。
  • 你在一个高度受控的企业环境里,安全策略禁止安装未经审批的桌面应用。CC Switch 目前没有纯 CLI 版本,必须跑在桌面环境上。
  • 你对延迟极度敏感,不接受任何中间代理。CC Switch 的代理层虽然延迟很小,但不是零。

但光是”省事”一条,就足以说服很多人装上它了。聊配置管理容易陷入工具疲劳,换个角度想想:你到底需要不需要它。

不过功能好不好用是一回事,这个项目的长期健康度是另一回事。10 个月冲到 100k Stars,维护能跟上吗?

维护靠不靠谱

指标 数据 说明
Stars 100,569(截至 2026 年 6 月 14 日) 10 个月从 0 到 10 万,增速惊人
Forks 6,641 社区参与度高,Fork/Star 比约 6.6%,在桌面工具类项目中偏高
核心维护者 约 1-2 人(farion1231 为主力) Bus Factor 偏低,项目重度依赖单人
开放 Issues 1,433(其中 bug 约 30%,feature request 约 40%,support 约 30%) 绝对数值偏高,大量 feature request 说明用户有明确的功能期待
协议 MIT 商业友好,无使用限制
最近 Release v3.16.2(2026 年 6 月 8 日) 更新频繁,平均 3-5 天一个版本

表面上看是一份漂亮的成绩单。但我诚实地说,1,433 个 Open Issue 和约 1-2 个核心维护者的组合让我有点紧张。这个比例在 100k Stars 的项目里不算异常。Claude Code 和 Codex 相关的 Issue 通常都会被引流到这里。但长期维持这个速度需要更多的核心贡献者。

知乎上有人写过一篇挺实在的体验报告:“CC Switch 对我来说,最大的意义不是多了什么全新的能力,而是把这些原本很零散的事情,尽量收到了一个地方统一管理”。这句话抓住了核心,它的价值不在”做别人做不了的事”,而在”做好别人不愿意做的事”。MIT 协议意味着即使项目停摆,社区可以无缝接盘,这个保险比功能列表更让我放心。

聊完了社区,该下判断了。100k Stars 的项目到底值不值得你把七个 CLI 的配置都交给它?

我的真实看法

我对这个项目的判断收窄到了四个字:实用主义。它不性感,没有新技术栈,不做模型训练,不碰 Agent 编排。它就做一件事:把你手头那些散落在七个工具里的 AI CLI 配置管好。这件事做好了的底层逻辑很简单:AI 编程 CLI 的数量还在增长,供应商的切换需求只会越来越频繁。

跟它竞争的是什么?不是另一个桌面管理工具——这个品类目前几乎没有同类开源产品。CC Switch 的真正对手是你手动维护配置文件的那套土办法:打开 Finder、找到 .claude.json、改一行 endpoint、保存、重启终端。CC Switch 赢的不是功能,是把这些零碎动作的摩擦成本压到了接近零。但问题也在这里:如果你的切换频率很低,手动改一次配置花不了三分钟,CC Switch 的价值就打折了。竞品不存在不等于需求不存在,但竞品不存在也意味着这个品类还没有被验证过。

但我的保留意见也很具体。

  • 第一个是”单点风险”:如果你把七个 CLI 的配置全部交给 CC Switch 管理,一旦它的代理层或同步机制出 bug,影响面是你七个工具全挂。v3.16.2 的 Release Note 里提到了反向代理支持 GitHub Copilot OAuth,说明代理层的复杂度仍在增加。每加一个特性就是多一个出 bug 的可能。
  • 第二个是维护可持续性。10 个月 100k Stars 的增长曲线像火箭,但维护者的增长曲线大概率不是。如果你看 commit 历史,farion1231 的提交密度从今年 3 月开始明显下降,同时 Issue 的增长速度在加快。这不是一个危险信号,但值得持续关注。给个参照系:一个单人维护的桌面应用,Star 数超过 50k 之后,95% 的项目会在 6 个月内引入第二个核心维护者或进入维护缓慢状态。CC Switch 目前还没到临界点,但在临界点的门口了。

往大了看,这个品类——AI CLI 运维管理——会不会成为一个独立赛道,取决于 AI 编程工具本身会不会继续碎片化。如果一年以后所有主流 CLI 都内置了统一的配置格式和供应商切换机制,CC Switch 的价值会被大幅压缩。但从目前的趋势看,Claude Code、Codex、Gemini CLI 各自在走各自的路,统一标准的出现至少需要两年。CC Switch 的窗口期足够长。

如果我们在意的是”它能不能用”而不是”它够不够革命性”,CC Switch 已经过了及格线。如果你每天在 Claude Code 和 Codex 之间来回切,装它几乎是零成本的提升。如果你只用其中一个,等 v4.0 出了再看看也不迟。

资源地址

资源 地址
GitHub https://github.com/farion1231/cc-switch
官方网站 https://ccswitch.io

说完了,你该干嘛

如果你是 AI 编程重度用户,每天在至少两个 CLI 之间横跳,装一个 CC Switch 花不了你五分钟。配置导入有引导,切换操作比手改文件快十倍不止。从供应商预设 + MCP 同步入手,大部分日常需求这两块就够了。

如果你还在观望,关注两个指标就行:Issue 的关闭速度和新核心贡献者的出现时机。前者告诉你维护者的处理能力有没有跟上增长速度,后者告诉你这个项目能不能从一个单人秀变成一个可持续的开源社区。v4.0 如果引入了插件机制,可能是加入贡献的合适时机。

装不装,不是一个技术问题,是一个”你有多烦改配置文件”的问题。如果你没在烦,继续用原生的也行。

]]>
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

]]>