<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>奇诺分享 | 重在分享</title>
        <link>https://blog.ccino.org/</link>
        <description>Recent content on 奇诺分享 | 重在分享</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Tue, 19 May 2026 14:30:00 +0800</lastBuildDate><atom:link href="https://blog.ccino.org/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>别再问 AI 写了多少代码了，企业 AI 提效的衡量指标该换了</title>
        <link>https://blog.ccino.org/p/ai-productivity-metrics-code-generation-rate-2026/</link>
        <pubDate>Tue, 19 May 2026 14:30:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/ai-productivity-metrics-code-generation-rate-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/ai-productivity-metrics-code-generation-rate-2026/imgs/cover.png" alt="Featured image of post 别再问 AI 写了多少代码了，企业 AI 提效的衡量指标该换了" /&gt;&lt;p&gt;企业开始认真使用 AI 写代码之后，最容易冒出来的第一个指标，往往是“AI 生码率”。&lt;/p&gt;
&lt;p&gt;它太好理解了。&lt;/p&gt;
&lt;p&gt;一段代码里，有多少是 AI 生成的？一个迭代里，有多少提交来自 Copilot、Cursor、Claude Code 或内部 Agent？如果比例越来越高，是不是就说明团队越来越高效？&lt;/p&gt;
&lt;p&gt;这个指标听起来直观，也很适合写进汇报材料。因为它给了管理者一个看起来非常清楚的答案：AI 参与度正在上升，投资似乎正在见效。&lt;/p&gt;
&lt;p&gt;但问题也在这里。&lt;/p&gt;
&lt;p&gt;越是容易被汇报的指标，越不一定能解释真实变化。BestBlogs 今日精选里有一条 InfoQ 中文的复盘，标题大意是“CIO 正在抛弃 AI 生码率”。它传递出的信号不是企业不再相信 AI 编程，而是一些真正开始落地 AI 工程实践的团队，正在意识到：&lt;strong&gt;代码生成比例可能是最诱人、也最容易误导人的提效指标。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;因为软件工程真正昂贵的部分，从来不只是“把代码打出来”。&lt;/p&gt;
&lt;p&gt;如果一个团队让 AI 生成了更多代码，但需求理解没有变快，评审压力没有下降，缺陷没有减少，发布周期没有缩短，线上事故没有变少，那这个团队到底是更高效了，还是只是更快地制造了更多需要维护的东西？&lt;/p&gt;
&lt;p&gt;这才是企业 AI 提效真正要回答的问题。&lt;/p&gt;
&lt;h2 id=&#34;ai-写了多少代码是最容易被滥用的指标&#34;&gt;AI 写了多少代码，是最容易被滥用的指标
&lt;/h2&gt;&lt;p&gt;“AI 生码率”的问题，不是它完全没有价值。&lt;/p&gt;
&lt;p&gt;它当然能说明一些事情。比如团队是否真的在使用 AI 工具，AI 是否已经进入日常开发流程，哪些业务线更愿意尝试新工具，哪些团队仍然停留在手工编码。&lt;/p&gt;
&lt;p&gt;作为一个采用率指标，它有意义。&lt;/p&gt;
&lt;p&gt;但如果把它当成提效指标，麻烦就来了。&lt;/p&gt;
&lt;p&gt;因为“代码行数”本身就不是软件价值的稳定代理。一个优秀工程师可能删掉几百行代码，让系统更简单；一个糟糕改动也可能新增几千行代码，让未来所有人都付出维护成本。AI 加进来之后，这个问题只会被放大。&lt;/p&gt;
&lt;p&gt;AI 最擅长的，恰恰是快速生成看起来像样的代码。&lt;/p&gt;
&lt;p&gt;它可以把一个简单需求扩成完整模块，可以把一个小工具写出很多边界处理，可以快速生成测试、注释、适配层、配置文件。对管理报表来说，这些都很漂亮：代码变多了，AI 参与度提高了，产出似乎增加了。&lt;/p&gt;
&lt;p&gt;但软件工程里，更多代码经常意味着更多接口、更多状态、更多依赖、更多评审点，也意味着未来更多理解成本。&lt;/p&gt;
&lt;p&gt;如果团队被“AI 写了多少”牵着走，就很容易把 AI 用成一台代码增殖机器。&lt;/p&gt;
&lt;p&gt;最后你得到的不是更快交付，而是一座更快长出来的代码森林。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/ai-productivity-metrics-code-generation-rate-2026/imgs/bad-metric.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/ai-productivity-metrics-code-generation-rate-2026/imgs/bad-metric_hu_9346b63f1dee2616.png 480w, https://blog.ccino.org/p/ai-productivity-metrics-code-generation-rate-2026/imgs/bad-metric_hu_fad5b1bdc00377fa.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;AI 生码率作为坏指标带来的误导&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;编码只是软件工程的一小段&#34;&gt;编码只是软件工程的一小段
&lt;/h2&gt;&lt;p&gt;很多关于 AI 编程的讨论，都天然把焦点放在“写代码”上。&lt;/p&gt;
&lt;p&gt;这很正常。因为代码最可见，也最容易展示。一个模型现场生成一个功能，比它帮你澄清需求、拆掉一个错误假设、提前发现设计风险，要更有戏剧性。&lt;/p&gt;
&lt;p&gt;但企业里的软件交付不是从敲下第一行代码开始，也不是在生成最后一行代码时结束。&lt;/p&gt;
&lt;p&gt;一个功能真正进入生产，通常要经过需求澄清、方案设计、接口协商、代码实现、测试验证、评审、安全检查、发布、监控、反馈修复。编码只是其中一环。&lt;/p&gt;
&lt;p&gt;更现实一点说，在很多成熟团队里，真正拖慢交付的往往不是“没人会写这段代码”。&lt;/p&gt;
&lt;p&gt;拖慢交付的是需求反复变，边界没人说清；是上下游接口没人对齐；是历史系统没人敢动；是测试环境不稳定；是评审排队；是发布窗口卡住；是线上问题回滚以后没人知道根因。&lt;/p&gt;
&lt;p&gt;AI 如果只是在编码环节加速，当然有帮助，但它触碰到的只是链路中最显眼的一段。&lt;/p&gt;
&lt;p&gt;所以企业衡量 AI 提效，不能只问“AI 替我们写了多少代码”，而要问：&lt;/p&gt;
&lt;p&gt;AI 有没有让需求更快被澄清？有没有让方案评审更早发现风险？有没有让测试覆盖更贴近真实业务？有没有减少返工？有没有让新人更快理解系统？有没有让一次变更从提出到上线的总时间缩短？&lt;/p&gt;
&lt;p&gt;这些问题比生码率难算，但更接近真实价值。&lt;/p&gt;
&lt;h2 id=&#34;坏指标会把团队带向坏行为&#34;&gt;坏指标会把团队带向坏行为
&lt;/h2&gt;&lt;p&gt;指标从来不是中性的。&lt;/p&gt;
&lt;p&gt;你量什么，团队就会优化什么。你奖励什么，团队就会生产什么。&lt;/p&gt;
&lt;p&gt;如果一个组织把 AI 生码率当成核心指标，短期内可能会看到很好看的曲线。AI 生成代码比例上升，开发者使用工具更频繁，项目里出现更多由 AI 辅助完成的提交。&lt;/p&gt;
&lt;p&gt;但这样的指标也会诱导三个副作用。&lt;/p&gt;
&lt;p&gt;第一个副作用是代码膨胀。&lt;/p&gt;
&lt;p&gt;当“生成更多”本身被视为进展，开发者会更少质疑“这段代码是否真的需要存在”。AI 给出的实现通常偏向补全和扩展，而不是删除和收敛。它很少主动说：这个需求不该做，这个抽象可以砍掉，这个模块应该合并。&lt;/p&gt;
&lt;p&gt;第二个副作用是评审压力后移。&lt;/p&gt;
&lt;p&gt;AI 写得越快，人类审得越慢。表面看编码阶段提速了，实际只是把成本从“写代码”转移到“理解 AI 写了什么”。如果评审体系没有变化，AI 生成越多，资深工程师越容易被淹没在看似合理但需要逐行确认的 diff 里。&lt;/p&gt;
&lt;p&gt;第三个副作用是指标游戏化。&lt;/p&gt;
&lt;p&gt;一旦生码率进入考核，团队就会学会迎合它。能让 AI 生成的就让 AI 生成，哪怕人类手写更简单；能留下的代码就不删除，哪怕删掉才是更好的工程决策。最后指标越来越好，系统越来越重。&lt;/p&gt;
&lt;p&gt;这不是 AI 独有的问题。所有单一产出指标都有类似风险。只是 AI 把“制造产出”的速度提高了，所以坏指标的副作用也来得更快。&lt;/p&gt;
&lt;h2 id=&#34;企业真正该量的是交付链路&#34;&gt;企业真正该量的是交付链路
&lt;/h2&gt;&lt;p&gt;如果不用 AI 生码率，那应该量什么？&lt;/p&gt;
&lt;p&gt;更合理的方向，是把 AI 放回完整的软件交付链路里看。&lt;/p&gt;
&lt;p&gt;第一类是周期指标。&lt;/p&gt;
&lt;p&gt;比如从需求确认到上线用了多久，从 bug 创建到修复合并用了多久，从代码提交到通过测试用了多久。AI 的价值如果真实存在，应该能在这些链路时间里留下痕迹。它可能不是让每个环节都变快，但至少应该让某些瓶颈被削平。&lt;/p&gt;
&lt;p&gt;第二类是质量指标。&lt;/p&gt;
&lt;p&gt;比如千行代码缺陷率、回滚率、线上事故数、重复 bug 数、测试漏检率。AI 如果只是让代码变多，却让缺陷也变多，那不是提效，而是用速度换债务。相反，如果代码生成比例不高，但缺陷下降、返工减少、评审更顺畅，这反而更像真正的工程收益。&lt;/p&gt;
&lt;p&gt;第三类是认知负担指标。&lt;/p&gt;
&lt;p&gt;这类指标最难量化，却越来越重要。AI 是否让新人更快理解系统？是否让开发者更快定位问题？是否减少跨团队沟通成本？是否让文档、测试、变更说明变得更完整？这些变化不一定立刻体现在代码行数上，却会长期改变团队吞吐量。&lt;/p&gt;
&lt;p&gt;第四类是系统性指标。&lt;/p&gt;
&lt;p&gt;比如关键模块复杂度有没有下降，重复代码有没有减少，测试覆盖是否更有意义，依赖关系是否更清晰，告警是否更可解释。AI 如果只是局部提速，却让系统整体更难维护，长期看一定会反噬。&lt;/p&gt;
&lt;p&gt;这些指标没有生码率那么漂亮，也不容易在一页 PPT 里讲清楚。&lt;/p&gt;
&lt;p&gt;但企业真正需要的，恰恰不是漂亮指标，而是能指导决策的指标。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/ai-productivity-metrics-code-generation-rate-2026/imgs/delivery-chain.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/ai-productivity-metrics-code-generation-rate-2026/imgs/delivery-chain_hu_f042f10ede943023.png 480w, https://blog.ccino.org/p/ai-productivity-metrics-code-generation-rate-2026/imgs/delivery-chain_hu_c1068b34f0ef8e05.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;AI 提效应放回完整的软件交付链路中衡量&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;ai-提效不该只算人省了多少时间&#34;&gt;AI 提效不该只算“人省了多少时间”
&lt;/h2&gt;&lt;p&gt;很多公司评估 AI 工具时，还会落入另一个常见陷阱：把 AI 提效简单换算成人力节省。&lt;/p&gt;
&lt;p&gt;比如一个开发者每天省 30 分钟，一个团队 100 人，每年节省多少工时，再乘以人力成本，得出一个 ROI。&lt;/p&gt;
&lt;p&gt;这种算法不是完全没用，但它过于粗糙。&lt;/p&gt;
&lt;p&gt;AI 在软件团队里的价值，不只是让某个人少敲几行代码。它更可能改变的是工作分布。&lt;/p&gt;
&lt;p&gt;以前资深工程师要花很多时间回答重复问题，现在 AI 可以承担一部分上下文解释。以前排查 bug 要先翻日志、查文档、找历史 PR，现在 AI 可以把线索初步串起来。以前测试用例经常被省略，现在 AI 可以先生成一版，再由人类筛选和修正。&lt;/p&gt;
&lt;p&gt;这些价值很难直接换算成“省了几分钟”，但它们会改变团队的节奏。&lt;/p&gt;
&lt;p&gt;一个更健康的问题是：AI 是否让高价值的人类注意力，从低价值重复劳动里释放出来？&lt;/p&gt;
&lt;p&gt;如果 AI 只是让团队更快写样板代码，却没有减少等待、返工和沟通噪音，那它节省的时间很可能会在后续环节重新花掉。&lt;/p&gt;
&lt;h2 id=&#34;从生码率转向验收率&#34;&gt;从生码率转向验收率
&lt;/h2&gt;&lt;p&gt;企业想要更稳妥地衡量 AI 提效，可以先做一个小转向：少看生成率，多看验收率。&lt;/p&gt;
&lt;p&gt;不是问“这段代码是不是 AI 写的”，而是问“这次 AI 参与的工作，最后有没有被顺利验收”。&lt;/p&gt;
&lt;p&gt;验收可以很朴素：需求是否一次说清，方案是否通过评审，测试是否覆盖关键路径，代码是否少返工，发布后是否少回滚。它不需要一开始就变成复杂平台，也不需要马上引入一套庞大的 AI 管理系统。&lt;/p&gt;
&lt;p&gt;对一个普通团队来说，第一步可以只是把 AI 使用记录和交付结果放在一起看。&lt;/p&gt;
&lt;p&gt;同样是用了 AI，哪些任务更顺？哪些任务反而返工更多？AI 适合写测试，还是适合读日志？适合生成初稿，还是适合做评审清单？不同团队的答案可能不一样。&lt;/p&gt;
&lt;p&gt;这比单纯追生码率更有价值。&lt;/p&gt;
&lt;p&gt;因为它能帮助团队形成自己的使用边界。&lt;/p&gt;
&lt;p&gt;有些任务适合交给 AI 扩展，有些任务适合让 AI 做检查，有些任务只适合让 AI 辅助理解，不能让它直接改。真正成熟的 AI 工程实践，不是每个环节都让 AI 参与，而是知道哪些环节值得让 AI 参与。&lt;/p&gt;
&lt;h2 id=&#34;最终目标不是更多代码而是更少浪费&#34;&gt;最终目标不是更多代码，而是更少浪费
&lt;/h2&gt;&lt;p&gt;企业采用 AI 编程工具，当然是为了提效。&lt;/p&gt;
&lt;p&gt;但“提效”这个词很容易被误读成“更快生产更多东西”。在软件工程里，这个理解很危险。因为软件不是一次性产物，而是长期系统。今天多写出来的每一行代码，明天都可能变成别人要理解、测试、迁移和修复的负担。&lt;/p&gt;
&lt;p&gt;所以 AI 提效的终点，不应该是更多代码。&lt;/p&gt;
&lt;p&gt;它应该是更少不必要的工作。&lt;/p&gt;
&lt;p&gt;更少反复解释同一个需求。更少因为上下文缺失导致的返工。更少没人敢动的历史逻辑。更少写完才发现方向错了的功能。更少为了证明自己在用 AI 而制造出来的代码。&lt;/p&gt;
&lt;p&gt;如果一个团队用了 AI 之后，代码生成比例提高了，但系统更难维护，那它只是把问题加速了。&lt;/p&gt;
&lt;p&gt;如果一个团队用了 AI 之后，代码未必显著变多，但交付更稳、返工更少、评审更轻、知识流动更快，那才是真正的提效。&lt;/p&gt;
&lt;p&gt;企业 AI 的下一阶段，关键不在于证明 AI 会写代码。&lt;/p&gt;
&lt;p&gt;这件事已经不需要证明了。&lt;/p&gt;
&lt;p&gt;真正要证明的是：AI 参与之后，软件工程这条链路有没有变得更健康。&lt;/p&gt;
&lt;p&gt;别再只问 AI 写了多少代码了。&lt;/p&gt;
&lt;p&gt;该问的是：它有没有让我们少做那些本来就不该浪费时间的事。&lt;/p&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.infoq.cn/article/BWbN5pKPLw3zSfHRj0P1&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CIO 正在抛弃 AI 生码率：一场关于什么才算产研提效的实践复盘 - InfoQ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.bestblogs.dev/article/339ffc01&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CIO 正在抛弃 AI 生码率：一场关于什么才算产研提效的实践复盘 - BestBlogs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.ccino.org/p/databricks-ai-agent-deployment-gap-2026/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;为什么企业 AI Agent 部署总是卡住？Databricks 报告暴露了真正问题&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Agent 不是缺 Prompt，而是缺一套 Harness</title>
        <link>https://blog.ccino.org/p/agent-harness-engineering-long-running-agents-2026/</link>
        <pubDate>Tue, 19 May 2026 09:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/agent-harness-engineering-long-running-agents-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/agent-harness-engineering-long-running-agents-2026/imgs/cover.png" alt="Featured image of post Agent 不是缺 Prompt，而是缺一套 Harness" /&gt;&lt;p&gt;这两天看 Anthropic 那篇长任务 Agent 的工程文章，我最先想到的不是“Claude 又能连续干几个小时了”，而是另一件事：我们可能太习惯把 AI 编程的问题归结为模型了。&lt;/p&gt;
&lt;p&gt;模型不够强，所以换模型。结果不好，所以改 prompt。上下文不够，所以塞更多文件。过去几年，这几招确实有用。但当 Agent 开始被允许连续工作几个小时，问题会变得不一样。&lt;/p&gt;
&lt;p&gt;Anthropic 这次反复提到一个词：&lt;strong&gt;Harness&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;直译成“支架”有点生硬，但意思很准确：模型本身只是核心执行器，真正让 Agent 能稳定做事的，是围在它外面的一整套工程支架。工具、权限、沙箱、测试、浏览器、日志、规则文件、评估器、人工确认，这些都算。&lt;/p&gt;
&lt;p&gt;换句话说，Prompt 关心“怎么问”，Context 关心“给它看什么”，Harness 关心的是：&lt;strong&gt;当 AI 开始替你行动时，它怎么被约束、怎么被验证、怎么被纠偏。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这才是长任务 Agent 最难的地方。&lt;/p&gt;
&lt;h2 id=&#34;长任务的坏结果通常不是一上来就坏&#34;&gt;长任务的坏结果，通常不是一上来就坏
&lt;/h2&gt;&lt;p&gt;短任务里的 AI 错误很好抓。&lt;/p&gt;
&lt;p&gt;让它写一个函数，测试红了就是红了；让它解释一段代码，讲错了你很快能看出来；让它改一个小 bug，diff 也不会太大。&lt;/p&gt;
&lt;p&gt;长任务麻烦得多。&lt;/p&gt;
&lt;p&gt;一个 Agent 连续工作 1 小时、3 小时、6 小时，它不一定会在第一步失败。它可能一开始方向没问题，后来逐渐偏离需求；中途为了补前面的坑，又引入几个新抽象；最后交付时，还能给你一段很完整的总结，说自己已经完成了。&lt;/p&gt;
&lt;p&gt;这类失败最烦，因为它看起来不像失败。&lt;/p&gt;
&lt;p&gt;Anthropic 在长时间应用开发实验里提到过几种典型现象：上下文会变脏，计划会漂移，模型会提前收尾，自我评价会过于宽松。BestBlogs 今日精选里对 AI Engineer 相关分享的概括更直白：长 session 容易出现 context rot、规划缺陷和输出 sycophancy。&lt;/p&gt;
&lt;p&gt;这些词听起来像论文里的术语，放到日常开发里其实很熟悉。&lt;/p&gt;
&lt;p&gt;你让 Agent 修一个 bug，它改到一半开始重构半个项目；你让它加一个小功能，它顺手加了你没要求的抽象层；你让它检查是否完成，它认真说“已经完成”，你打开页面发现按钮根本点不动。&lt;/p&gt;
&lt;p&gt;这不是“模型完全不会做”。很多时候它确实做了一大半。问题在于，它缺少一个持续把它拉回正轨的系统。&lt;/p&gt;
&lt;p&gt;这就是 Harness 的位置。&lt;/p&gt;
&lt;h2 id=&#34;agent-不是模型本身&#34;&gt;Agent 不是模型本身
&lt;/h2&gt;&lt;p&gt;O&amp;rsquo;Reilly 那篇《Agent Harness Engineering》里有一句话很直接：&lt;strong&gt;Agent = Model + Harness&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这个说法有点像废话，但我觉得它很有用。因为很多人聊 Agent 时，还是会不自觉地把 Agent 等同于模型。&lt;/p&gt;
&lt;p&gt;模型强，Agent 就强。模型弱，Agent 就弱。&lt;/p&gt;
&lt;p&gt;现实没这么简单。&lt;/p&gt;
&lt;p&gt;一个裸模型不是 Agent。一个聊天框也不是 Agent。真正能做事的 Agent，至少需要一堆模型之外的东西：它能调用哪些工具，不能调用哪些工具；它能不能读日志；能不能跑测试；能不能开浏览器；能不能改数据库；失败之后有没有重试；完成之前有没有验收。&lt;/p&gt;
&lt;p&gt;这和软件工程团队很像。&lt;/p&gt;
&lt;p&gt;一个优秀程序员当然重要，但团队产出不只看个人能力。有没有测试，有没有 CI，有没有 code review，有没有监控，有没有回滚机制，有没有清晰的需求和验收标准，这些东西都会决定结果。&lt;/p&gt;
&lt;p&gt;AI Agent 也是一样。&lt;/p&gt;
&lt;p&gt;如果你只给它一句“帮我做完这个功能”，再给它一堆工具权限，然后等它自己判断完成，本质上是在让一个非常自信、又没有责任边界的实习生独自负责需求、设计、开发、测试、验收和上线。&lt;/p&gt;
&lt;p&gt;它可能偶尔给你惊喜，但这不该叫生产流程。&lt;/p&gt;
&lt;p&gt;Harness 做的事情，就是把流程重新搭起来。&lt;/p&gt;
&lt;h2 id=&#34;把写和评拆开&#34;&gt;把“写”和“评”拆开
&lt;/h2&gt;&lt;p&gt;Anthropic 在长时间应用开发实验里用过一个三角色架构：Planner、Generator、Evaluator。&lt;/p&gt;
&lt;p&gt;Planner 把用户几句话的需求扩展成规格；Generator 负责实现；Evaluator 打开应用、点击页面、检查状态、找问题，再把反馈交回去。&lt;/p&gt;
&lt;p&gt;重点不是“用了三个 Agent”。多 Agent 本身没什么神秘的，做得不好只会更贵、更乱。重点是写代码和验收结果被拆开了。&lt;/p&gt;
&lt;p&gt;单 Agent 模式里，一个模型既负责写，又负责判断自己写得好不好。这个安排天然有问题。人类写作者自己校对都会漏错，更何况模型还有一种很强的“任务完成倾向”：它很擅长解释为什么自己已经完成，而不是证明自己其实没完成。&lt;/p&gt;
&lt;p&gt;独立 Evaluator 的价值就在这里。&lt;/p&gt;
&lt;p&gt;它不继续写代码，只负责挑错。它可以被设定得更严格，可以用 Playwright 打开页面，可以检查 UI、路由、API、数据库状态，也可以按照一套标准打分。&lt;/p&gt;
&lt;p&gt;这样一来，流程从“AI 自己说自己完成了”，变成“AI 必须通过另一个评审者的验收”。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/agent-harness-engineering-long-running-agents-2026/imgs/planner-generator-evaluator.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/agent-harness-engineering-long-running-agents-2026/imgs/planner-generator-evaluator_hu_caf04f51dd05ec80.png 480w, https://blog.ccino.org/p/agent-harness-engineering-long-running-agents-2026/imgs/planner-generator-evaluator_hu_b8cd66ba7a66f17.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Planner、Generator、Evaluator 把规划、实现和验收拆成独立反馈回路&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;这个变化比表面看起来大。&lt;/p&gt;
&lt;p&gt;过去我们优化 AI 编程，第一反应往往是换更强模型、写更长 prompt、塞更多上下文。Harness 的思路刚好相反：先承认模型会漂移、会自信犯错、会提前宣布完成，然后用工程流程把这些失败模式包住。&lt;/p&gt;
&lt;p&gt;它不是让模型变聪明一点，而是让模型没那么容易糊弄流程。&lt;/p&gt;
&lt;h2 id=&#34;真实环境比看起来没问题重要&#34;&gt;真实环境比“看起来没问题”重要
&lt;/h2&gt;&lt;p&gt;很多 AI 编程失败，不是代码语法错了，而是它只在“想象中的环境”里成立。&lt;/p&gt;
&lt;p&gt;按钮看起来在页面上，但点了没反应。API 路由写好了，但鉴权状态不对。数据库字段改了，但迁移没跑。Kubernetes 配置显示成功，但生产环境里的网络策略、权限、存储、监控指标早就漂移了。&lt;/p&gt;
&lt;p&gt;The New Stack 那篇关于云原生 Agent Harness 的文章，讲的就是这个问题。分布式系统里的反馈信号非常分散。Terraform 绿色不等于云上系统健康，Prometheus 没报警也不等于服务真的可用，CI 通过更不代表真实环境没有漂移。&lt;/p&gt;
&lt;p&gt;人类工程师调试生产系统时，会同时看日志、监控、命令输出、用户反馈、历史经验和团队上下文。Agent 如果只看代码 diff 和测试输出，就很容易在局部正确的世界里做出全局错误的判断。&lt;/p&gt;
&lt;p&gt;所以 Harness 不能只等于“跑测试”。&lt;/p&gt;
&lt;p&gt;它要把真实反馈接进来：浏览器点击、命令执行、日志读取、状态检查、权限限制、成本记录、人工审批。越接近生产的任务，Harness 越不像 prompt 模板，越像一个小型控制平面。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/agent-harness-engineering-long-running-agents-2026/imgs/production-control-plane.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/agent-harness-engineering-long-running-agents-2026/imgs/production-control-plane_hu_e04f572d0f946132.png 480w, https://blog.ccino.org/p/agent-harness-engineering-long-running-agents-2026/imgs/production-control-plane_hu_8ce3779e3070c907.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;生产级 Agent Harness 更像控制平面，连接工具、权限、日志、测试和人工审批&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;这也是为什么 Anthropic 的示例里会强调 Playwright。浏览器验证不是为了炫技，而是代表一种朴素的工程态度：不要听 Agent 说页面能用，打开它，点它，看它是不是真的能用。&lt;/p&gt;
&lt;h2 id=&#34;不是再写一句请认真测试&#34;&gt;不是再写一句“请认真测试”
&lt;/h2&gt;&lt;p&gt;过去几年，我们很习惯用 prompt 解决 AI 问题。&lt;/p&gt;
&lt;p&gt;模型不认真，就写“你是资深工程师”。模型会偷懒，就写“不要偷懒”。模型容易漏测，就写“请仔细测试”。模型容易幻觉，就写“如果不知道请说不知道”。&lt;/p&gt;
&lt;p&gt;这些提示不是完全没用，但它们有明显上限。&lt;/p&gt;
&lt;p&gt;任务短的时候，prompt 可以起到约束作用。任务一长，问题就会转移到系统层：模型什么时候该停？它如何知道自己偏题了？谁来判断完成标准？上下文太长时哪些信息应该保留？工具权限如何收紧？失败经验如何沉淀到下一次？&lt;/p&gt;
&lt;p&gt;这些问题不是一句“请认真一点”能解决的。&lt;/p&gt;
&lt;p&gt;举个最简单的例子。&lt;/p&gt;
&lt;p&gt;如果你不希望 Agent 在没跑测试的情况下声称完成，最弱的方法是在 prompt 里写“请务必运行测试”。稍强一点，是给它一个完成检查清单。再强一点，是在 workflow 里要求测试命令必须成功。更进一步，是用 hook 或 CI 把测试失败直接变成无法通过的状态。&lt;/p&gt;
&lt;p&gt;前面是提醒，后面是制度。&lt;/p&gt;
&lt;p&gt;AI Agent 真要进生产，可靠性最终还是要靠制度，而不是靠提醒。&lt;/p&gt;
&lt;h2 id=&#34;先别急着堆多-agent&#34;&gt;先别急着堆多 Agent
&lt;/h2&gt;&lt;p&gt;看到 Planner / Generator / Evaluator 这种架构，很容易得出一个粗糙结论：多 Agent 更强。&lt;/p&gt;
&lt;p&gt;我觉得这反而容易把人带偏。&lt;/p&gt;
&lt;p&gt;Anthropic 的实验里有个细节很重要：随着模型能力增强，他们会删掉一些不再必要的 Harness 结构。也就是说，Harness 不是越复杂越好。每个组件都应该证明自己还有价值。&lt;/p&gt;
&lt;p&gt;对普通开发者来说，这一点更实际。&lt;/p&gt;
&lt;p&gt;不要一上来就设计五个 Agent、十个角色、二十个工具。很多时候，你需要先看清楚它到底在哪里失败。&lt;/p&gt;
&lt;p&gt;经常误解需求，就加需求澄清。经常写完不测，就加测试门禁。经常说完成但页面不能用，就加浏览器验证。经常被上下文污染，就把任务拆小，写 handoff 文件，必要时重置上下文。经常执行危险命令，就收权限，加人工确认。&lt;/p&gt;
&lt;p&gt;Harness 的本质不是画出漂亮架构图，而是把真实失败固化成流程。&lt;/p&gt;
&lt;p&gt;O&amp;rsquo;Reilly 那篇文章里有个原则很实用：每一次错误都应该变成一条规则。当然，这不是说把所有偶发问题都塞进文档，而是把反复出现、代价明确的失败，沉淀成可执行的约束。&lt;/p&gt;
&lt;p&gt;Prompt 技巧追求的是一次性效果。Harness 工程追求的是可重复、可调试、可继承。&lt;/p&gt;
&lt;p&gt;这两者不是一个层级的问题。&lt;/p&gt;
&lt;h2 id=&#34;ai-生码率会误导管理者&#34;&gt;“AI 生码率”会误导管理者
&lt;/h2&gt;&lt;p&gt;BestBlogs 今日精选里还有一条 InfoQ 中文的线索：阿里云 CIO 复盘 AI 提效时，拒绝把“AI 生码率”纳入考核。&lt;/p&gt;
&lt;p&gt;这个判断和 Harness 话题可以放在一起看。&lt;/p&gt;
&lt;p&gt;如果只看 AI 生成了多少代码，很容易鼓励错误行为。Agent 可以生成很多行代码，但这些代码可能增加维护负担，可能没有测试，可能绕开原有架构，也可能只是把简单问题复杂化。&lt;/p&gt;
&lt;p&gt;软件工程的目标不是更多代码，而是更稳定地交付价值。&lt;/p&gt;
&lt;p&gt;Harness 关心的也不是 Agent 写了多少，而是它有没有按正确流程完成任务：需求是否清楚，变更是否最小，测试是否通过，风险是否可控，失败是否可追踪，结果是否能被验收。&lt;/p&gt;
&lt;p&gt;当 AI 编程从个人尝鲜进入团队生产，管理者不能只问“用了多少 AI”“生成了多少代码”。更该问的是：AI 参与的变更有没有更高缺陷率？哪些任务适合 Agent？哪些权限不该开放？哪些失败模式反复出现？哪些规则已经自动化？&lt;/p&gt;
&lt;p&gt;这些问题都不是模型排行榜能回答的。&lt;/p&gt;
&lt;p&gt;答案大多在 Harness 里。&lt;/p&gt;
&lt;h2 id=&#34;下一代-ai-工程师不只是写-prompt-的人&#34;&gt;下一代 AI 工程师，不只是写 Prompt 的人
&lt;/h2&gt;&lt;p&gt;如果说 2023 年大家争着学 Prompt Engineering，2025 年开始谈 Context Engineering，那么接下来 AI 工程里会越来越多出现一种新工作：给 Agent 设计 Harness。&lt;/p&gt;
&lt;p&gt;这个角色不一定真的叫 Harness Engineer，但工作内容会越来越清楚。&lt;/p&gt;
&lt;p&gt;他不只是写 prompt，也不只是接模型 API。他要知道怎么给 Agent 设计工具，怎么控制权限，怎么构造上下文，怎么记录 trace，怎么写评估标准，怎么接入测试和浏览器，怎么把失败反馈变成下一轮改进。&lt;/p&gt;
&lt;p&gt;他关心的不是“让 AI 回答得更漂亮”，而是“让 AI 在真实流程里更可靠”。&lt;/p&gt;
&lt;p&gt;这也是开发者可以从 Anthropic 这次实验里带走的东西。&lt;/p&gt;
&lt;p&gt;不要把 Harness 理解成大公司的复杂玩具。你自己的项目里也可以有很小的 Harness：一份清晰的 &lt;code&gt;CLAUDE.md&lt;/code&gt;，一个必须运行的测试命令，一个禁止删除数据的权限规则，一个 PR 前检查清单，一个用浏览器验证关键路径的步骤。&lt;/p&gt;
&lt;p&gt;这些东西单独看都不酷，但它们决定了 Agent 是偶尔惊艳的助手，还是可以反复使用的工程成员。&lt;/p&gt;
&lt;p&gt;模型会继续变强。某些脚手架会被删掉，某些流程会变简单。但只要 Agent 开始替人连续行动，我们就绕不开那个问题：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;你准备用什么系统来相信它？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Harness 的意义就在这里。&lt;/p&gt;
&lt;p&gt;它不是再给 AI 多写几句提示词，而是给 AI 装上刹车、仪表盘、验收员和事故复盘机制。&lt;/p&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.anthropic.com/engineering/harness-design-long-running-apps&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Harness design for long-running application development&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/anthropics/cwc-long-running-agents&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;anthropics/cwc-long-running-agents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.oreilly.com/radar/agent-harness-engineering/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Agent Harness Engineering&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://thenewstack.io/agent-harness-distributed-feedback-problem/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Why agent harnesses fail inside cloud-native systems&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://venturebeat.com/orchestration/claude-codes-goals-separates-the-agent-that-works-from-the-one-that-decides-its-done&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic&amp;rsquo;s Claude Code adds a built-in evaluator to catch agents that quit too soon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.infoq.com/news/2026/04/anthropic-three-agent-harness-ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;InfoQ: Anthropic Designs Three-Agent Harness Supports Long-Running Full-Stack AI Development&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>AI 写代码已经不稀奇，真正拖慢团队的是审 PR</title>
        <link>https://blog.ccino.org/p/ai-code-assistant-pr-review-bottleneck-2026/</link>
        <pubDate>Sun, 17 May 2026 20:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/ai-code-assistant-pr-review-bottleneck-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/ai-code-assistant-pr-review-bottleneck-2026/imgs/cover.png" alt="Featured image of post AI 写代码已经不稀奇，真正拖慢团队的是审 PR" /&gt;
    &lt;blockquote&gt;
        &lt;p&gt;说明：这篇文章基于 Reddit r/ClaudeAI 里一条关于 “Reviewing AI-generated pull requests in 2026” 的社区讨论，以及 YouTube、X 上近期围绕 Claude Code、AI coding workflow 的公开内容整理而成。Reddit 赞数、评论数和社交媒体热度只代表社区讨论强度，不等同于行业统计。本文重点讨论工程流程变化，不评价某个具体 AI 编程工具的能力上限。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;过去一年，AI 编程工具的主叙事一直很直接：它到底能不能写代码？&lt;/p&gt;
&lt;p&gt;从 Cursor 到 Claude Code，从 Codex CLI 到各种 agentic coding 工具，大家最容易被吸引的都是那种演示：输入一句需求，工具读项目、改文件、跑测试，最后给你一个看起来能用的功能。&lt;/p&gt;
&lt;p&gt;这个阶段很像早期看自动驾驶视频。车能自己跑起来，已经足够让人兴奋。&lt;/p&gt;
&lt;p&gt;但一旦你真的把它放进日常工作，问题就会变得没那么浪漫。AI 能写代码以后，团队最先感受到的未必是“开发速度翻倍”，而是另一个更麻烦的变化：代码来得太快了，没人有足够时间判断它该不该进主干。&lt;/p&gt;
&lt;p&gt;Reddit r/ClaudeAI 最近有一条帖子叫 “Reviewing AI-generated pull requests in 2026”，获得了约 2700 个赞和 80 多条评论。这个标题很准确。社区讨论的重点已经不是“AI 能不能写”，而是“AI 写完以后，人类怎么审”。&lt;/p&gt;
&lt;p&gt;我觉得这才是 AI 编程真正进入工程现场的标志。&lt;/p&gt;
&lt;h2 id=&#34;代码产量上来了review-会先堵住&#34;&gt;代码产量上来了，review 会先堵住
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/ai-code-assistant-pr-review-bottleneck-2026/imgs/pr-review-bottleneck.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/ai-code-assistant-pr-review-bottleneck-2026/imgs/pr-review-bottleneck_hu_38ecbb6bb6a8c57e.png 480w, https://blog.ccino.org/p/ai-code-assistant-pr-review-bottleneck-2026/imgs/pr-review-bottleneck_hu_c27546ef7d98418f.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;AI 代码生成到 PR Review 的瓶颈示意图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;传统软件团队里，写代码和审代码之间有一种粗糙但可用的平衡。&lt;/p&gt;
&lt;p&gt;一个开发者一天能写出的 diff 有上限。需求要拆，环境要配，文档要查，测试要跑，线上历史包袱也要翻。哪怕 review 经常排队，输入量仍然被人的手速和注意力限制着。&lt;/p&gt;
&lt;p&gt;AI 代码助手把这个天然限速器拆掉了一部分。&lt;/p&gt;
&lt;p&gt;它不一定让每一行代码都更好，但它让代码变得非常便宜。脚手架、接口适配、测试样例、重构草稿，以前可能要半天，现在十几分钟就能铺出来。更夸张一点，一个人可以让几个 agent 同时处理不同分支，再把结果打包成 PR。&lt;/p&gt;
&lt;p&gt;站在个人视角，这是爽感。&lt;/p&gt;
&lt;p&gt;站在团队视角，这是输入洪水。&lt;/p&gt;
&lt;p&gt;过去 reviewer 看到一个 PR，会默认它背后有一个人花了几小时思考和实现。现在 reviewer 看到的可能是一个同事花十分钟提示 AI 生成的 1200 行 diff。PR 变多只是表层现象，更麻烦的是，PR 背后的思考密度开始变得不稳定。&lt;/p&gt;
&lt;p&gt;有些 AI diff 很干净，甚至比人写得规整。有些则像一份很会包装的作业：命名合理，结构像样，测试也有，但关键设计假设没人真的想过。&lt;/p&gt;
&lt;p&gt;这会制造一种新的 review 疲劳。你不是看不懂代码，而是不知道该相信它到什么程度。&lt;/p&gt;
&lt;h2 id=&#34;ai-pr-的麻烦在于看起来太像对的&#34;&gt;AI PR 的麻烦在于“看起来太像对的”
&lt;/h2&gt;&lt;p&gt;很多人以为，AI 生成的代码更规整，所以应该更好审。&lt;/p&gt;
&lt;p&gt;实际体验往往相反。&lt;/p&gt;
&lt;p&gt;人工写出的烂代码，经常会把问题暴露在脸上。命名混乱，结构别扭，重复明显，测试缺失。reviewer 很快就会警觉。&lt;/p&gt;
&lt;p&gt;AI 写出的烂代码更像“精装修”。函数拆得像那么回事，错误处理也有，测试能跑过，PR 描述甚至还挺完整。它最危险的地方不是粗糙，而是顺滑。&lt;/p&gt;
&lt;p&gt;你需要多问几句：这个改动解决的是不是原问题？它有没有引入新的状态分支？它是不是绕过了已有抽象？测试是在验证行为，还是只是在迎合当前实现？这个局部修复会不会变成下个月的维护成本？&lt;/p&gt;
&lt;p&gt;这些问题都不是靠“能编译”“测试绿了”就能回答的。&lt;/p&gt;
&lt;p&gt;AI PR 的难点不在语法，而在意图。&lt;/p&gt;
&lt;p&gt;审同事的代码时，你多少能从上下文里判断他的思路。他为什么这么改，他知不知道这块历史包袱，他有没有理解业务约束。如果不确定，还可以拉过来问两句。&lt;/p&gt;
&lt;p&gt;但 AI 生成的代码经常缺少这条思考链。提交者可能也只是确认了结果能跑，并没有完全吃透每个局部决策。于是 reviewer 面对的不是一个清楚表达意图的人，而是一段看起来已经完成的代码成品。&lt;/p&gt;
&lt;p&gt;这时审查难度反而上升了。你不仅要审代码，还要反向推断它背后的决策到底成不成立。&lt;/p&gt;
&lt;h2 id=&#34;让-ai-多写测试只能解决一部分问题&#34;&gt;“让 AI 多写测试”只能解决一部分问题
&lt;/h2&gt;&lt;p&gt;遇到这个问题，很多人的第一反应是：那就让 AI 多写测试。&lt;/p&gt;
&lt;p&gt;当然应该让它写。AI 很适合补基础测试、生成回归用例、把遗漏路径暴露出来。问题是，测试并不会自动带来信任。&lt;/p&gt;
&lt;p&gt;AI 很擅长根据现有实现生成能通过的测试。它经常验证的是“代码现在就是这样跑的”，而不是“业务本来就应该这样跑”。如果需求被理解错了，测试也会跟着错。如果提示词里没有边界条件，它也不会凭空知道你线上最怕哪个异常分支。&lt;/p&gt;
&lt;p&gt;很多 AI 生成的测试还有一个特点：它们让人放心，但放心的理由不够扎实。&lt;/p&gt;
&lt;p&gt;测试文件变多了，覆盖率看起来上去了，CI 也绿了。可是 reviewer 仍然要判断：这些测试有没有覆盖真实需求？有没有失败场景？有没有权限边界、并发、状态迁移？未来同类问题再出现时，它们能不能真的拦住？&lt;/p&gt;
&lt;p&gt;如果没人做这层判断，测试越多，虚假的安全感也越强。&lt;/p&gt;
&lt;h2 id=&#34;reviewer-的工作会越来越像系统设计守门&#34;&gt;reviewer 的工作会越来越像系统设计守门
&lt;/h2&gt;&lt;p&gt;以前很多 code review 停留在局部层面。变量名好不好，重复代码要不要抽，边界条件有没有漏，接口是不是清晰。&lt;/p&gt;
&lt;p&gt;这些还重要，但 AI 会把 reviewer 往更上游推。&lt;/p&gt;
&lt;p&gt;因为底层实现越来越便宜，真正稀缺的是架构判断、边界感和取舍能力。一个 AI PR 最值得审的，往往不是某一行有没有写错，而是它有没有改变系统的形状。&lt;/p&gt;
&lt;p&gt;它可能为了修一个小 bug 新增一套抽象。可能在业务层和基础设施层之间制造反向依赖。可能把同步问题包成异步队列，却没有处理重试和幂等。也可能为了让测试通过，mock 掉了真正应该暴露的问题。&lt;/p&gt;
&lt;p&gt;这些事 AI 都能做得很自然。&lt;/p&gt;
&lt;p&gt;它会沿着提示词找最短路径，尽量交付一个能展示结果的实现。至于这个实现三个月后会不会变成包袱，它不会天然在意，除非你把这个约束明确写进去，并且真的检查它有没有做到。&lt;/p&gt;
&lt;p&gt;所以 AI 编程时代的 reviewer 不只是代码检查员，更像系统设计守门人。&lt;/p&gt;
&lt;p&gt;他要判断的不是“这段代码能不能工作”，而是“这段代码进来以后，会不会让下一次修改更难”。&lt;/p&gt;
&lt;h2 id=&#34;最好的应对不是接受更多-pr而是压窄每个-pr&#34;&gt;最好的应对不是接受更多 PR，而是压窄每个 PR
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/ai-code-assistant-pr-review-bottleneck-2026/imgs/review-guardrails.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/ai-code-assistant-pr-review-bottleneck-2026/imgs/review-guardrails_hu_eb19404033d9f900.png 480w, https://blog.ccino.org/p/ai-code-assistant-pr-review-bottleneck-2026/imgs/review-guardrails_hu_6fcc1f58033bed71.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;AI 生成 PR 的审查护栏：问题边界、设计意图、风险点、测试覆盖、人工确认&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;AI 让代码产出变快以后，最直觉的做法是吞下更多 PR。&lt;/p&gt;
&lt;p&gt;我觉得这是危险的。&lt;/p&gt;
&lt;p&gt;更健康的方向可能是反过来：让每个 PR 变小，让每个改动更容易被解释。&lt;/p&gt;
&lt;p&gt;AI 可以负责探索，负责生成候选实现，负责补样板代码。但进入 review 流程时，团队应该主动收窄 diff。一个 AI-assisted PR 至少要说清楚：这次只解决什么问题，哪些文件是核心改动，哪些只是机械调整，AI 参与了哪些部分，人类确认过哪些设计决策。&lt;/p&gt;
&lt;p&gt;这不是流程洁癖。&lt;/p&gt;
&lt;p&gt;diff 变窄以后，reviewer 才能把注意力放在判断上，而不是被一大片“看起来都合理”的改动淹没。AI 可以扩大探索空间，但合并到主干之前，人类必须负责收敛。&lt;/p&gt;
&lt;p&gt;真正危险的不是 AI 写错一行代码。真正危险的是团队开始接受巨大、模糊、解释不清的 AI PR，然后把 review 变成例行点头。&lt;/p&gt;
&lt;h2 id=&#34;pr-描述会变成新的工程文档&#34;&gt;PR 描述会变成新的工程文档
&lt;/h2&gt;&lt;p&gt;过去很多团队的 PR 描述都很随意。&lt;/p&gt;
&lt;p&gt;“fix bug”“update logic”“refactor service” 这种标题大家都见过。只要 diff 不大，reviewer 还能靠读代码补上下文。&lt;/p&gt;
&lt;p&gt;AI 生成代码以后，这种习惯会越来越不够用。&lt;/p&gt;
&lt;p&gt;reviewer 需要先知道这次改动的意图是什么，AI 做了哪些假设，人类做过哪些验证，哪些地方还没有把握。否则他只能在代码里盲猜。&lt;/p&gt;
&lt;p&gt;我更愿意把未来的 PR 描述看成一份小型工程文档。它不需要很长，但要把几个关键点讲清楚：问题边界是什么，为什么选这个实现路径，跑过哪些验证，哪些风险还需要重点看。&lt;/p&gt;
&lt;p&gt;如果用了 AI，也最好说明哪些部分是生成、重写或大规模整理过的。&lt;/p&gt;
&lt;p&gt;这不是为了道德审判，也不是为了证明“我没有偷懒”。重点是协作。reviewer 知道哪些地方是 AI 大量参与的，才能合理分配注意力。如果提交者自己也说不清这些部分，那这个 PR 可能还不适合进入 review。&lt;/p&gt;
&lt;h2 id=&#34;没有团队的人也要给自己做-review&#34;&gt;没有团队的人，也要给自己做 review
&lt;/h2&gt;&lt;p&gt;这件事不只影响公司团队。&lt;/p&gt;
&lt;p&gt;很多独立开发者、内容创作者、自动化爱好者也在用 Claude Code 或类似工具快速做项目。没有同事 review，不代表 review 可以消失。&lt;/p&gt;
&lt;p&gt;个人项目反而更容易被 AI 的完成感骗到。&lt;/p&gt;
&lt;p&gt;页面能打开，接口能返回，脚本能跑，README 也写好了。看起来已经结束了。可真正的问题可能藏在错误处理、数据迁移、权限边界、部署脚本或者长期维护里。&lt;/p&gt;
&lt;p&gt;我现在更倾向于把个人项目的 AI 工作流拆成两段：先让 AI 尽情生成，再强制切到审查模式。&lt;/p&gt;
&lt;p&gt;审查模式里，不要急着继续补功能。先让 AI 总结本次 diff 的意图和风险点，再换一个会话或另一个模型从反方挑刺。然后只看关键路径文件，不要被大量辅助代码分散注意力。最后手动跑一次最接近真实使用场景的端到端流程。&lt;/p&gt;
&lt;p&gt;这套流程不复杂，但它能防止一个很常见的问题：你以为自己在开发，其实只是在不断接受 AI 给出的下一个补丁。&lt;/p&gt;
&lt;h2 id=&#34;ai-编程的竞争会转向验证能力&#34;&gt;AI 编程的竞争会转向验证能力
&lt;/h2&gt;&lt;p&gt;过去，AI 编程工具的竞争集中在生成能力。谁补全更准，谁改代码更快，谁能一次性完成更复杂的任务。&lt;/p&gt;
&lt;p&gt;接下来，验证能力会变得越来越重要。&lt;/p&gt;
&lt;p&gt;一个成熟的 AI 编程工作流，不能只回答“我能生成什么”。它还要回答：这段代码为什么这样写？有没有更简单的方案？风险在哪里？哪些测试证明它是对的？如果上线后出问题，怎么回滚？&lt;/p&gt;
&lt;p&gt;这也意味着，开发者的核心能力不会消失，只是位置会变化。&lt;/p&gt;
&lt;p&gt;以前你亲手写更多代码，所以价值体现在实现速度和细节熟练度。以后你可能写得少一些，但要更擅长定义问题、约束范围、识别风险、设计验证链路。&lt;/p&gt;
&lt;p&gt;AI 没有让工程判断变得不重要。&lt;/p&gt;
&lt;p&gt;它只是让缺乏工程判断的代码，以更快速度进入你的仓库。&lt;/p&gt;
&lt;h2 id=&#34;最后&#34;&gt;最后
&lt;/h2&gt;&lt;p&gt;“AI 会写代码”已经不新鲜了。&lt;/p&gt;
&lt;p&gt;真正的新问题是：当代码变得太容易生成，团队还有没有能力判断哪些代码值得留下。&lt;/p&gt;
&lt;p&gt;如果一个团队只是把 AI 当成更快的打字员，它很快会遇到 review 堵塞、测试失真、架构变形和责任模糊。&lt;/p&gt;
&lt;p&gt;如果一个团队把 AI 当成探索和生成工具，同时把人类注意力集中在意图、边界、验证和系统形状上，AI 才可能真正提升工程效率。&lt;/p&gt;
&lt;p&gt;未来程序员的工作不会只剩下“点接受”。更可能的情况是：AI 负责把可能性摊开，人类负责把不该进主干的可能性挡在门外。&lt;/p&gt;
&lt;p&gt;这听起来没有“一句话生成完整 App”那么兴奋，但它更接近真实的软件工程。&lt;/p&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/ClaudeAI/comments/1teuh5w/reviewing_aigenerated_pull_requests_in_2026/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reddit: Reviewing AI-generated pull requests in 2026&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=9dLOOBptVuI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;YouTube: AI Coding in 2026: Full Stack Apps Without Writing Everything Manually&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=JCJJTD5t8Yk&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;YouTube: MCP Demystified - Stir Trek 2026&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/thearslaniqbal/status/2055831079433675010&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;X: Claude Code shortcuts&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>数据中心正在成为 AI 最大的线下瓶颈</title>
        <link>https://blog.ccino.org/p/ai-datacenter-bottleneck-2026/</link>
        <pubDate>Sat, 16 May 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/ai-datacenter-bottleneck-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/ai-datacenter-bottleneck-2026/imgs/cover.jpeg" alt="Featured image of post 数据中心正在成为 AI 最大的线下瓶颈" /&gt;&lt;p&gt;过去聊 AI，大家很容易被模型本身吸走注意力。&lt;/p&gt;
&lt;p&gt;上下文又变长了，推理又变强了，Agent 又能多做几步了，视频生成又自然了一点。每一次发布会都像是在提醒你：软件还在狂飙。&lt;/p&gt;
&lt;p&gt;但我最近越来越觉得，AI 接下来的麻烦可能不在屏幕里，而在屏幕背后那些很笨重的东西上：电、地、冷却塔、变压器、机柜、并网审批，以及一座座没有什么科技感的数据中心。&lt;/p&gt;
&lt;p&gt;模型可以一夜之间更新，数据中心不行。&lt;/p&gt;
&lt;p&gt;如果说过去两年的问题是“模型够不够聪明”，那接下来几年更现实的问题会变成：&lt;strong&gt;这些越来越聪明的模型，到底有没有足够多、足够便宜、足够稳定的地方运行？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这就是我说数据中心正在成为 AI 最大线下瓶颈的原因。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;ai-的竞争已经不只是模型竞赛&#34;&gt;AI 的竞争，已经不只是模型竞赛
&lt;/h2&gt;&lt;p&gt;早期 AI 更像软件竞赛。&lt;/p&gt;
&lt;p&gt;谁的架构更漂亮，谁的数据清洗得更好，谁的训练技巧更极致，谁就可能在下一轮模型榜单里往前冲一截。研究能力、工程调参、数据质量，这些是牌桌上的主要筹码。&lt;/p&gt;
&lt;p&gt;大模型把这件事改了。&lt;/p&gt;
&lt;p&gt;训练前沿模型要成千上万张高端 GPU 长时间协同；一个被大量用户调用的 AI 产品，需要一直在线的推理集群；多模态、实时语音、视频生成、长上下文 Agent，又会继续把算力需求往上推。&lt;/p&gt;
&lt;p&gt;这些能力都要落到很具体的物理链条里：GPU 插进服务器，服务器放进机柜，机柜接上电和网络，热量要排出去，园区要拿到土地、许可和能源供应。&lt;/p&gt;
&lt;p&gt;AI 看上去在云端，但扩张速度越来越受地面约束。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/ai-datacenter-bottleneck-2026/imgs/data-center-capacity.jpeg&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/ai-datacenter-bottleneck-2026/imgs/data-center-capacity_hu_850f4b3a7fae4f7f.jpeg 480w, https://blog.ccino.org/p/ai-datacenter-bottleneck-2026/imgs/data-center-capacity_hu_fc102964338e1442.jpeg 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;从 GPU 到可用算力的物理链条&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;这和上一代互联网不太一样。搜索、社交、电商当然也吃数据中心，但一次请求的成本相对平滑。生成式 AI 更像把每一次用户交互都变成了一次实时计算。你问一句话，它不只是从数据库里取一条记录，而是在消耗 GPU 时间、电力和冷却资源。&lt;/p&gt;
&lt;p&gt;用户越希望 AI 像一个随叫随到的同事，基础设施侧就越像制造业：产能、良率、交付周期、单位成本，一个都绕不开。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;gpu-不是终点可用容量才是&#34;&gt;GPU 不是终点，可用容量才是
&lt;/h2&gt;&lt;p&gt;一谈 AI 基础设施，很多人会先想到 GPU 不够。&lt;/p&gt;
&lt;p&gt;这当然对。高端 GPU 供给紧张，HBM、先进封装、晶圆产能都会影响交付。但只盯着 GPU，容易把问题看窄。更大的难点是：&lt;strong&gt;GPU 到货以后，能不能尽快变成稳定可用的算力。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;一张 GPU 本身不是生产力。它要和服务器、网络、供电、冷却、机房运维、调度系统、软件栈一起工作。只要其中一个环节慢，账面上的芯片库存就还不是模型能力。&lt;/p&gt;
&lt;p&gt;我觉得这里最容易被低估的是三件事。&lt;/p&gt;
&lt;p&gt;电力排第一。&lt;/p&gt;
&lt;p&gt;AI 服务器的功耗密度远高于传统机房。过去一个机柜几千瓦、十几千瓦已经不低，到了 AI 集群时代，高密度机柜会直接挑战配电、UPS、变压器和冷却系统。问题不只是电费贵不贵，而是当地电网能不能给你这么多稳定电力。&lt;/p&gt;
&lt;p&gt;冷却排第二。&lt;/p&gt;
&lt;p&gt;GPU 集群产生的热量不是普通空调随便吹一吹就能解决的。风冷还能用，但液冷、冷板、浸没式冷却正在从“高端配置”变成越来越现实的选项。冷却跟不上，性能、稳定性和硬件寿命都会被拖下水。&lt;/p&gt;
&lt;p&gt;第三是建设周期。&lt;/p&gt;
&lt;p&gt;软件可以今天写、明天发版，数据中心不行。选址、审批、采购、施工、并网、调试，每一步都可能按月计算。AI 公司如果等需求已经爆了再补基础设施，基本就晚了。&lt;/p&gt;
&lt;p&gt;所以 AI 产业的问题正在从“有没有芯片”，变成“有没有足够强的工程和供应链能力，把芯片变成稳定在线的算力”。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;推理可能比训练更难扛&#34;&gt;推理可能比训练更难扛
&lt;/h2&gt;&lt;p&gt;外界谈大模型成本，最容易记住训练。&lt;/p&gt;
&lt;p&gt;某家公司用了多少 GPU，训练了多少天，花了多少钱。这些数字很适合写进新闻标题，也确实昂贵。但从长期看，更持久压住数据中心容量的，可能是推理。&lt;/p&gt;
&lt;p&gt;训练像建厂，推理像开工。&lt;/p&gt;
&lt;p&gt;模型训练完，如果只是实验室成果，成本到这里基本就停了。可一旦它变成 ChatGPT、Claude、Gemini、Copilot、企业客服、代码助手、搜索入口、办公套件里的 AI 功能，推理成本就会随着每一次调用不断发生。&lt;/p&gt;
&lt;p&gt;而且用户对 AI 的期待还在变重。&lt;/p&gt;
&lt;p&gt;短文本问答已经不够了。用户希望 AI 读完整个代码库，分析几十页文档，实时处理语音，看懂图片，生成视频，调用工具，维持长期记忆，最好还能像同事一样连续干几个小时。&lt;/p&gt;
&lt;p&gt;这一下味道就变了。&lt;/p&gt;
&lt;p&gt;一次用户请求，背后可能是多轮规划、检索、模型调用、工具执行、结果验证。你看到的是一个回答，基础设施侧看到的是一串 GPU 账单。&lt;/p&gt;
&lt;p&gt;这也是为什么推理优化会变成硬仗。模型蒸馏、缓存、路由、小模型协同、专用芯片、量化、批处理、边缘推理，本质上都在解决同一个问题：怎么用有限的数据中心容量，撑住更多真实需求。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;能源会变成-ai-公司的隐形护城河&#34;&gt;能源会变成 AI 公司的隐形护城河
&lt;/h2&gt;&lt;p&gt;以前评价一家 AI 公司，常看模型能力、产品体验、人才密度、融资规模。&lt;/p&gt;
&lt;p&gt;接下来可能还要加一条：它有没有能源能力。&lt;/p&gt;
&lt;p&gt;这里说的能源能力，不是简单地付得起电费，而是能不能长期、稳定、低成本地拿到可扩展电力。电力合同、可再生能源配置、区域电价、并网速度、备用电源、碳排约束，都会慢慢进入 AI 竞争的核心账本。&lt;/p&gt;
&lt;p&gt;这会让产业格局变得更现实。&lt;/p&gt;
&lt;p&gt;云厂商天然占优，因为它们本来就有全球数据中心网络、基础设施团队和资本开支经验。大型科技公司也占优，因为它们可以提前锁土地、锁电力、锁供应链。反过来，纯模型创业公司即使研究能力很强，也可能在扩张阶段被基础设施卡住。&lt;/p&gt;
&lt;p&gt;模型能力可以通过论文、人才流动和开源社区扩散得很快，数据中心能力没那么容易复制。&lt;/p&gt;
&lt;p&gt;你可以挖研究员，可以买 API，可以复现训练方法；但你不能凭空变出一座已经并网、已经冷却、已经部署好高密度 GPU 的数据中心。&lt;/p&gt;
&lt;p&gt;所以能源和数据中心会成为新的护城河。它不如模型榜单显眼，但更接近产业竞争的底层现实。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;中美电力格局会影响-ai-产业节奏&#34;&gt;中美电力格局会影响 AI 产业节奏
&lt;/h2&gt;&lt;p&gt;聊 AI 数据中心，不能只看全球总量，还要看电力结构。美国和中国是两个最关键的 AI 市场，但它们面对的电力约束并不一样。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/ai-datacenter-bottleneck-2026/imgs/china-us-power-grid.jpeg&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/ai-datacenter-bottleneck-2026/imgs/china-us-power-grid_hu_359db1b62f95dc38.jpeg 480w, https://blog.ccino.org/p/ai-datacenter-bottleneck-2026/imgs/china-us-power-grid_hu_461d9bfeb3f6ede.jpeg 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;中美 AI 数据中心电力格局&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;美国的问题更像是“新增负荷突然回来了”。&lt;/p&gt;
&lt;p&gt;过去十多年，美国整体电力需求增长相对平缓，电网、发电侧和输电侧都习惯了低速增长。AI 数据中心、制造业回流、电动车和电气化一起出现后，负荷曲线突然变陡。EIA 的短期展望也提到，商业部门是美国电力需求增长的重要来源，其中就包括数据中心；Texas 等地区还同时承接了数据中心和制造业增长。&lt;/p&gt;
&lt;p&gt;美国的优势是天然气发电占比高，调峰能力相对灵活，数据中心也更容易通过长期购电协议锁定风电、光伏和核电。但短板也明显：输电项目审批和建设周期长，很多数据中心不是缺理论电量，而是缺足够快接入电网的能力。对 AI 公司来说，选址会越来越像能源项目选址，不只是离用户近不近，也要看当地有没有可用电力、输电容量和政策配合。&lt;/p&gt;
&lt;p&gt;中国的情况更像是“总量强，但结构和空间错配”。&lt;/p&gt;
&lt;p&gt;中国有全球最大的电力系统，煤电提供了很强的基础负荷能力，风光装机增长也非常快。这个组合让中国在承接大规模算力时有一个明显优势：电力供给的绝对规模足够大，工程建设和产业配套速度也快。&lt;/p&gt;
&lt;p&gt;但中国的难点在于东部需求和西部能源之间的距离。AI 应用、互联网企业、金融和制造业客户更多集中在东部沿海，而便宜电力、土地、风光资源和自然冷却条件更多在西部、北部。于是“东数西算”的逻辑就出来了：把一部分对时延不那么敏感的训练、离线分析、批处理任务放到西部，把需要低时延交互的推理和业务系统留在靠近用户的区域。&lt;/p&gt;
&lt;p&gt;这会带来一个很现实的分工：训练可以更远，推理最好更近。&lt;/p&gt;
&lt;p&gt;大模型训练任务对时延不敏感，更适合放在电价低、土地足、冷却条件好的地方；但搜索增强、办公助手、代码补全、语音交互这类在线推理，对网络延迟和服务稳定性更敏感，很难全部搬到偏远地区。也就是说，中国能通过算力枢纽缓解一部分压力，但不可能把所有 AI 负载都简单“西迁”。&lt;/p&gt;
&lt;p&gt;中美还有一个共同点：AI 数据中心都会倒逼电力系统更市场化、更精细化。&lt;/p&gt;
&lt;p&gt;过去数据中心关心的是 PUE，是机房内部效率。接下来更关键的是“算电协同”：什么时候训练，在哪里训练，用什么电训练，能不能跟风光出力、储能、峰谷电价和电网调度配合。谁能把算力任务调度和电力系统调度结合起来，谁就能把同样一度电榨出更多模型能力。&lt;/p&gt;
&lt;p&gt;所以，中美竞争不只是模型竞争，也不是简单的 GPU 竞争。美国要解决并网、输电和新负荷增长问题；中国要解决能源空间分布、低碳转型和东西部算力协同问题。两边都绕不开电力，只是瓶颈长得不一样。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;基础设施约束会改写产品形态&#34;&gt;基础设施约束会改写产品形态
&lt;/h2&gt;&lt;p&gt;数据中心瓶颈不会只留在后台，它会一路传导到产品设计里。&lt;/p&gt;
&lt;p&gt;免费 AI 会越来越难维持。只要每一次高质量回答都对应真实计算成本，平台就必须在体验和成本之间做选择。免费用户看到的限额、更慢的响应、更弱的模型，甚至广告和商业化设计，本质上都是算力账单在前台露头。&lt;/p&gt;
&lt;p&gt;模型路由会变成默认能力。不是所有问题都值得上最强模型。简单任务交给小模型，复杂任务交给大模型；本地能处理的在本地处理，必须上云的再上云；低价值请求压成本，高价值请求保质量。未来很多 AI 产品表面是聊天框，里面其实是调度系统。&lt;/p&gt;
&lt;p&gt;企业 AI 也会重新评估私有化和混合部署。把所有请求都扔给云端大模型，早期最省事，但调用量起来以后不一定最划算。代码、客服、文档分析、内部知识库这些高频场景，只要规模足够大，本地化或者专属实例就会重新进入讨论。&lt;/p&gt;
&lt;p&gt;产品设计也会变克制。视频生成、实时语音、多 Agent 协作、长时任务执行，都不是“能做就上”。每一个功能背后都有成本曲线。基础设施越紧，产品经理越不能只看酷不酷，还要看单位算力能不能换来足够价值。&lt;/p&gt;
&lt;p&gt;AI 产品会从炫技优先，慢慢转向算力效率优先。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;开发者和创业者要提前算这笔账&#34;&gt;开发者和创业者要提前算这笔账
&lt;/h2&gt;&lt;p&gt;这个趋势看起来是巨头之间的战争，但普通开发者和创业者也躲不开。&lt;/p&gt;
&lt;p&gt;如果你在做 AI 应用，不能只看模型效果。一个 demo 用最强模型跑得很惊艳，不代表它能在真实用户规模下成立。早期就要设计降级策略、缓存、任务队列、异步处理和成本监控。&lt;/p&gt;
&lt;p&gt;如果你在做企业方案，混合架构会越来越重要。规则能解决的不上模型，小模型能解决的不上大模型，低敏数据上云，高敏数据留在本地。这个思路听起来不性感，但它决定项目能不能长期跑下去。&lt;/p&gt;
&lt;p&gt;如果你是个人开发者，以后也会看到更多“算力分层”的产品体验。免费层、标准层、专业层之间的差异，不只是功能权限，而是真实算力资源的差异。&lt;/p&gt;
&lt;p&gt;如果你关注 AI 产业链，视野也可以从模型公司往外挪一点。数据中心、能源、冷却、芯片封装、网络设备、调度软件，都可能成为下一阶段更扎实的位置。AI 的机会不一定只在“做一个更聪明的模型”，也在“让模型跑得更便宜、更稳定、更规模化”。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;ai-进入了更重的阶段&#34;&gt;AI 进入了更重的阶段
&lt;/h2&gt;&lt;p&gt;数据中心成为瓶颈，不一定说明 AI 要熄火。&lt;/p&gt;
&lt;p&gt;我反而觉得，这是 AI 从实验室技术变成工业系统的信号。只有需求真的起来，基础设施才会紧；只有用户持续使用，推理成本才会变成核心问题；只有产品进入办公、编程、客服、教育和内容生产这些日常场景，电力和机房才会突然显得这么重要。&lt;/p&gt;
&lt;p&gt;很多技术都是这样走过来的。&lt;/p&gt;
&lt;p&gt;早期大家问能不能实现，中期问能不能规模化交付，后期才开始拼单位成本、网络覆盖和供应链稳定性。铁路、电网、云计算、移动互联网，都有类似的阶段转换。&lt;/p&gt;
&lt;p&gt;AI 现在大概正在跨过这个分水岭。&lt;/p&gt;
&lt;p&gt;未来几年，模型能力当然还会继续进步。但决定 AI 普及速度的，不只是实验室里的下一代架构，也包括现实世界里的变电站、冷却塔、土地审批、光纤网络和数据中心工程队。&lt;/p&gt;
&lt;p&gt;AI 的故事不再只发生在云端。&lt;/p&gt;
&lt;p&gt;它也发生在一座座沉默的机房里，发生在电网负荷曲线里，发生在每一度电、每一台服务器、每一次并网审批和每一个机柜的散热能力里。&lt;/p&gt;
&lt;p&gt;限制 AI 能跑多远的，可能不是发布会上的参数，而是这些不太上镜的线下基础设施。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;IEA：《&lt;a class=&#34;link&#34; href=&#34;https://www.iea.org/reports/electricity-2024&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Electricity 2024&lt;/a&gt;》及执行摘要中关于数据中心、AI 和加密货币用电需求到 2026 年可能翻倍的预测。&lt;/li&gt;
&lt;li&gt;IEA：《&lt;a class=&#34;link&#34; href=&#34;https://www.iea.org/reports/energy-and-ai/energy-supply-for-ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Energy supply for AI&lt;/a&gt;》，关于数据中心相关发电需求从 2024 年约 460 TWh 增长至 2030 年超过 1,000 TWh 的情景分析。&lt;/li&gt;
&lt;li&gt;Goldman Sachs：《&lt;a class=&#34;link&#34; href=&#34;https://goldmansachs.com/insights/articles/AI-poised-to-drive-160-increase-in-power-demand&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AI is poised to drive 160% increase in data center power demand&lt;/a&gt;》，关于 AI 推动数据中心电力需求增长的研究。&lt;/li&gt;
&lt;li&gt;Goldman Sachs：《&lt;a class=&#34;link&#34; href=&#34;https://www.goldmansachs.com/insights/articles/ai-to-drive-165-increase-in-data-center-power-demand-by-2030&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AI to drive 165% increase in data center power demand by 2030&lt;/a&gt;》，关于全球数据中心功率需求、AI 工作负载占比和电网投资瓶颈的分析。&lt;/li&gt;
&lt;li&gt;McKinsey：《&lt;a class=&#34;link&#34; href=&#34;https://www.mckinsey.com/industries/technology-media-and-telecommunications/our-insights/ai-power-expanding-data-center-capacity-to-meet-growing-demand&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AI power: Expanding data center capacity to meet growing demand&lt;/a&gt;》，关于全球数据中心容量需求到 2030 年可能快速增长的测算。&lt;/li&gt;
&lt;li&gt;McKinsey：《&lt;a class=&#34;link&#34; href=&#34;https://www.mckinsey.com/industries/private-capital/our-%20insights/how-data-centers-and-the-energy-sector-can-sate-ais-hunger-for-power&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How data centers and the energy sector can sate AI’s hunger for power&lt;/a&gt;》，关于美国数据中心电力需求、能源基础设施和投资机会的分析。&lt;/li&gt;
&lt;li&gt;U.S. EIA：《&lt;a class=&#34;link&#34; href=&#34;https://www.eia.gov/outlooks/steo/report/elec_coal_renew.php&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Short-Term Energy Outlook: Electricity, Coal, and Renewables&lt;/a&gt;》，关于美国电力需求、商业部门增长和数据中心相关负荷的预测。&lt;/li&gt;
&lt;li&gt;U.S. EIA：《&lt;a class=&#34;link&#34; href=&#34;https://www.eia.gov/todayinenergy/detail.php?id=64364&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;New solar plants expected to support most U.S. electric generation growth&lt;/a&gt;》，关于美国天然气、煤电和可再生能源发电结构的说明。&lt;/li&gt;
&lt;li&gt;中国信通院：《&lt;a class=&#34;link&#34; href=&#34;https://mp.weixin.qq.com/s/COB_7eLIGjUJFXkz5-fhrg&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;中国绿色算力发展研究报告（2024年）&lt;/a&gt;》，关于中国数据中心机架规模、用电量、PUE 和绿色算力发展的测算。&lt;/li&gt;
&lt;li&gt;中国信通院：《&lt;a class=&#34;link&#34; href=&#34;https://www.caict.ac.cn/kxyj/qwfb/ztbg/202507/P020250724397149741659.pdf&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;绿色算力发展研究报告（2025年）&lt;/a&gt;》，关于 2024 年中国数据中心用电量、PUE、绿电使用和算能协同的分析。&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>AI Agent 的下一个封装单位，不是 App，而是 Skill Market</title>
        <link>https://blog.ccino.org/p/ai-agent-skill-market-supply-chain-2026/</link>
        <pubDate>Sat, 16 May 2026 09:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/ai-agent-skill-market-supply-chain-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/ai-agent-skill-market-supply-chain-2026/imgs/cover.png" alt="Featured image of post AI Agent 的下一个封装单位，不是 App，而是 Skill Market" /&gt;&lt;p&gt;过去讨论 AI Agent，我们总喜欢把它想象成一个“超级应用”。&lt;/p&gt;
&lt;p&gt;一个入口，接上你的文件、浏览器、代码仓库、数据库、公司系统，然后替你完成所有事情。听起来很像下一代操作系统，也很像每家 AI 公司都想讲的故事。&lt;/p&gt;
&lt;p&gt;但最近几个开源项目释放出另一个信号：AI Agent 的下一个关键封装单位，可能不是 App，而是 Skill。&lt;/p&gt;
&lt;p&gt;更准确地说，是 Skill Market。&lt;/p&gt;
&lt;p&gt;这次值得关注的不是某一个新模型，也不是某一个 Agent 工具的功能更新，而是 GitHub Trending 上同时出现了几类 Agent Skills 项目。比如 &lt;code&gt;obra/superpowers&lt;/code&gt; 把 TDD、需求澄清、代码审查、worktree、收尾流程封装成 coding agent 可以自动触发的技能；&lt;code&gt;K-Dense-AI/scientific-agent-skills&lt;/code&gt; 则提供 135 个科研与研究类技能，覆盖 PubChem、ChEMBL、UniProt、ClinicalTrials.gov、RDKit、Scanpy、BioPython、Qiskit 等数据库和工具链。&lt;/p&gt;
&lt;p&gt;如果只看表面，这像是“更多 prompt 模板”。&lt;/p&gt;
&lt;p&gt;但这其实是一个更大的变化：AI Agent 的能力正在从“模型本身有多聪明”，转向“谁拥有更多可迁移、可组合、可审计的工作流模块”。&lt;/p&gt;
&lt;p&gt;换句话说，AI Agent 生态可能正在重演一段历史：浏览器曾经靠插件扩展能力，手机曾经靠 App Store 建立生态，今天的 Agent 可能要靠 Skill Market 完成同样的事。&lt;/p&gt;
&lt;h2 id=&#34;skill-为什么会变成市场&#34;&gt;Skill 为什么会变成市场
&lt;/h2&gt;&lt;p&gt;之前我写过一篇文章，把 Agent Skills 称为 AI Agent 经济里最被低估的“最小封装单元”。那篇文章重点解释 Skill 和 prompt、rules、MCP 的区别。&lt;/p&gt;
&lt;p&gt;现在问题可以往前推一步：当 Skill 不再只是个人写给自己的工作流，而是开始跨工具、跨团队、跨平台分发时，它就不再只是“封装单元”，而会变成一种市场。&lt;/p&gt;
&lt;p&gt;原因很简单。Skill 有三个特点，天然适合市场化。&lt;/p&gt;
&lt;p&gt;第一，它足够小。&lt;/p&gt;
&lt;p&gt;一个 Skill 不必是完整应用。它可以只是“写代码前先澄清需求”，也可以是“做安全审查时必须检查 prompt injection”，还可以是“把科研论文检索流程拆成数据库查询、文献筛选、引用整理和图表生成”。&lt;/p&gt;
&lt;p&gt;这种颗粒度很适合组合。用户不需要安装一个庞大的 AI 工作台，只需要给自己的 Agent 装上几个具体能力。&lt;/p&gt;
&lt;p&gt;第二，它足够可迁移。&lt;/p&gt;
&lt;p&gt;Superpowers 的 README 明确列出多个适配对象：Claude Code、Codex CLI、Codex App、Factory Droid、Gemini CLI、OpenCode、Cursor、GitHub Copilot CLI。它的安装方式虽然因工具不同而不同，但底层逻辑是同一套：把一组工作流指令、触发条件和验证要求交给 coding agent。&lt;/p&gt;
&lt;p&gt;这很关键。&lt;/p&gt;
&lt;p&gt;App 往往绑定平台，Skill 更像一组可以搬走的流程资产。今天你用 Claude Code，明天换到 Codex 或 Cursor，只要目标工具支持类似的 instruction / plugin / skill 机制，你就有机会把能力迁过去。&lt;/p&gt;
&lt;p&gt;第三，它足够接近真实工作。&lt;/p&gt;
&lt;p&gt;普通 prompt 经常停留在“帮我生成一篇文章”“帮我重构这个函数”。Skill 则更像团队里的 SOP：什么情况下触发，先做什么，不能跳过什么，完成后拿什么证据证明。&lt;/p&gt;
&lt;p&gt;这使得 Skill 更像“可复用的同事经验”，而不是“临时的一句话提示”。&lt;/p&gt;
&lt;p&gt;当越来越多人开始沉淀这种经验，就一定会出现交换、安装、评价、分发和版本管理。市场不是被设计出来的，而是被复用需求推出来的。&lt;/p&gt;
&lt;h2 id=&#34;superpowers-暴露了-skill-market-的雏形&#34;&gt;Superpowers 暴露了 Skill Market 的雏形
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;obra/superpowers&lt;/code&gt; 有意思的地方，不只是它提供了一堆技能，而是它把软件开发方法论本身包装成了可安装插件。&lt;/p&gt;
&lt;p&gt;它的基本流程很清楚：Agent 不应该一启动就写代码，而是先退一步，问清楚你到底想做什么；等需求和设计被确认后，再写出足够具体的实现计划；进入开发阶段后，通过 subagent-driven-development、TDD、代码审查和收尾流程推进。&lt;/p&gt;
&lt;p&gt;这背后有一个判断：AI 编程最大的问题，不是 Agent 不会写代码，而是它太容易绕过工程纪律。&lt;/p&gt;
&lt;p&gt;人类开发者踩过很多坑，才知道为什么要先澄清需求，为什么不要把大任务一次性做完，为什么测试不是装饰，为什么 review 不能只看“能不能跑”。这些经验如果每次都靠用户临时提醒，Agent 很容易偷懒。Skill 的价值，就是把这些经验变成默认流程。&lt;/p&gt;
&lt;p&gt;更重要的是，Superpowers 已经开始呈现市场形态。&lt;/p&gt;
&lt;p&gt;它不仅支持 Claude Code 的官方插件市场，也提供自己的 Superpowers marketplace；同时又给 Codex、Factory Droid、Gemini CLI、OpenCode、Cursor、GitHub Copilot CLI 提供不同安装方式。&lt;/p&gt;
&lt;p&gt;这说明 Skill 不再只是某个工具内部的配置文件，而是在试图成为跨 Agent 平台的分发物。&lt;/p&gt;
&lt;p&gt;这和早期浏览器插件很像。&lt;/p&gt;
&lt;p&gt;最开始，插件只是少数高级用户用来补功能的小工具。后来，插件变成了浏览器生态的一部分：有市场，有评分，有权限提示，有恶意插件，有审核机制，有企业策略。今天的 Agent Skill 也在走类似路径，只是它比浏览器插件更敏感。&lt;/p&gt;
&lt;p&gt;浏览器插件改变的是网页行为。Agent Skill 改变的是 Agent 的决策行为。&lt;/p&gt;
&lt;p&gt;这个差别非常大。&lt;/p&gt;
&lt;h2 id=&#34;scientific-agent-skills-说明-skill-不只属于程序员&#34;&gt;Scientific Agent Skills 说明 Skill 不只属于程序员
&lt;/h2&gt;&lt;p&gt;如果只有 Superpowers，这个趋势还可以被理解成 AI 编程圈内部的工程化尝试。&lt;/p&gt;
&lt;p&gt;但 &lt;code&gt;K-Dense-AI/scientific-agent-skills&lt;/code&gt; 把边界推远了。&lt;/p&gt;
&lt;p&gt;这个项目提供的不是“如何写好代码”的技能，而是面向科研、工程、分析、金融和写作场景的 135 个技能。它覆盖科学数据库、科研 Python 包、实验平台、论文检索和科研写作。&lt;/p&gt;
&lt;p&gt;这说明 Skill 的目标不是让 Agent “更会聊天”，而是让 Agent 更会进入专业工作流。&lt;/p&gt;
&lt;p&gt;科研场景尤其典型。一个真正有用的科研 Agent，不能只会总结论文。它还要知道什么时候查 PubChem，什么时候用 ChEMBL，什么时候调用 RDKit，什么时候做文献综述，什么时候生成实验报告，什么时候提醒用户结果没有经过验证。&lt;/p&gt;
&lt;p&gt;这些能力很难靠一个通用 prompt 解决。&lt;/p&gt;
&lt;p&gt;因为专业工作不是单点问答，而是一连串带约束的操作。数据库有格式，工具有参数，论文有引用规范，实验有复现要求，结论有置信边界。把这些东西封装成 Skill，比让用户每次手写长 prompt 更可靠。&lt;/p&gt;
&lt;p&gt;这也意味着 Skill Market 不会只围绕程序员展开。&lt;/p&gt;
&lt;p&gt;未来可能会有面向法律的 Skill，面向财务审计的 Skill，面向医学文献的 Skill，面向视频制作的 Skill，面向销售线索分析的 Skill，面向企业内部知识库维护的 Skill。&lt;/p&gt;
&lt;p&gt;每个行业都有自己的隐性流程。Agent 进入行业，不是靠“模型什么都懂”，而是靠这些隐性流程被显性化、模块化、可安装化。&lt;/p&gt;
&lt;h2 id=&#34;真正的护城河是你的工作流资产&#34;&gt;真正的护城河，是你的工作流资产
&lt;/h2&gt;&lt;p&gt;如果把 AI Agent 生态拆开看，大概会有三层。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/ai-agent-skill-market-supply-chain-2026/imgs/agent-layers.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/ai-agent-skill-market-supply-chain-2026/imgs/agent-layers_hu_fec23cc060dd7597.png 480w, https://blog.ccino.org/p/ai-agent-skill-market-supply-chain-2026/imgs/agent-layers_hu_ecc217a048a8328a.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;AI Agent 三层生态结构&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;第一层是模型：Claude、GPT、Gemini、DeepSeek、Qwen。&lt;/p&gt;
&lt;p&gt;第二层是 Agent harness：Claude Code、Cursor、Codex、OpenCode、Windsurf、各种 IDE 插件和 CLI 工具。&lt;/p&gt;
&lt;p&gt;第三层是 Skill：你和团队沉淀出来的需求澄清、代码规范、测试策略、安全检查、写作流程、客户响应、数据分析方法。&lt;/p&gt;
&lt;p&gt;前两层你很难真正拥有。&lt;/p&gt;
&lt;p&gt;模型是厂商的，harness 也是厂商或开源社区的。你可以选择，但很难控制。模型会涨价，会限额，会换默认行为；工具会改 UI，会改变策略，会和其他平台竞争。&lt;/p&gt;
&lt;p&gt;但第三层有机会属于你。&lt;/p&gt;
&lt;p&gt;这就是 Skill Market 对个人和团队真正重要的地方。它不是让你多装几个“效率插件”，而是在提醒你：未来最值得沉淀的不是某次对话，而是能反复触发的工作流资产。&lt;/p&gt;
&lt;p&gt;一个团队如果把自己的开发流程写成 Skills，就不必每次新人入职都重新讲一遍规范；也不必每次换 Agent 工具都重新摸索最佳实践。一个内容团队如果把选题、资料抓取、事实核验、标题生成、发布检查写成 Skills，就可以把编辑经验变成可迭代资产。&lt;/p&gt;
&lt;p&gt;这种资产的价值不在于“让 AI 更听话”，而在于降低组织对单个模型和单个工具的依赖。&lt;/p&gt;
&lt;p&gt;当模型能力趋同，真正决定差异的可能不是谁的按钮更多，而是谁的工作流资产更厚。&lt;/p&gt;
&lt;h2 id=&#34;skill-market-的风险比-app-store-更复杂&#34;&gt;Skill Market 的风险比 App Store 更复杂
&lt;/h2&gt;&lt;p&gt;当然，Skill 一旦市场化，麻烦也会跟着来。&lt;/p&gt;
&lt;p&gt;App Store 时代，我们担心的是应用有没有恶意代码、有没有过度收集隐私、有没有欺骗付费。&lt;/p&gt;
&lt;p&gt;Skill Market 时代，问题会更微妙。&lt;/p&gt;
&lt;p&gt;因为 Skill 本质上是给 Agent 的行为指令。它未必包含传统意义上的可执行代码，却可能影响 Agent 如何读文件、如何调用工具、如何处理权限、如何判断任务完成、如何向用户解释风险。&lt;/p&gt;
&lt;p&gt;一个恶意 App 可能偷数据。一个恶意 Skill 可能让 Agent 在你不容易察觉的地方改变判断。&lt;/p&gt;
&lt;p&gt;比如，一个看起来是“代码效率提升”的 Skill，可能暗中要求 Agent 优先安装某个依赖；一个“SEO 写作 Skill”，可能把某个外部站点塞进参考链接；一个“自动发布 Skill”，可能弱化发布前确认；一个“安全审查 Skill”，可能故意忽略某类风险。&lt;/p&gt;
&lt;p&gt;这不是危言耸听。Agent 的危险不只来自执行命令，也来自被改变目标函数。&lt;/p&gt;
&lt;p&gt;所以 Skill Market 必须面对几个治理问题。&lt;/p&gt;
&lt;p&gt;首先是来源可信度。谁写的 Skill？有没有版本历史？有没有被社区审查？有没有清楚说明触发条件和权限边界？&lt;/p&gt;
&lt;p&gt;其次是可读性。Skill 不能像传统软件那样只给二进制包。它最好是可读文本，用户和团队能审查它到底要求 Agent 做什么。&lt;/p&gt;
&lt;p&gt;第三是权限模型。一个 Skill 是否允许调用外部 API？是否允许写文件？是否允许发布内容？是否允许改配置？这些不能只靠一句“安装即同意”。&lt;/p&gt;
&lt;p&gt;第四是冲突处理。当多个 Skill 同时触发，一个要求保守，一个要求快速执行，一个要求自动提交，一个要求用户确认，Agent 应该听谁的？&lt;/p&gt;
&lt;p&gt;这些问题如果不解决，Skill Market 很快会变成新的供应链风险入口。&lt;/p&gt;
&lt;p&gt;过去我们说 npm、PyPI、VS Code 插件、浏览器扩展存在供应链风险。未来，Agent Skills 也会加入这个列表。&lt;/p&gt;
&lt;p&gt;区别在于，传统依赖污染的是代码执行链，Skill 污染的是 Agent 决策链。&lt;/p&gt;
&lt;h2 id=&#34;企业会需要私有-skill-registry&#34;&gt;企业会需要私有 Skill Registry
&lt;/h2&gt;&lt;p&gt;因此，我不太相信严肃团队会长期只依赖公共 Skill Market。&lt;/p&gt;
&lt;p&gt;公共市场适合发现和试用，真正进入生产流程后，企业更可能建立自己的私有 Skill Registry。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/ai-agent-skill-market-supply-chain-2026/imgs/skill-supply-chain.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/ai-agent-skill-market-supply-chain-2026/imgs/skill-supply-chain_hu_1f4d0db040527bac.png 480w, https://blog.ccino.org/p/ai-agent-skill-market-supply-chain-2026/imgs/skill-supply-chain_hu_da5e6e35c15ab29c.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Skill 供应链治理流程&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;它可能长这样：&lt;/p&gt;
&lt;p&gt;团队可以从公共市场引入 Skill，但必须经过内部审查；审查通过后，固定版本进入私有仓库；每个项目只能使用白名单 Skill；高风险 Skill 必须声明工具权限和确认点；所有修改都走 code review；关键 Skill 有测试样例和失败案例。&lt;/p&gt;
&lt;p&gt;这听起来很像软件依赖管理。&lt;/p&gt;
&lt;p&gt;没错，Skill 会变成一种新的依赖。&lt;/p&gt;
&lt;p&gt;只不过它依赖的不是运行时库，而是工作流和行为策略。一个后端项目依赖数据库驱动，一个 Agent 项目依赖需求澄清 Skill、测试 Skill、安全审查 Skill、发布 Skill。&lt;/p&gt;
&lt;p&gt;这会催生一套新的工程实践：Skill lint、Skill review、Skill versioning、Skill compatibility、Skill sandbox、Skill provenance。&lt;/p&gt;
&lt;p&gt;如果你是开发者，现在就可以提前做两件事。&lt;/p&gt;
&lt;p&gt;第一，把自己反复提醒 AI 的内容整理成项目内 Skill。不要只写“请认真一点”，而要写清楚触发条件、执行步骤、禁止行为和验证证据。&lt;/p&gt;
&lt;p&gt;第二，把外部 Skill 当成依赖审查。不要因为它是 Markdown 就放松警惕。越是能影响 Agent 行为的文本，越应该被当作代码一样审查。&lt;/p&gt;
&lt;h2 id=&#34;中国开发者的机会在行业-skill&#34;&gt;中国开发者的机会在“行业 Skill”
&lt;/h2&gt;&lt;p&gt;对国内开发者来说，Skill Market 还有一个很现实的机会：行业 Know-how 的封装。&lt;/p&gt;
&lt;p&gt;通用 Skill 很快会卷起来。写代码、做 review、生成测试、总结会议，这些方向会有大量开源项目和平台内置能力。&lt;/p&gt;
&lt;p&gt;更稀缺的是行业 Skill。&lt;/p&gt;
&lt;p&gt;比如公众号发布工作流、短视频脚本分镜、小红书图文结构、跨境电商 listing 优化、投放复盘、客服质检、法律合同审阅、财务报销检查、医疗文献筛选、教育课件生成。&lt;/p&gt;
&lt;p&gt;这些场景的难点不在于模型不会写字，而在于流程细节太多，平台规则太碎，质量标准太依赖经验。&lt;/p&gt;
&lt;p&gt;这正适合被 Skill 化。&lt;/p&gt;
&lt;p&gt;一个好的行业 Skill，应该包含平台约束、常见失败、质量检查、人工确认点和降级方案。它不是“帮我写一篇小红书”，而是“什么时候用什么结构，哪些词不能写，图片尺寸怎么处理，发布前检查哪些风险，数据不好时如何改角度”。&lt;/p&gt;
&lt;p&gt;这类 Skill 的价值，未必属于大模型厂商。它更可能来自长期在具体行业里做事的人。&lt;/p&gt;
&lt;p&gt;这也是 Skill Market 最有意思的地方：它可能让专业经验变成可分发的软件资产。&lt;/p&gt;
&lt;h2 id=&#34;不要急着找下一个超级-app&#34;&gt;不要急着找下一个超级 App
&lt;/h2&gt;&lt;p&gt;过去一年，很多人都在找 AI 时代的超级 App。&lt;/p&gt;
&lt;p&gt;但也许我们应该换个问题：如果 Agent 本身会成为入口，那下一个生态位未必是 App，而是让 Agent 获得专业能力的 Skill。&lt;/p&gt;
&lt;p&gt;App 是给人点的。&lt;/p&gt;
&lt;p&gt;Skill 是给 Agent 执行的。&lt;/p&gt;
&lt;p&gt;这句话背后，是交互方式的变化。人类不再需要为每个任务打开一个应用、学习一套界面、点击一串按钮。人类更可能告诉 Agent 目标，然后由 Agent 调用一组 Skills 完成任务。&lt;/p&gt;
&lt;p&gt;在这种模式下，真正重要的不是谁拥有最多应用图标，而是谁拥有最可信、最丰富、最可组合的 Skills。&lt;/p&gt;
&lt;p&gt;当然，Skill Market 还很早。标准不稳定，分发方式分裂，权限模型粗糙，审计机制几乎刚开始。&lt;/p&gt;
&lt;p&gt;但方向已经很清楚了。&lt;/p&gt;
&lt;p&gt;当 AI Agent 从聊天工具变成工作执行者，它需要的不只是更强模型，还需要可安装的流程、可复用的经验、可审计的行为边界。&lt;/p&gt;
&lt;p&gt;这就是 Skill Market 会出现的原因。&lt;/p&gt;
&lt;p&gt;未来你选择一个 Agent 工具时，可能不只会问：它用的是什么模型？上下文多大？价格多少？&lt;/p&gt;
&lt;p&gt;你还会问另一个问题：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;它的 Skill 生态够不够好？我自己的工作流资产，能不能带过去？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这个问题，可能会决定下一轮 AI Agent 工具之争的胜负。&lt;/p&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/obra/superpowers&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Superpowers：Agentic skills framework &amp;amp; software development methodology&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/K-Dense-AI/scientific-agent-skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Scientific Agent Skills：135 ready-to-use scientific and research skills&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=_KoOqSbhKDM&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Code + Compound Engineering + AGENTS.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=OX0x2cIDK08&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;RolyCode for AI Coding Agents&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Codex Mobile 不是移动编程，而是 Agent 时代的审批链迁移</title>
        <link>https://blog.ccino.org/p/codex-mobile-agent-approval-chain-2026/</link>
        <pubDate>Fri, 15 May 2026 09:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/codex-mobile-agent-approval-chain-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/codex-mobile-agent-approval-chain-2026/imgs/cover.png" alt="Featured image of post Codex Mobile 不是移动编程，而是 Agent 时代的审批链迁移" /&gt;&lt;p&gt;5 月 14 日，OpenAI 发布 Codex 手机端预览版。&lt;/p&gt;
&lt;p&gt;官方说法是：用户可以在 ChatGPT 移动应用里连接正在运行 Codex 的笔记本、Mac mini、devbox 或远程环境，从手机上启动任务、查看输出、改变方向、批准命令，并跟进 terminal output、diff、测试结果和截图。&lt;/p&gt;
&lt;p&gt;这篇文章主要基于 OpenAI 的官方发布，以及当天 X、YouTube、Reddit 上围绕 Codex Mobile 的讨论。OpenAI 提到 Codex 每周用户超过 400 万，这是官方自述；社交媒体互动量也只能说明发布当天热度，不能直接当成真实使用规模。&lt;/p&gt;
&lt;p&gt;但这个更新仍然有意思。它看起来是“手机上也能用 Codex”，实际更像是 OpenAI 在移动端补了一块 AI 编程 Agent 的控制面。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/codex-mobile-agent-approval-chain-2026/imgs/cover.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/codex-mobile-agent-approval-chain-2026/imgs/cover_hu_62d61f506ad86283.png 480w, https://blog.ccino.org/p/codex-mobile-agent-approval-chain-2026/imgs/cover_hu_7010195e24dc1b7b.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Codex Mobile 不是移动编程，而是 Agent 时代的审批链迁移&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;这不是移动-ide&#34;&gt;这不是移动 IDE
&lt;/h2&gt;&lt;p&gt;如果把 Codex Mobile 理解成“在手机上写代码”，那就错了。&lt;/p&gt;
&lt;p&gt;手机屏幕太小，不适合读复杂 diff，不适合改多文件工程，也不适合长时间看 terminal。多数开发者不会因为 ChatGPT 手机端接入 Codex，就开始在地铁上重构后端服务。&lt;/p&gt;
&lt;p&gt;OpenAI 强调的也不是写代码，而是另一组动作：启动任务、审查结果、调整方向、批准下一步、回答阻塞问题。&lt;/p&gt;
&lt;p&gt;真正运行代码的地方，仍然是你的机器或远程开发环境。官方介绍里说，文件、凭据、权限和本地配置都留在 Codex 实际运行的机器上，手机端通过安全 relay layer 同步状态。&lt;/p&gt;
&lt;p&gt;所以手机不是新的开发环境，而是一个遥控器。它负责让你在离开电脑后，仍然能在关键节点介入。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/codex-mobile-agent-approval-chain-2026/imgs/official-codex-mobile-page.png&#34;
	width=&#34;836&#34;
	height=&#34;774&#34;
	srcset=&#34;https://blog.ccino.org/p/codex-mobile-agent-approval-chain-2026/imgs/official-codex-mobile-page_hu_b66da2a42113572f.png 480w, https://blog.ccino.org/p/codex-mobile-agent-approval-chain-2026/imgs/official-codex-mobile-page_hu_13baae129e9323cd.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;OpenAI 官方 Codex Mobile 页面截图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;108&#34;
		data-flex-basis=&#34;259px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;人类开始变成审批者&#34;&gt;人类开始变成审批者
&lt;/h2&gt;&lt;p&gt;传统编程里，人是操作者。你打开 IDE，读代码，敲命令，跑测试，改文件。&lt;/p&gt;
&lt;p&gt;AI 编程 Agent 出现后，关系开始变化。Agent 可以读项目、提计划、改文件、跑命令、生成 diff。人类不再每一步都亲手执行，而是在几个节点上做判断：方向对不对，命令能不能跑，修改能不能接受，结果是否符合意图。&lt;/p&gt;
&lt;p&gt;Codex Mobile 把这些判断节点搬到了手机。&lt;/p&gt;
&lt;p&gt;这会改变开发节奏。以前你离开电脑，很多 Agent 任务就卡住了：需要确认命令，需要选择方案，需要补充上下文。现在这些卡点至少可以在手机上处理。&lt;/p&gt;
&lt;p&gt;所以 Codex Mobile 的核心不是“移动编程”，而是“移动审批”。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/codex-mobile-agent-approval-chain-2026/imgs/approval-workflow.png&#34;
	width=&#34;1280&#34;
	height=&#34;720&#34;
	srcset=&#34;https://blog.ccino.org/p/codex-mobile-agent-approval-chain-2026/imgs/approval-workflow_hu_5db812f4ebf167.png 480w, https://blog.ccino.org/p/codex-mobile-agent-approval-chain-2026/imgs/approval-workflow_hu_7d76261147a2fee2.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Codex Mobile 审批链流程图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;openai-抢的是控制入口&#34;&gt;OpenAI 抢的是控制入口
&lt;/h2&gt;&lt;p&gt;AI 编程工具的竞争，正在从“谁写代码更准”扩展到“谁掌握开发者的控制入口”。&lt;/p&gt;
&lt;p&gt;桌面端有 CLI、IDE、Web、原生 App。现在手机也开始变成入口。哪个平台能让你随时看见 Agent 状态、批准命令、接管方向，哪个平台就更可能成为工作流里的默认协调层。&lt;/p&gt;
&lt;p&gt;这对 OpenAI 很重要。Claude Code 在开发者社区的优势，很大一部分来自它和本地项目、终端、权限、长任务之间的关系。开发者不是只拿它问问题，而是真的让它进项目干活。&lt;/p&gt;
&lt;p&gt;Codex Mobile 试图回答的是另一个问题：如果 Codex 已经在你的机器或远程环境里干活，ChatGPT 能不能成为你随时控制它的入口？&lt;/p&gt;
&lt;p&gt;这和模型跑分不是一类竞争。进入 Agent 形态后，体验差距往往来自控制面：任务如何启动，状态如何同步，权限如何批准，错误如何回滚，结果如何审查。&lt;/p&gt;
&lt;p&gt;OpenAI 这次还同步强调 Remote SSH、Hooks、programmatic access tokens 和企业环境支持，也说明它不是单独做一个手机入口，而是在补开发者工作流的基础设施。&lt;/p&gt;
&lt;h2 id=&#34;审批变轻风险也更近&#34;&gt;审批变轻，风险也更近
&lt;/h2&gt;&lt;p&gt;手机端降低了介入成本，也可能降低心理门槛。&lt;/p&gt;
&lt;p&gt;开发者在电脑前审查 diff，和在手机通知里点 approve，注意力状态完全不同。前者更像工作，后者更像处理消息。&lt;/p&gt;
&lt;p&gt;这会带来一个新问题：哪些动作可以在手机上轻量批准，哪些动作必须回到桌面认真审查？&lt;/p&gt;
&lt;p&gt;让 Codex 继续检索、跑只读命令、整理日志，手机审批很合理。但如果它要修改生产配置、执行迁移、提交代码、触碰凭据，移动端就不能只追求顺滑。它必须让风险足够显眼，让上下文足够完整。&lt;/p&gt;
&lt;p&gt;OpenAI 提到文件、凭据、权限和本地配置仍然留在运行环境里，这是好的设计方向。手机不该把整个开发环境暴露出去，它只应该同步状态和控制信号。&lt;/p&gt;
&lt;p&gt;但安全最终取决于细节：权限提示是否清楚，diff 是否容易审查，命令上下文是否完整，高风险操作是否有额外确认，企业策略是否能限制移动端权限。&lt;/p&gt;
&lt;p&gt;Agent 时代的安全，不只是模型别乱说，还包括人别在错误的场景里随手点同意。&lt;/p&gt;
&lt;h2 id=&#34;从聊天框到工作队列&#34;&gt;从聊天框到工作队列
&lt;/h2&gt;&lt;p&gt;我更愿意把 Codex Mobile 看成一个信号：AI 编程工具正在从聊天框变成工作队列。&lt;/p&gt;
&lt;p&gt;聊天框时代，人和 AI 是同步关系：我问一句，你答一句。IDE 补全时代，人和 AI 是贴身关系：我写一行，你补一段。Agent 时代，关系变成异步协作：我给一个目标，你跑一段时间，中途在必要时叫我，最后交付一个可审查的结果。&lt;/p&gt;
&lt;p&gt;手机端适合这个异步关系。&lt;/p&gt;
&lt;p&gt;你不需要一直盯着 Agent，但你需要知道它什么时候卡住了，什么时候产出了关键结果，什么时候需要你批准下一步。这更像项目管理、值班和代码审查的混合体，而不是传统意义上的编程。&lt;/p&gt;
&lt;p&gt;因此，“Codex Mobile 能不能替代 Claude Code”不是最好的问题。&lt;/p&gt;
&lt;p&gt;更好的问题是：当 AI 编程工具都变成后台 Agent，谁能提供更可靠的工作队列、更清楚的权限边界、更自然的人类介入点？&lt;/p&gt;
&lt;h2 id=&#34;结语&#34;&gt;结语
&lt;/h2&gt;&lt;p&gt;Codex Mobile 表面上是 OpenAI 给 Codex 加了一个手机入口。&lt;/p&gt;
&lt;p&gt;它真正释放的信号是：AI 编程工具正在从“帮你写代码的工具”，变成“替你推进工作的代理系统”。在这个系统里，人类最重要的职责不再是每一步都亲自操作，而是在关键节点做判断、给方向、批准风险、验收结果。&lt;/p&gt;
&lt;p&gt;手机不是新的 IDE。&lt;/p&gt;
&lt;p&gt;手机更像 Agent 时代的审批台。&lt;/p&gt;
&lt;p&gt;它让任务在你离开电脑后还能继续向前，但也让每一次“同意继续”变得更重。&lt;/p&gt;
&lt;p&gt;真正的竞争，可能不在谁能多生成几行代码，而在谁能把这条审批链设计得既短、又安全、还不打扰人。&lt;/p&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openai.com/index/work-with-codex-from-anywhere/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI: Work with Codex from anywhere&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/OpenAI/status/2055016850849993072&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI Codex mobile announcement on X&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=n3sDrvsDDGY&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Universe of AI: Codex SuperApp: Did OpenAI Just Kill Claude Code?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=GDFFTDrKtAE&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;David Huber: Codex Mobile Lets You Code From ANYWHERE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/ClaudeAI/comments/1tbgj86/coders_in_2030_be_like/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reddit: Coders in 2030 be like&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>AI Agent 不是缺 Prompt，而是缺一套刹车系统</title>
        <link>https://blog.ccino.org/p/statewright-ai-agent-guardrails/</link>
        <pubDate>Thu, 14 May 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/statewright-ai-agent-guardrails/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/statewright-ai-agent-guardrails/imgs/cover.png" alt="Featured image of post AI Agent 不是缺 Prompt，而是缺一套刹车系统" /&gt;&lt;p&gt;用 Claude Code、Codex、Cursor 久了，你大概率见过这种场面。&lt;/p&gt;
&lt;p&gt;你只是想让它修一个小 bug。它先把项目翻了半天，打开几个不相干的文件，然后突然开始改架构。你说“先别动代码，先分析”，它答应得很快，下一秒还是调用了编辑工具。你让它跑测试，它挑了一个最顺手的命令，跑完以后告诉你“看起来没问题”。&lt;/p&gt;
&lt;p&gt;这时候，我们通常会怪 Prompt。&lt;/p&gt;
&lt;p&gt;于是规则一条条加上去：先读文件再计划，不要擅自扩大范围，每次只改一个问题，必须跑测试，不要使用危险命令。CLAUDE.md 越写越长，system prompt 越来越像公司制度手册。&lt;/p&gt;
&lt;p&gt;可很多 Agent 失控，并不是因为它没读过流程，而是因为它手里一直有权限。&lt;/p&gt;
&lt;p&gt;人类经理写再多“请规范操作”，也挡不住一个有生产权限的人半夜直接删库。AI Agent 也差不多。危险工具一直摆在它面前，你就只能祈祷它每次都记得别碰。&lt;/p&gt;
&lt;p&gt;Statewright 这个项目有意思的地方就在这里。它不再试图发明一套更神的 Prompt，而是换了个更工程化的办法：&lt;strong&gt;别只劝 Agent 守规矩，让它在错误阶段根本看不到那些工具。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这个变化看起来不大，但味道完全变了。它把 AI Agent 从“靠自觉”往“有边界的系统”推了一步。&lt;/p&gt;
&lt;h2 id=&#34;statewright-到底是什么&#34;&gt;Statewright 到底是什么？
&lt;/h2&gt;&lt;p&gt;Statewright 是一个给 AI 编程代理用的状态机护栏系统。它最近出现在 Hacker News 的 Show HN 讨论里，项目也开源在 GitHub 上。&lt;/p&gt;
&lt;p&gt;它做的事不复杂：把一次 Agent 任务拆成几个状态，比如 planning、implementing、testing、completed。不同状态下，Agent 能看到的工具不一样。&lt;/p&gt;
&lt;p&gt;planning 阶段只能读文件、搜代码、整理方案，不能编辑，也不能随便跑脚本。implementing 阶段可以改代码，但可以限制改哪些文件、改多少行、能用哪些命令。testing 阶段只允许跑白名单里的测试命令，不能借着“验证”再顺手改点别的。&lt;/p&gt;
&lt;p&gt;Statewright 的 README 里有一句话很狠：&lt;strong&gt;Agents are suggestions, states are laws.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Prompt 是建议，状态才是法律。&lt;/p&gt;
&lt;p&gt;普通 rules、CLAUDE.md、项目说明，本质上是在告诉模型“你应该这么做”。Statewright 则把一部分要求搬到执行层：当前状态不允许的工具，Agent 就调用不了。&lt;/p&gt;
&lt;p&gt;底层是一个 Rust 状态机引擎，负责处理状态、转移、guard 条件、工具限制、命令白名单和人工审批节点。它不靠另一个 LLM 来判断“这一步合不合规”，而是用确定性的规则跑。&lt;/p&gt;
&lt;p&gt;这点我觉得很关键。用一个可能幻觉的模型，去监管另一个可能幻觉的模型，听起来就不太踏实。&lt;/p&gt;
&lt;h2 id=&#34;为什么更好的-prompt-不够&#34;&gt;为什么更好的 Prompt 不够？
&lt;/h2&gt;&lt;p&gt;过去两年，AI 工具的主旋律一直是“写更好的 Prompt”。这当然有用，尤其在模型能力还弱、工具调用还简单的时候。&lt;/p&gt;
&lt;p&gt;但 AI 编程代理现在做的事已经变了。它不只是回答问题，而是在真实项目里读文件、改代码、跑命令、调 MCP、处理 Git 状态，有时还要跨多个系统操作。&lt;/p&gt;
&lt;p&gt;这已经不是聊天问题，而是权限问题。&lt;/p&gt;
&lt;p&gt;Prompt 可以告诉 Agent：没有计划时不要编辑文件。但只要编辑工具仍然可见，它就有机会误用。Prompt 可以告诉 Agent：不要运行危险命令。但只要 Bash 没有限制，它就可能为了省事使用重定向、批量替换，或者跑一个你没预料到的脚本。&lt;/p&gt;
&lt;p&gt;这不一定是模型“不听话”。很多时候，它确实在努力完成目标，只是它对风险、范围和副作用的判断，和人类不一样。&lt;/p&gt;
&lt;p&gt;你让它“修复构建失败”，它可能觉得升级依赖是合理路径；你让它“优化代码”，它可能顺手重构半个模块；你让它“验证一下”，它可能跑了一个不相关的测试，然后把成功结果当成证据。&lt;/p&gt;
&lt;p&gt;问题不只是“怎样让 Agent 更聪明”，而是“怎样让 Agent 即使很聪明，也不能随便越界”。&lt;/p&gt;
&lt;p&gt;Statewright 切的就是这个口子。&lt;/p&gt;
&lt;h2 id=&#34;从贴纸条到门禁卡&#34;&gt;从贴纸条，到门禁卡
&lt;/h2&gt;&lt;p&gt;现在很多 AI 产品都会讲 guardrails，但不少 guardrail 仍然是 Prompt guardrail：在系统提示里写清楚哪些事不能做，哪些流程要遵守，哪些内容要拒绝。&lt;/p&gt;
&lt;p&gt;这种护栏有用，但它依赖模型配合。&lt;/p&gt;
&lt;p&gt;Statewright 更像 protocol-level guardrail。它不是让模型记住“当前不要编辑”，而是在 planning 状态下不给编辑工具。它不是让模型承诺“只运行 npm test”，而是在 testing 状态下只允许白名单命令。&lt;/p&gt;
&lt;p&gt;这两者的差别，就像“贴一张禁止入内的纸条”和“门禁卡刷不开”。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/statewright-ai-agent-guardrails/imgs/protocol-guardrails.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/statewright-ai-agent-guardrails/imgs/protocol-guardrails_hu_99e1003707d571a0.png 480w, https://blog.ccino.org/p/statewright-ai-agent-guardrails/imgs/protocol-guardrails_hu_b57ea837429bcb9e.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;从提示词规则到协议层护栏&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;Agent 能调的工具越多，这个差别越大。靠提示词管理几十个工具，迟早会变脆。&lt;/p&gt;
&lt;p&gt;一个成熟的 Agent 工作流，绕不开三个问题：它现在处于什么阶段；这个阶段能做什么；满足什么条件才能进入下一阶段。&lt;/p&gt;
&lt;p&gt;Prompt 可以描述这三个问题，状态机可以执行这三个问题。&lt;/p&gt;
&lt;p&gt;拿 bugfix 举例。先进入 inspect 状态，只允许读相关文件和搜索错误；再进入 plan 状态，产出修改方案并等待确认；之后进入 implement 状态，只允许编辑已声明的文件；最后进入 verify 状态，只允许运行指定测试命令。中间想绕路，状态机直接拒绝。&lt;/p&gt;
&lt;p&gt;这不是为了把 AI 绑住，而是为了把问题空间变小。&lt;/p&gt;
&lt;p&gt;Statewright 网站上有一句说法也很直接：Instead of making the model bigger, make the problem smaller.&lt;/p&gt;
&lt;p&gt;我挺喜欢这句话。与其期待模型在 40 个工具、几十个文件和一个模糊目标里永远做对，不如让它每一步只面对当下该处理的小问题。&lt;/p&gt;
&lt;h2 id=&#34;claude-code-为什么适合这种思路&#34;&gt;Claude Code 为什么适合这种思路？
&lt;/h2&gt;&lt;p&gt;Statewright 目前对 Claude Code 的支持是 Hooks + MCP，而且属于硬限制。Codex、opencode、Pi 等也在不同程度接入。Cursor 目前更偏 advisory，也就是规则建议，还不能真正拦截工具调用。&lt;/p&gt;
&lt;p&gt;这背后有个趋势：AI 编程工具的差异，正在从“哪个模型更强”，转到“哪个运行时更可控”。&lt;/p&gt;
&lt;p&gt;Claude Code 这类 CLI-native 工具天然适合做协议层治理。它有清晰的工具调用边界，有 hooks，有 MCP，有本地文件和命令执行过程，也更容易在工具调用前后加拦截器。&lt;/p&gt;
&lt;p&gt;Cursor 这种 IDE 产品体验更顺滑，但很多约束更像编辑器规则和上下文注入。普通用户可能已经够用。可如果团队需要强流程、强审计、强权限控制，那种“建议式约束”就会显得软。&lt;/p&gt;
&lt;p&gt;这不是谁先进谁落后的问题，而是产品形态不同。&lt;/p&gt;
&lt;p&gt;Agent 只是帮你补几行代码时，软规则够了。Agent 开始改项目、跑脚本、处理发布、调用外部服务时，软规则就不够了。&lt;/p&gt;
&lt;p&gt;企业不会满足于一句“我们已经提示 AI 不要乱来”。企业真正想要的是：它在那个状态下就是不能乱来。&lt;/p&gt;
&lt;h2 id=&#34;本地模型更需要这种轨道&#34;&gt;本地模型更需要这种轨道
&lt;/h2&gt;&lt;p&gt;Statewright 还有个容易被忽略的价值：它不只服务最强的云端模型，也可能对本地模型更有帮助。&lt;/p&gt;
&lt;p&gt;很多人讨论本地模型时，习惯看跑分：SWE-bench 多少，Terminal-Bench 多少，代码能力接近谁。但真实使用里，本地模型的短板往往不是完全不会写代码，而是在复杂流程里更容易分心、漏步骤、误用工具。&lt;/p&gt;
&lt;p&gt;状态机能缓解这件事。&lt;/p&gt;
&lt;p&gt;模型不需要同时记住“现在处于什么阶段、哪些工具能用、下一步该做什么、哪些风险不能碰”。它只需要在当前轨道里完成局部任务。&lt;/p&gt;
&lt;p&gt;这有点像新手司机上路。你当然可以教育他遵守交通规则，但如果路边有护栏、弯道有限速、危险路段有隔离带，事故率会低很多。&lt;/p&gt;
&lt;p&gt;对本地小模型来说，护栏不是束缚，更像能力放大器。&lt;/p&gt;
&lt;p&gt;我猜后面会出现一种混合架构：强模型负责制定计划和处理复杂判断，小模型在状态机约束下执行明确步骤。Statewright 这类工具，就是给这种架构铺轨道。&lt;/p&gt;
&lt;h2 id=&#34;agent-工作流会变得像-cicd-吗&#34;&gt;Agent 工作流会变得像 CI/CD 吗？
&lt;/h2&gt;&lt;p&gt;Statewright 现在未必已经是终局产品，但它指向的方向很清楚：AI Agent 工作流会开始像软件工程本身一样，被配置、被验证、被审计。&lt;/p&gt;
&lt;p&gt;早期写代码，大家手动构建、手动测试、手动部署。后来有了 CI/CD，流程被写成 pipeline：什么时候构建，什么时候测试，什么时候发布，失败怎么回滚，谁有审批权。&lt;/p&gt;
&lt;p&gt;今天的 AI Agent 还很像“手动部署时代”。我们把一堆规则写进 prompt，然后盯着它干活。它做对了，我们夸模型聪明；它做错了，我们再补一条规则。&lt;/p&gt;
&lt;p&gt;长期看，这肯定不够。&lt;/p&gt;
&lt;p&gt;以后的 Agent 工作流可能会更像 pipeline：需求澄清、代码搜索、方案确认、实现、测试、review、发布，每一步都有状态、权限、输入输出和转移条件。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/statewright-ai-agent-guardrails/imgs/state-machine-workflow.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/statewright-ai-agent-guardrails/imgs/state-machine-workflow_hu_ba82af42ed290cc8.png 480w, https://blog.ccino.org/p/statewright-ai-agent-guardrails/imgs/state-machine-workflow_hu_a2b76d8b6162df.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;AI 编程代理的状态机工作流&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;到那时，团队的核心资产不只是代码库，还包括一套可复用的 Agent 工作流定义。新人可以按这套流程工作，AI Agent 也可以按这套流程工作。流程不再藏在资深工程师脑子里，也不再散落在几千字 Prompt 里，而是变成可执行的状态机。&lt;/p&gt;
&lt;p&gt;这对 AI 编程很要命。&lt;/p&gt;
&lt;p&gt;因为很多真实工程问题，并不是“会不会写某段代码”，而是“能不能稳定地按正确顺序做事”。&lt;/p&gt;
&lt;h2 id=&#34;它当然也不是万能药&#34;&gt;它当然也不是万能药
&lt;/h2&gt;&lt;p&gt;状态机也有成本。&lt;/p&gt;
&lt;p&gt;你要定义状态、工具、命令、转移条件，还要维护这些规则。个人项目里可能有点重，快速探索时也可能嫌束手束脚。&lt;/p&gt;
&lt;p&gt;它也不能替代代码 review。状态机能限制 Agent 什么时候做什么，但不能保证它写出的代码一定优雅、正确、符合业务语义。&lt;/p&gt;
&lt;p&gt;流程本身也可能设计坏。如果设计得太死，Agent 会卡住；设计得太松，又回到了原来的问题。&lt;/p&gt;
&lt;p&gt;所以这类工具更适合高风险、高重复、可流程化的任务，比如修 bug、跑测试、批量重构、发布前检查、安全审查、依赖升级。探索性研究、产品构思、写作脑暴，未必一上来就需要状态机。&lt;/p&gt;
&lt;p&gt;但这不影响它的重要性。&lt;/p&gt;
&lt;p&gt;AI Agent 真正进入生产环境后，最先要解决的不是“如何让它更自由”，而是“如何让它可控”。&lt;/p&gt;
&lt;h2 id=&#34;真正的变化从相信模型到设计系统&#34;&gt;真正的变化：从相信模型，到设计系统
&lt;/h2&gt;&lt;p&gt;AI 圈很容易陷入模型崇拜：模型更大，问题就少；推理更强，流程就稳；上下文更长，协作就顺。&lt;/p&gt;
&lt;p&gt;现实没这么省事。&lt;/p&gt;
&lt;p&gt;软件工程从来不是靠“聪明人自由发挥”维持质量的。我们靠类型系统、测试、CI、代码审查、权限管理、发布流程、监控告警，把人的能力装进一套系统里。&lt;/p&gt;
&lt;p&gt;AI Agent 大概率也会走同一条路。&lt;/p&gt;
&lt;p&gt;Prompt 仍然重要，但它会从唯一的控制手段，退回到系统的一部分。真正可靠的 Agent，不会只靠一段写得漂亮的提示词，而会靠上下文、工具、权限、状态、测试和审计共同组成的运行环境。&lt;/p&gt;
&lt;p&gt;Statewright 让我看到的，就是这个方向。&lt;/p&gt;
&lt;p&gt;AI Agent 的下一步，不只是更会写代码，而是更像一个受控的软件系统。&lt;/p&gt;
&lt;p&gt;所以，“别再只写 Prompt 了”不是说 Prompt 没用。&lt;/p&gt;
&lt;p&gt;而是说，如果你的 Agent 已经开始读项目、改代码、跑命令、调工具，那它需要的不只是更温柔、更详细的嘱咐。&lt;/p&gt;
&lt;p&gt;它需要一套刹车系统。&lt;/p&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/statewright/statewright&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub: statewright/statewright&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://statewright.ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Statewright 官方网站&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://news.ycombinator.com/item?id=48108778&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hacker News: Show HN: Statewright – Visual state machines that make AI agents reliable&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>AI Pointer：提示词之后，下一个交互范式可能是「指给 AI 看」</title>
        <link>https://blog.ccino.org/p/ai-pointer-interaction-paradigm-2026/</link>
        <pubDate>Wed, 13 May 2026 09:30:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/ai-pointer-interaction-paradigm-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/ai-pointer-interaction-paradigm-2026/imgs/cover.png" alt="Featured image of post AI Pointer：提示词之后，下一个交互范式可能是「指给 AI 看」" /&gt;&lt;p&gt;DeepMind 这次发了一篇关于 AI Pointer 的文章，表面上是在讲鼠标指针要怎么加 AI，但我读完后反而觉得，它真正戳中的是一个很老的问题：我们和 AI 打交道时，为什么总要先把眼前的东西翻译成一段话？&lt;/p&gt;
&lt;p&gt;比如你正在看网页，想让 AI 比较三件商品；或者在 PDF 里看到一段话，想顺手改成邮件里的三条要点；再或者看到地图、图片、视频暂停帧里的某个地方，想知道它是什么、怎么去、能不能预订。&lt;/p&gt;
&lt;p&gt;今天的流程通常很笨。截图、复制、粘贴、解释背景，再补一句“我说的是右下角那个”。很多时候，任务本身没那么复杂，复杂的是你要先把屏幕上的上下文搬到聊天框里。&lt;/p&gt;
&lt;p&gt;人和人协作不是这样的。我们会指着屏幕说：“这个帮我改一下”“那段总结一下”“这里是什么意思”。对方能理解，不是因为这句话写得多完整，而是因为你们看着同一块屏幕。&lt;/p&gt;
&lt;p&gt;DeepMind 在 2026 年 5 月 12 日发布的 &lt;a class=&#34;link&#34; href=&#34;https://deepmind.google/blog/ai-pointer/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AI Pointer 文章&lt;/a&gt; 讲的就是这个方向：让鼠标指针不仅知道你停在哪个坐标上，还能理解你指向的是什么，以及它和当前任务有什么关系。&lt;/p&gt;
&lt;p&gt;如果这条路走通，Prompt 当然还会存在，但它可能不会再承担那么多本不该由语言承担的工作。&lt;/p&gt;
&lt;h2 id=&#34;我们不是缺提示词技巧是缺上下文入口&#34;&gt;我们不是缺提示词技巧，是缺上下文入口
&lt;/h2&gt;&lt;p&gt;过去一年，很多人都在学怎么写 Prompt。目标要清楚，背景要完整，约束要明确，输出格式要提前规定。这些技巧有用，我自己也经常这么做。&lt;/p&gt;
&lt;p&gt;但越用越会发现，这套方法有一个很大的别扭之处：屏幕上已经有的东西，你还要再说一遍。&lt;/p&gt;
&lt;p&gt;网页里已经有商品卡片，你还要写“请比较这三个商品的价格、尺寸和评价”。PDF 里已经有表格，你还要说“请把第二页右下角那个表格转成图”。图片里已经有客厅和沙发，你还要描述“把这张沙发放到那张客厅图里”。&lt;/p&gt;
&lt;p&gt;这不是用户懒，也不是用户不会写 Prompt，而是交互方式让用户做了太多上下文搬运。&lt;/p&gt;
&lt;p&gt;DeepMind 的说法很直接：典型 AI 工具活在自己的窗口里，用户要把自己的世界拖进去；他们想做相反的事，让 AI 出现在用户本来工作的地方。&lt;/p&gt;
&lt;p&gt;我觉得这句话比“AI 鼠标指针”本身更重要。&lt;/p&gt;
&lt;p&gt;因为它把 AI 产品从聊天框里往外推了一步。AI 不应该只在一个独立窗口里等你输入，它应该能出现在网页、文档、图片、表格、地图这些任务实际发生的地方。&lt;/p&gt;
&lt;p&gt;聊天框时代，我们努力把需求说清楚。AI Pointer 想做的，是先把对象指清楚。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/ai-pointer-interaction-paradigm-2026/imgs/context-on-screen.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/ai-pointer-interaction-paradigm-2026/imgs/context-on-screen_hu_1618c62fbf3a567.png 480w, https://blog.ccino.org/p/ai-pointer-interaction-paradigm-2026/imgs/context-on-screen_hu_329919c42e8cc9d8.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;旧方式是把上下文搬进聊天框，新方式是直接指向屏幕对象&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;这个和那个为什么重要&#34;&gt;「这个」和「那个」为什么重要
&lt;/h2&gt;&lt;p&gt;DeepMind 在文章里提到四个原则：保持工作流、边指边说、理解 this 和 that、把像素变成可操作对象。&lt;/p&gt;
&lt;p&gt;这些词听起来有点产品文档味，但背后的意思并不复杂。&lt;/p&gt;
&lt;p&gt;用户在写邮件时，不应该为了让 AI 总结一段 PDF，又跳进另一个聊天窗口重新描述一遍。用户看着一张图时，也不应该为了改其中一块区域，先写一段很长的文字说明。更自然的方式是指过去，然后说一句短话。&lt;/p&gt;
&lt;p&gt;“把这段改短。”&lt;/p&gt;
&lt;p&gt;“把这个表转成图。”&lt;/p&gt;
&lt;p&gt;“这个地方怎么去？”&lt;/p&gt;
&lt;p&gt;“把那张沙发放到这里。”&lt;/p&gt;
&lt;p&gt;这些话如果单独拿出来看，几乎没有信息量。但在真实场景里，它们很清楚，因为“这个”和“那个”依赖的不是语言本身，而是共同上下文。&lt;/p&gt;
&lt;p&gt;电脑过去只知道鼠标在哪个坐标。AI 加进来之后，它有机会知道那个坐标附近是一段日期、一家餐厅、一块代码、一张商品图，还是视频暂停画面里的某个建筑。&lt;/p&gt;
&lt;p&gt;对象一旦被识别出来，动作就接得上了。日期可以变成日程，餐厅可以变成路线或预订，商品可以进入比较表，图片区域可以被编辑，代码块可以被解释或重构。&lt;/p&gt;
&lt;p&gt;所以 AI Pointer 不是简单给右键菜单加几个 AI 按钮。它更像是在尝试把屏幕上的东西重新语义化，让 AI 能看懂用户正在处理的对象。&lt;/p&gt;
&lt;p&gt;这一步做成之后，用户就不必每次都先把上下文从界面里挖出来，再塞给 AI。&lt;/p&gt;
&lt;h2 id=&#34;从听你描述到看你指向&#34;&gt;从“听你描述”到“看你指向”
&lt;/h2&gt;&lt;p&gt;Prompt 是把意图压缩成语言。&lt;/p&gt;
&lt;p&gt;Pointer 是把意图绑定到对象。&lt;/p&gt;
&lt;p&gt;两者差别很大。&lt;/p&gt;
&lt;p&gt;你说“帮我总结一下这份报告”，AI 还要继续问：哪份报告？哪一部分？给谁看？要多长？用什么语气？&lt;/p&gt;
&lt;p&gt;但如果你在报告里选中一段，直接说“改成给老板看的版本”，范围已经确定了一半。AI 要做的不是猜对象，而是处理对象。&lt;/p&gt;
&lt;p&gt;网页购物是一个很直观的例子。现在你想让 AI 比较几个商品，往往要复制链接，或者截图，再解释你关心价格、尺寸、评价还是售后。理想状态下，你只要选中几个商品，说“帮我看哪个适合小户型客厅”。页面上已经有图片、尺寸、价格、评价，AI 不需要你重新打一遍。&lt;/p&gt;
&lt;p&gt;地图也是一样。DeepMind 举了一个例子：指向一张建筑图片，说 “Show me directions”。如果系统已经知道你指的是哪个建筑，后面就不是聊天了，而是路线规划。&lt;/p&gt;
&lt;p&gt;图片编辑可能会更明显。Google 同一天还宣布 Gemini in Chrome on Android 和 auto browse，里面提到用户可以在浏览器里直接修改网页图片，比如把房源图改成带现代客厅家具的样子。放到 AI Pointer 的思路里，这类操作会变成：指向图片里的区域，说“这里换成这张沙发”。&lt;/p&gt;
&lt;p&gt;语言还在，但不用再扛起全部上下文。&lt;/p&gt;
&lt;p&gt;这就是我觉得它值得写的原因。&lt;/p&gt;
&lt;h2 id=&#34;google-为什么有机会把这事做大&#34;&gt;Google 为什么有机会把这事做大
&lt;/h2&gt;&lt;p&gt;AI Pointer 不是单独出现的。&lt;/p&gt;
&lt;p&gt;同一天，Google 还发布了 &lt;a class=&#34;link&#34; href=&#34;https://blog.google/products-and-platforms/products/chrome/bringing-chrome-ai-to-android/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Gemini in Chrome with auto browse&lt;/a&gt; 和 &lt;a class=&#34;link&#34; href=&#34;https://blog.google/products-and-platforms/platforms/android/meet-googlebook/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Googlebook&lt;/a&gt;。前者把 Gemini 放进 Android 版 Chrome，支持网页总结、连接 Google 应用、自动处理停车预订和订单修改。后者提出 Magic Pointer，把 Gemini 的上下文建议放到 Googlebook 的光标上。&lt;/p&gt;
&lt;p&gt;三件事放在一起看，就不是实验室里展示一个聪明鼠标那么简单了。&lt;/p&gt;
&lt;p&gt;Google 想把“指向式 AI”接进浏览器、移动端和笔记本。&lt;/p&gt;
&lt;p&gt;这正好踩在 Google 的长处上。它有 Chrome，知道用户正在看什么网页；有 Android，知道移动场景；有 Gmail、Calendar、Keep、Maps，可以把屏幕对象接到真实动作；有 Gemini 处理多模态上下文；再加上 Googlebook 这种硬件入口，指针就不只是网页里的一个功能，而可能变成系统层能力。&lt;/p&gt;
&lt;p&gt;很多 AI 公司都能做模型，但不是每家公司都站在用户工作流发生的地方。&lt;/p&gt;
&lt;p&gt;这也是 AI Pointer 对 Microsoft、Apple、浏览器厂商、IDE 厂商都有启发的原因。如果 AI 从聊天框走向屏幕上的任意对象，最值钱的位置可能就不是单独的 AI 应用，而是操作系统、浏览器、办公套件、设计工具、开发环境这些原本就承载任务的地方。&lt;/p&gt;
&lt;p&gt;谁离用户正在处理的对象更近，谁就更容易成为下一代 AI 入口。&lt;/p&gt;
&lt;h2 id=&#34;agent-的起点可能会变&#34;&gt;Agent 的起点可能会变
&lt;/h2&gt;&lt;p&gt;现在很多人谈 Agent，会先想到工具调用、浏览器自动化、多步骤规划。这些都对，但从用户体验看，还有一个更早的问题：任务从哪里开始？&lt;/p&gt;
&lt;p&gt;在聊天框里，任务从一句话开始。&lt;/p&gt;
&lt;p&gt;在 AI Pointer 里，任务可以从一个对象开始。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/ai-pointer-interaction-paradigm-2026/imgs/agent-starts-from-objects.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/ai-pointer-interaction-paradigm-2026/imgs/agent-starts-from-objects_hu_8d3c0f38f28cdb95.png 480w, https://blog.ccino.org/p/ai-pointer-interaction-paradigm-2026/imgs/agent-starts-from-objects_hu_881e719a2136d447.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Agent 的任务从屏幕对象开始，而不是从一句抽象命令开始&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;用户不一定要先说“请帮我规划一次出行”。他可以指向邮件里的航班信息、地图上的酒店、网页上的活动页面，然后说“整理成行程”。Agent 接到的不是一个空泛命令，而是一组已经绑定上下文的对象。&lt;/p&gt;
&lt;p&gt;这会让很多 Agent 任务更容易启动，也更容易出错。&lt;/p&gt;
&lt;p&gt;Google 在 Chrome auto browse 的说明里特意提到，涉及购买、发帖等敏感动作时，会要求用户确认。这个细节不能忽略。指向式交互越顺滑，用户越容易把上下文交给 AI；一旦接上真实动作，权限边界就必须非常清楚。&lt;/p&gt;
&lt;p&gt;AI 可以读懂你指向的是一张订单，但是否修改订单、是否付款、是否发送邮件，必须有确认。否则，交互越自然，风险越不容易被察觉。&lt;/p&gt;
&lt;p&gt;所以 AI Pointer 后面真正难的，不只是识别屏幕上的东西。它还要回答几个更麻烦的问题：AI 看到了什么，用户知不知道；哪些动作可以直接做，哪些必须确认；识别错了怎么撤销；不同应用之间的权限怎么隔离。&lt;/p&gt;
&lt;p&gt;这些问题解决不好，它就是一个炫技功能。解决得好，它才可能成为系统级入口。&lt;/p&gt;
&lt;h2 id=&#34;对做产品和写内容的人有什么启发&#34;&gt;对做产品和写内容的人有什么启发
&lt;/h2&gt;&lt;p&gt;我不建议把 AI Pointer 理解成“鼠标加 AI”。那样太窄了。&lt;/p&gt;
&lt;p&gt;更准确地说，AI 正在从语言入口扩展到对象入口。&lt;/p&gt;
&lt;p&gt;过去我们教别人用 AI，重点是怎么描述需求。以后可能还要教另一件事：怎么组织界面里的对象，让 AI 能看得懂、选得准、动得起来。&lt;/p&gt;
&lt;p&gt;这对产品设计影响很大。&lt;/p&gt;
&lt;p&gt;如果一个页面全是无法识别的图片、混乱的卡片、没有语义结构的 canvas，AI 很难知道用户指向的到底是什么。反过来，如果页面对象有清晰层级、元数据和可操作状态，AI 就更容易把它们变成动作。&lt;/p&gt;
&lt;p&gt;以前我们说 UI 要让人看得懂。现在可能还要加一句：也要让 AI 解析得出。&lt;/p&gt;
&lt;p&gt;这会影响网页结构、组件命名、可访问性、表单设计、文档格式，也会影响内容创作。一篇文章、一张图、一个产品页面，如果天然适合被 AI 指向、引用和操作，它的价值会更高。&lt;/p&gt;
&lt;p&gt;这件事现在看起来还早，但方向已经露出来了。&lt;/p&gt;
&lt;h2 id=&#34;prompt-不会消失只是不用什么都靠它&#34;&gt;Prompt 不会消失，只是不用什么都靠它
&lt;/h2&gt;&lt;p&gt;我不觉得 AI Pointer 会让 Prompt 消失。&lt;/p&gt;
&lt;p&gt;复杂任务还是需要语言。你仍然要告诉 AI 目标、偏好、约束、判断标准。只是 Prompt 不必继续承担所有上下文搬运工作。&lt;/p&gt;
&lt;p&gt;更自然的交互大概会是这样：你先指向对象，用一句短话表达意图；AI 读取当前界面的语义上下文，给出动作；如果动作有风险，再向你确认。&lt;/p&gt;
&lt;p&gt;这比今天复制一堆材料、写一段长 Prompt、等 AI 猜你到底指什么，要接近真实协作得多。&lt;/p&gt;
&lt;p&gt;所以 AI Pointer 的意义不在于鼠标指针变酷了，而在于它提醒我们：AI 交互的下一步，未必是让每个人都成为提示词专家，也可能是让 AI 更像一个站在旁边、和你看着同一块屏幕的协作者。&lt;/p&gt;
&lt;p&gt;当 AI 能理解“这个”和“那个”，人机协作才开始有一点像人和人协作。&lt;/p&gt;
&lt;p&gt;提示词之后，下一个交互范式也许就是：指给 AI 看。&lt;/p&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://deepmind.google/blog/ai-pointer/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google DeepMind：Reimagining the mouse pointer for the AI era&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.google/products-and-platforms/products/chrome/bringing-chrome-ai-to-android/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google：Bringing the best of Gemini in Chrome to Android&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.google/products-and-platforms/platforms/android/meet-googlebook/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google：Introducing Googlebook, designed for Gemini Intelligence&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>AI 会写组件之后，真正值钱的是沙箱</title>
        <link>https://blog.ccino.org/p/ai-agent-infrastructure-21st-dev/</link>
        <pubDate>Sun, 10 May 2026 10:30:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/ai-agent-infrastructure-21st-dev/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/ai-agent-infrastructure-21st-dev/imgs/cover.png" alt="Featured image of post AI 会写组件之后，真正值钱的是沙箱" /&gt;&lt;p&gt;最近 StartupHub.ai 写了一篇关于 21st.dev 的公司分析。按原文说法，21st.dev 原本是一个面向 design engineers 的 React component registry，已经触达约 140 万开发者；现在它开始把重心转向 Agents SDK，提供 managed sandboxes、streaming、credential proxy 和 observability 等 Agent 基础设施。&lt;/p&gt;
&lt;p&gt;这件事乍看像是一个创业公司改方向：从组件库转去做更性感的 AI Agent。&lt;/p&gt;
&lt;p&gt;但我觉得它更该被放进 AI 编程工具演化的链条里看：当 AI 已经能写 UI、补接口、改 bug、跑脚本之后，稀缺点正在从“生成代码”转到“把任务安全、稳定、可审计地跑在真实用户面前”。&lt;/p&gt;
&lt;p&gt;AI 会写组件之后，值钱的是沙箱。&lt;/p&gt;
&lt;h2 id=&#34;从组件库到-agent-sdk看起来跳跃其实很顺&#34;&gt;从组件库到 Agent SDK，看起来跳跃，其实很顺
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/ai-agent-infrastructure-21st-dev/imgs/registry-to-sdk.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/ai-agent-infrastructure-21st-dev/imgs/registry-to-sdk_hu_a31023a80eea4e6f.png 480w, https://blog.ccino.org/p/ai-agent-infrastructure-21st-dev/imgs/registry-to-sdk_hu_e1a1e1860de77afa.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;从组件库到 Agent SDK 的路径&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;21st.dev 最早解决的是一个很前端的问题：开发者需要可复制、可改造、适合现代 AI 产品的 React 组件。&lt;/p&gt;
&lt;p&gt;这条路不难理解。过去几年，shadcn/ui、Tailwind CSS、Radix UI 这类工具改变了前端组件的分发方式。开发者越来越喜欢“把代码复制到自己项目里”，而不是安装一个黑盒 UI 库。因为复制进去之后，代码就是自己的，可以改，可以删，可以适配项目风格，也没有运行时依赖和授权焦虑。&lt;/p&gt;
&lt;p&gt;21st.dev 做的事情，大致就是把这种模式进一步社区化、搜索化、面向 AI 应用场景化。比如聊天界面、prompt box、流式消息、session history、输入框动画，这些都是今天 AI 产品里高频出现的 UI 模块。&lt;/p&gt;
&lt;p&gt;如果只看到这里，它像是一个 AI 时代的组件分发平台。&lt;/p&gt;
&lt;p&gt;但问题是：当 AI 编程工具越来越强，组件本身的稀缺性会下降。&lt;/p&gt;
&lt;p&gt;以前，一个漂亮的 chat UI、一个复杂的 settings panel、一个能跑起来的 dashboard，可能需要前端工程师花半天甚至几天。现在 Claude Code、Cursor、Codex 这类工具已经能很快生成第一版。组件库当然还有价值，但它从“节省开发时间的核心资产”，逐渐变成“提高起步质量和审美一致性的辅助资产”。&lt;/p&gt;
&lt;p&gt;如果 AI 能快速写出 UI，那么下一个瓶颈就会往后移动。&lt;/p&gt;
&lt;p&gt;前端页面有了，用户输入有了，模型调用有了，Agent 开始执行任务时，麻烦才集中出现：它要在哪里运行？能访问什么文件？能不能拿用户凭证？失败时怎么追踪？循环调用工具把成本烧上去怎么办？多个用户同时使用时，状态怎么隔离？&lt;/p&gt;
&lt;p&gt;这些问题都不是组件库能解决的。&lt;/p&gt;
&lt;p&gt;当 AI 已经能快速生成 UI，工具公司就得沿着链路继续往后走：从“帮你把界面搭起来”，走到“帮你把 Agent 跑起来”。&lt;/p&gt;
&lt;h2 id=&#34;ai-编程的瓶颈正在从生成转向执行&#34;&gt;AI 编程的瓶颈，正在从生成转向执行
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/ai-agent-infrastructure-21st-dev/imgs/agent-runtime-layer.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/ai-agent-infrastructure-21st-dev/imgs/agent-runtime-layer_hu_1c8a2bf5d7d42da2.png 480w, https://blog.ccino.org/p/ai-agent-infrastructure-21st-dev/imgs/agent-runtime-layer_hu_3604d420932b860.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Agent 生产化执行基础设施层&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;过去一年，开发者讨论 AI 编程时，最常见的问题是：哪个工具写代码更好？Claude Code、Cursor、Codex、Antigravity 谁更强？哪个模型更会修 bug？哪个上下文更长？&lt;/p&gt;
&lt;p&gt;这些问题当然重要，但它们仍然停留在“生成”层。&lt;/p&gt;
&lt;p&gt;生成层关心的是：模型能不能根据需求写出正确代码。&lt;/p&gt;
&lt;p&gt;生产层关心的是另一组问题：这些代码和工具调用能不能在真实环境里安全执行。&lt;/p&gt;
&lt;p&gt;一个本地 demo 可以很随意。你在自己的电脑上跑 Claude Code，让它改文件、装依赖、执行测试，出了问题最多回滚一下。即使它把目录弄乱了，也只是你自己的工作区。&lt;/p&gt;
&lt;p&gt;但如果你做的是一个面向外部用户的 AI Agent 产品，情况完全不同。&lt;/p&gt;
&lt;p&gt;用户让 Agent 分析仓库、生成代码、运行脚本、调用第三方 API、读取私有数据。每一步都有风险。它不能和其他用户共用不干净的运行环境，不能把 A 用户的文件泄露给 B 用户，不能让模型在上下文里看到原始 API key，也不能在执行失败后只留下一句“出错了”。&lt;/p&gt;
&lt;p&gt;这就是 21st.dev 这类 Agent 基础设施想切入的地方。&lt;/p&gt;
&lt;p&gt;原文提到的几个模块，其实正好对应 Agent 产品从玩具到生产的关键门槛。&lt;/p&gt;
&lt;p&gt;第一个是 sandboxed execution。Agent 需要一个隔离环境来运行代码和工具调用。这个环境最好每次会话独立创建，用完销毁。它不能污染其他 session，也不能留下不可控状态。原文提到 21st.dev 使用 E2B microVM 作为隔离基础，再在上层管理 session 生命周期、warm pool 和 API 表面。&lt;/p&gt;
&lt;p&gt;第二个是 streaming infrastructure。好用的 Agent 产品不能让用户盯着一个 loading 圈等几分钟。模型 token、工具调用、执行日志、阶段性结果，都需要实时返回给前端。看起来只是 SSE 或 WebSocket，实际到了生产环境，会遇到断连、半截 JSON、重试、顺序错乱、客户端状态同步等一堆细碎问题。&lt;/p&gt;
&lt;p&gt;第三个是 credential proxy。这个点尤其关键。很多 Agent 的价值来自“代替用户操作外部系统”，比如 GitHub、Linear、Slack、Stripe、数据库、云服务。但如果直接把用户 API key 塞进模型上下文或执行环境，安全边界会非常糟糕。更合理的方式是让代理层在网络请求层注入凭证，Agent 本身不直接持有原始 secret。&lt;/p&gt;
&lt;p&gt;第四个是 observability。Agent 不是普通函数调用。它可能连续推理、循环调用工具、生成中间文件、执行命令、再根据结果改计划。出错时，你不能只看最终错误栈，而要知道它在哪一步开始偏离，调用了什么工具，花了多少 token，为什么进入循环。可观测性既是调试工具，也是成本控制和计费系统的基础。&lt;/p&gt;
&lt;p&gt;这些能力听起来都不如“一个会写代码的模型”酷，但它们决定了 Agent 能不能进入生产。&lt;/p&gt;
&lt;h2 id=&#34;为什么前端工具公司会看到这个机会&#34;&gt;为什么前端工具公司会看到这个机会
&lt;/h2&gt;&lt;p&gt;21st.dev 这个转向有意思的地方在于，它不是从云基础设施或 DevOps 领域切进来的，而是从前端组件库切进来的。&lt;/p&gt;
&lt;p&gt;这条路径并不奇怪。&lt;/p&gt;
&lt;p&gt;AI Agent 的第一批产品，很多会从前端和应用层长出来，而不是从底层 infra 长出来。一个团队先做聊天界面、任务面板、代码生成体验、工作流编辑器，然后很快发现：界面只是开始，背后的执行系统才麻烦。&lt;/p&gt;
&lt;p&gt;前端产品天然离用户更近，也更早感受到“体验断裂”。&lt;/p&gt;
&lt;p&gt;用户点击“生成项目”之后，不关心你用了什么模型，也不关心你后端怎么调度。他只关心这个任务能不能跑、日志能不能看、失败能不能恢复、权限是否安全、结果是否可复现。&lt;/p&gt;
&lt;p&gt;这就让前端工具公司有机会沿着用户体验往基础设施下沉。&lt;/p&gt;
&lt;p&gt;它们不是先卖一个抽象的 sandbox API，而是先拥有开发者入口。21st.dev 的组件 registry 如果确实已经积累了大量开发者使用，那么它就有一个很自然的漏斗：开发者先来找 AI 产品组件，复制代码，搭出界面；当他们开始把 Agent 产品推向真实用户时，就会遇到运行、隔离、凭证和观测问题；这时 Agents SDK 就成了顺手的下一步。&lt;/p&gt;
&lt;p&gt;这比冷启动卖 infra 要轻得多。&lt;/p&gt;
&lt;p&gt;开发者工具里，分发往往比技术更难。很多基础设施产品不是因为不好用而失败，而是因为开发者根本不知道它，或者没有在合适的时刻遇到它。组件库本身也许不是最终商业化重心，但它可以成为入口和信任资产。&lt;/p&gt;
&lt;p&gt;这家公司案例最值得拆的地方也在这里：registry 负责分发，SDK 负责变现。&lt;/p&gt;
&lt;h2 id=&#34;agent-基础设施到底难不难&#34;&gt;Agent 基础设施到底难不难？
&lt;/h2&gt;&lt;p&gt;从纯技术角度看，21st.dev 做的东西并不是不可复制。&lt;/p&gt;
&lt;p&gt;沙箱可以基于 E2B、Firecracker、容器或其他隔离方案；流式输出可以基于 SSE；凭证代理可以用成熟的 token vault 和请求代理模式；可观测性也有 OpenTelemetry、日志系统、trace viewer 等大量现成经验。&lt;/p&gt;
&lt;p&gt;所以这不是一个“只有他们能做”的硬科技壁垒。&lt;/p&gt;
&lt;p&gt;难点在组合。&lt;/p&gt;
&lt;p&gt;做一个 sandbox demo 不难。接一个 LLM streaming API 也不难。保存工具调用日志仍然不难。难的是在多租户、真实用户、高并发、可计费、可调试、可回滚的环境下，把这些东西组合成一个开发者愿意依赖的生产系统。&lt;/p&gt;
&lt;p&gt;更难的是信任。&lt;/p&gt;
&lt;p&gt;如果一个 SDK 只是帮你渲染按钮，迁移成本很低。不好用就删掉，换另一个组件。&lt;/p&gt;
&lt;p&gt;但如果一个 SDK 接管了你的 Agent 运行环境、凭证代理、执行日志和计费数据，它就会嵌入你的生产架构。你不会轻易替换它，也不会轻易采用它。&lt;/p&gt;
&lt;p&gt;这类基础设施的商业逻辑通常是：早期获客很难，一旦进入生产就很黏。&lt;/p&gt;
&lt;p&gt;所以 21st.dev 的挑战不是“能不能做出一个 SDK”，而是“能不能让开发者相信它足够稳定，值得把生产 Agent 放上去”。&lt;/p&gt;
&lt;p&gt;它原来的开发者社区就变得很重要。社区不是装饰，而是降低信任成本的方式。一个完全陌生的 infra 公司说自己能托管你的 Agent，你会谨慎；一个你已经用过它组件、看过它代码、在社区里见过别人使用的开发者品牌，说自己把踩过的坑产品化了，接受度会高一些。&lt;/p&gt;
&lt;h2 id=&#34;这和-claude-codecursorantigravity-有什么关系&#34;&gt;这和 Claude Code、Cursor、Antigravity 有什么关系
&lt;/h2&gt;&lt;p&gt;很多人会把这类新闻直接理解成“又一个 Claude Code 竞争者”。我觉得这个理解不太准确。&lt;/p&gt;
&lt;p&gt;Claude Code、Cursor、Codex、Antigravity 主要解决的是开发者如何与代码库协作。它们是工作台、IDE、CLI、agentic coding environment。&lt;/p&gt;
&lt;p&gt;21st.dev 这类 Agent infrastructure 更像是面向“要把 Agent 能力嵌进自己产品里的开发团队”。&lt;/p&gt;
&lt;p&gt;前者帮你开发软件，后者帮你交付一个会执行任务的软件。&lt;/p&gt;
&lt;p&gt;当然，两者会越来越靠近。&lt;/p&gt;
&lt;p&gt;当 Claude Code 这类工具越来越强，开发者会开始想：能不能把类似能力放进我的 SaaS？能不能让用户在我的产品里也拥有一个能改配置、查数据、跑流程、调用接口的 Agent？这时需要的就不是一个本地 CLI，而是一整套托管执行层。&lt;/p&gt;
&lt;p&gt;Agent 生态未来可能会分成几层。&lt;/p&gt;
&lt;p&gt;模型层提供推理能力。工作台层提供人机协作界面。工具协议层让 Agent 调用外部能力。执行基础设施层负责沙箱、权限、观测和计费。应用层再把这些能力包装成具体场景。&lt;/p&gt;
&lt;p&gt;今天很多产品还把这些层混在一起。一个创业团队做 Agent，既要写前端，又要接模型，又要设计工具调用，又要处理执行环境，还要做日志和账单。结果很容易变成每家都重复造同一套不稳定轮子。&lt;/p&gt;
&lt;p&gt;如果 21st.dev 这类公司能把执行层抽出来，它们就会成为 Agent 应用爆发前的“水电煤”。&lt;/p&gt;
&lt;h2 id=&#34;对国内-ai-工具创业的启发别只做壳要做执行层&#34;&gt;对国内 AI 工具创业的启发：别只做壳，要做执行层
&lt;/h2&gt;&lt;p&gt;这个案例对国内 AI 工具创业也有参考价值。&lt;/p&gt;
&lt;p&gt;过去一年，很多 AI 产品的形态都太像“壳”：套一个模型，做一个聊天界面，加一些 prompt 模板，再包装成某个垂直场景。短期能上线，长期很容易同质化。&lt;/p&gt;
&lt;p&gt;Agent 时代的壳会更快贬值。因为 UI 可以生成，prompt 可以复制，模型能力会外溢，用户对“又一个聊天框”的耐心越来越低。&lt;/p&gt;
&lt;p&gt;更有价值的部分，往往藏在那些不容易展示、但真实影响交付的地方。&lt;/p&gt;
&lt;p&gt;比如执行环境。你的 Agent 能不能安全地跑代码、改文件、调用系统？&lt;/p&gt;
&lt;p&gt;比如权限模型。它能访问什么，不能访问什么，用户如何授权，企业如何审计？&lt;/p&gt;
&lt;p&gt;再比如状态、记忆和可观测性。它能不能记住项目上下文，同时避免错误记忆长期污染？它做了什么、为什么这么做、哪里失败、花了多少钱，能不能被追踪？&lt;/p&gt;
&lt;p&gt;最后是交付闭环。它不只是生成建议，还要能完成任务、提交结果、等待批准、必要时回滚。&lt;/p&gt;
&lt;p&gt;这些东西不一定适合做成最炫的发布视频，但它们决定产品能不能从 demo 进入生产。&lt;/p&gt;
&lt;p&gt;如果一个团队只做“AI 帮你生成页面”，它很快会被模型能力吞掉。如果它能做“AI 生成之后，安全运行、持续调试、可控交付”，价值就厚很多。&lt;/p&gt;
&lt;p&gt;21st.dev 的转向，其实是在回答这个问题：当 AI 把前端生产力大幅拉平之后，一个前端工具公司还能往哪里走？&lt;/p&gt;
&lt;p&gt;它给出的答案是：往执行层走。&lt;/p&gt;
&lt;h2 id=&#34;组件不是终点运行时才是战场&#34;&gt;组件不是终点，运行时才是战场
&lt;/h2&gt;&lt;p&gt;我不确定 21st.dev 最后一定能赢。Agent 基础设施这个方向会很拥挤，模型厂商、云厂商、IDE 公司、开源框架、企业 SaaS 都可能往里挤。&lt;/p&gt;
&lt;p&gt;OpenAI 和 Anthropic 可以从模型层往下做工具和执行环境；Cloudflare、Vercel、AWS 可以从云平台往上做 Agent runtime；Cursor、Google Antigravity 这类工作台也可能把托管执行能力纳入自己的产品。&lt;/p&gt;
&lt;p&gt;21st.dev 的机会在于，它从开发者社区和前端应用场景出发，可能更懂 AI 产品开发者最早遇到的具体痛点。&lt;/p&gt;
&lt;p&gt;这不是一个“技术最难者胜”的市场，而是一个“谁先在正确入口建立信任，谁就有机会变成默认选项”的市场。&lt;/p&gt;
&lt;p&gt;过去，前端基础设施的默认选项可能是 npm、Vercel、shadcn/ui、Tailwind。未来，如果 AI Agent 真的进入大量应用，新的默认选项可能会出现在 sandbox、credential proxy、tool-call tracing、agent observability 这些看起来很底层的地方。&lt;/p&gt;
&lt;p&gt;AI 编程先让代码更容易被生成。&lt;/p&gt;
&lt;p&gt;接着，它会逼着团队重新处理维护问题。&lt;/p&gt;
&lt;p&gt;再往后，会执行任务的 Agent 要安全进入生产。&lt;/p&gt;
&lt;p&gt;21st.dev 的转向说明，已经有人在下注第三件事。&lt;/p&gt;
&lt;p&gt;这也是为什么我觉得这个案例值得写。它不是一个普通的“公司 pivot”故事，而是一个信号：AI 工具的价值正在从“帮你写出来”，迁移到“帮你跑得住”。&lt;/p&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.startuphub.ai/ai-news/claudes-corner/2026/claudes-corner-21st-dev-yc-w2026&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;StartupHub.ai：Claude&amp;rsquo;s Corner: 21st.dev — The NPM for Design Engineers Goes All-In on Agent Infrastructure&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://21st.dev/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;21st.dev 官方网站&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://e2b.dev/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;E2B：Code Interpreting for AI Apps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ui.shadcn.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;shadcn/ui 官方文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://modelcontextprotocol.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Model Context Protocol 官方文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=iLLrzUIt1sU&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;YouTube：Advanced Vibe Code | Agentic Workflow with CLI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Vibe Coding 的下一站不是 App，而是公司内部原型工厂</title>
        <link>https://blog.ccino.org/p/vibe-coding-internal-prototype-factory-2026/</link>
        <pubDate>Sat, 09 May 2026 10:30:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/vibe-coding-internal-prototype-factory-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/vibe-coding-internal-prototype-factory-2026/imgs/cover.png" alt="Featured image of post Vibe Coding 的下一站不是 App，而是公司内部原型工厂" /&gt;&lt;p&gt;最近看到一条关于 Stripe 内部 Protodash（可以理解成“原型工作台”）的讨论，我第一反应是：Vibe Coding（氛围编程）这个词，可能又要换一层意思了。&lt;/p&gt;
&lt;p&gt;过去我们聊 Vibe Coding，基本围绕两种故事打转。&lt;/p&gt;
&lt;p&gt;一种是个人爽文：不会写代码的人，靠 Claude Code、Cursor、Lovable 之类的工具，几天做出一个 App，上线、收钱、截图发 X。&lt;/p&gt;
&lt;p&gt;另一种是反面教材：AI 搓出一堆“看起来能跑”的代码，真上线以后权限、数据、支付、性能全是坑。然后大家得出一个结论：Vibe Coding 适合做玩具，不适合进生产。&lt;/p&gt;
&lt;p&gt;这个判断没错，但有点不够用了。&lt;/p&gt;
&lt;p&gt;因为更大的变化，可能不是“个人能不能靠 AI 做 App”，而是公司开始把 Vibe Coding 放进内部流程，变成一个组织级的原型工厂。&lt;/p&gt;
&lt;p&gt;按 Twitter/X 上的说法，Stripe 内部的 Protodash 是一个 AI 原型工具，可以让设计师和 PM（产品经理）快速生成真实、可点击、接近产品形态的原型。这里我不想把它当成某个新工具来写，毕竟公开信息有限，更值得看的其实是它背后的方向：&lt;strong&gt;原型生成正在从个人外挂，变成产品组织的基础设施。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;个人乱写代码，最多是一个人的项目烂掉。&lt;/p&gt;
&lt;p&gt;但公司开始规模化生成原型，影响的就不是某个 App，而是 PM、设计师、工程师之间怎么协作。&lt;/p&gt;
&lt;h2 id=&#34;个人-vibe-coding解决的是我能不能做出来&#34;&gt;个人 Vibe Coding，解决的是“我能不能做出来”
&lt;/h2&gt;&lt;p&gt;最早的 Vibe Coding 很像一个人的外挂。&lt;/p&gt;
&lt;p&gt;你有一个想法，不想花几周学前端、后端、部署、数据库，就把需求丢给 AI：帮我做一个记账 App，帮我做一个 landing page，帮我写一个 Chrome 插件。&lt;/p&gt;
&lt;p&gt;AI 很快给你一堆代码。你再复制报错、继续追问、让它修 bug，把东西一点点推到能跑。&lt;/p&gt;
&lt;p&gt;这件事让人兴奋，是因为它把“从想法到界面”的距离压得很短。以前你得先找程序员、搭环境、选框架、写样板代码。现在你可以先看到一个东西，再决定它值不值得继续做。&lt;/p&gt;
&lt;p&gt;但这里有个坑：个人 Vibe Coding 的默认产物，通常不是产品，而是“能跑的样子”。&lt;/p&gt;
&lt;p&gt;它可能没有清晰的数据模型，没有权限边界，没有异常处理，也没有长期可维护的架构。它最擅长的是把想法变成一个看得见、点得动、能录屏的视频。&lt;/p&gt;
&lt;p&gt;所以 Reddit 上那条 “Vibe Coding vs. Production reality” 会有那么高的热度。大家不是否认 AI 能写代码，而是在提醒：能生成代码，和能交付一个长期可维护的软件，是两件事。&lt;/p&gt;
&lt;p&gt;这个批评成立。&lt;/p&gt;
&lt;p&gt;但如果只停在这里，就会错过下一步。&lt;/p&gt;
&lt;h2 id=&#34;公司内部用-vibe-coding解决的是我们能不能更快理解一个想法&#34;&gt;公司内部用 Vibe Coding，解决的是“我们能不能更快理解一个想法”
&lt;/h2&gt;&lt;p&gt;个人使用 Vibe Coding，目标通常是“我想做个东西”。&lt;/p&gt;
&lt;p&gt;公司内部使用 Vibe Coding，目标更像是：“我们怎样更快判断这个想法到底长什么样。”&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/vibe-coding-internal-prototype-factory-2026/imgs/prototype-factory.png&#34;
	width=&#34;1280&#34;
	height=&#34;720&#34;
	srcset=&#34;https://blog.ccino.org/p/vibe-coding-internal-prototype-factory-2026/imgs/prototype-factory_hu_194d0e8e9a51804c.png 480w, https://blog.ccino.org/p/vibe-coding-internal-prototype-factory-2026/imgs/prototype-factory_hu_bc63771986d829dc.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;AI 原型工厂把需求、设计和代码转换成可点击原型&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;这两句话差很多。&lt;/p&gt;
&lt;p&gt;传统产品流程里，一个新功能从想法到原型，要经过很多层翻译：PM 写需求文档，设计师画线框图，设计评审，工程师评估可行性，再做 demo 或技术验证。&lt;/p&gt;
&lt;p&gt;这个过程慢，不只是因为人多，而是每个角色手里的表达工具不同。&lt;/p&gt;
&lt;p&gt;PM 用文字，设计师用 Figma，工程师用代码。大家看似在讨论同一个东西，其实经常是在不同抽象层里互相猜。&lt;/p&gt;
&lt;p&gt;内部 AI 原型工具的价值，就在于让团队更早拥有一个共同对象。&lt;/p&gt;
&lt;p&gt;不是一段需求描述，也不是几张静态设计稿，而是一个能点、能跳转、能模拟流程的产品雏形。&lt;/p&gt;
&lt;p&gt;以前大家争论“这个流程会不会太复杂”，现在可以直接点一遍。&lt;/p&gt;
&lt;p&gt;以前设计师说“这里需要一个更轻量的引导”，现在可以马上生成几个版本。&lt;/p&gt;
&lt;p&gt;以前工程师到很后面才发现某个交互背后藏着复杂状态，现在原型阶段就可能暴露一部分问题。&lt;/p&gt;
&lt;p&gt;这就是原型工厂的意义。它不是为了替代工程团队直接交付生产代码，而是让组织更快地把模糊想法变成可讨论对象。&lt;/p&gt;
&lt;p&gt;Vibe Coding 到了这里，就不再只是“让非程序员写 App”。它变成了文档、设计稿和正式代码之间的中间层。&lt;/p&gt;
&lt;h2 id=&#34;原型工厂的好处是让想法变得可触摸&#34;&gt;原型工厂的好处，是让想法变得可触摸
&lt;/h2&gt;&lt;p&gt;公司里很浪费时间的一件事，是讨论一个没人真正见过的东西。&lt;/p&gt;
&lt;p&gt;PM 脑子里有一个流程，设计师脑子里有一个界面，工程师脑子里有一个系统拆法。等真的做出来，才发现三个人想的根本不是同一个东西。&lt;/p&gt;
&lt;p&gt;AI 原型工具最直接的作用，就是降低这种想象误差。&lt;/p&gt;
&lt;p&gt;比如一个新 onboarding 流程。过去你可能先写文档，再画十几张 Figma。评审会上大家讨论按钮明显不明显、步骤是不是太长、用户会不会迷路。&lt;/p&gt;
&lt;p&gt;但静态稿有个问题：它永远比真实使用更顺。&lt;/p&gt;
&lt;p&gt;真实产品的问题，往往出现在点击之间：等待、返回、空状态、错误提示、输入中断、用户不按预期操作。&lt;/p&gt;
&lt;p&gt;如果 AI 能快速生成一个可点击原型，团队就可以提前感受到这些问题。产品讨论也会从“我觉得”变成“我们试一下”。&lt;/p&gt;
&lt;p&gt;这对大公司尤其有价值。大公司不是没有想法，而是想法太多，验证太慢。每一个想法都排进正式开发队列，工程团队会被拖死；只靠文档和评审过滤，很多问题又暴露得太晚。&lt;/p&gt;
&lt;p&gt;AI 原型平台如果用得好，可以变成一个低成本试错层：想法先在这里跑一遍。能跑通，再进入设计和工程流程；跑不通，就早点丢掉。&lt;/p&gt;
&lt;h2 id=&#34;麻烦也在这里原型会伪装成产品&#34;&gt;麻烦也在这里：原型会伪装成产品
&lt;/h2&gt;&lt;p&gt;问题是，原型一旦变得太像产品，就很容易被误认为产品。&lt;/p&gt;
&lt;p&gt;手绘稿不会骗过任何人，大家都知道它只是草图。Figma 再漂亮，也还是设计稿。&lt;/p&gt;
&lt;p&gt;但 AI 生成的可交互原型不一样。它有页面，有按钮，有跳转，甚至有假数据、动画和局部状态。对于非技术角色来说，它看起来已经“差不多能用了”。&lt;/p&gt;
&lt;p&gt;于是新的组织摩擦就来了。&lt;/p&gt;
&lt;p&gt;既然它都能点了，为什么不能直接上线？&lt;/p&gt;
&lt;p&gt;既然 AI 已经写了代码，工程师是不是只要整理一下？&lt;/p&gt;
&lt;p&gt;既然 PM 和设计师已经把流程跑通了，工程团队为什么还说要重做？&lt;/p&gt;
&lt;p&gt;工程师看到的是另一套东西：状态管理是不是合理，权限边界在哪里，异常流程怎么处理，数据模型能不能支撑后续扩展，接口失败怎么办，日志和监控有没有，安全风险在哪里。&lt;/p&gt;
&lt;p&gt;这些东西不会出现在漂亮的原型里。&lt;/p&gt;
&lt;p&gt;更麻烦的是，AI 为了“先跑起来”，通常会选择最短路径。硬编码、临时状态、假数据、重复逻辑、脆弱组件结构，都可能被包装在一个看似流畅的界面下面。&lt;/p&gt;
&lt;p&gt;如果组织没有明确边界，这些原型代码就可能被一路带进生产。原型债变成技术债，技术债再变成维护债。最后工程团队既没参与早期决策，又要为后期稳定性负责。&lt;/p&gt;
&lt;p&gt;这才是 Vibe Coding 平台化真正危险的地方。&lt;/p&gt;
&lt;p&gt;不是个人写烂代码，而是组织开始批量制造“看起来已经完成”的半成品。&lt;/p&gt;
&lt;h2 id=&#34;角色边界会被重新画一遍&#34;&gt;角色边界会被重新画一遍
&lt;/h2&gt;&lt;p&gt;公司内部有了 AI 原型工厂以后，PM、设计师、工程师的边界都会被挪动。&lt;/p&gt;
&lt;p&gt;PM 会更像产品导演。过去 PM 的主要产物是需求文档、流程图、优先级和协调。以后 PM 可能需要直接拿出可交互原型，用它表达需求、争取资源、做用户测试。&lt;/p&gt;
&lt;p&gt;这会提高好 PM 的上限，也会暴露差 PM 的问题。文字可以模糊，原型很难模糊。一个流程到底顺不顺，一个页面有没有考虑空状态，一个需求是不是自洽，点一遍就能看出来。&lt;/p&gt;
&lt;p&gt;设计师也会被推到新的位置。&lt;/p&gt;
&lt;p&gt;如果 AI 能快速生成界面，设计师的价值就不只是“画页面”，而是定义体验标准、判断交互质量、控制视觉一致性，以及决定哪些原型值得进入更严肃的设计系统。&lt;/p&gt;
&lt;p&gt;工程师的变化可能最大。&lt;/p&gt;
&lt;p&gt;工程师不再只是“把设计稿实现出来”的人，而要更早介入原型评估：哪些部分可以参考，哪些必须重写；哪些交互背后有隐藏复杂度；哪些需求看起来简单，但会破坏系统边界。&lt;/p&gt;
&lt;p&gt;所以我觉得，工程师最好不要站在原型工厂的最后背锅，而要站在出口处。&lt;/p&gt;
&lt;p&gt;也就是说，组织需要一个明确转换流程：原型可以验证想法，但不能默认进入生产；原型代码可以作为参考，但不能默认成为正式代码；原型评审不只看体验，也要看实现风险；进入工程排期之前，必须完成一次“原型到产品”的边界确认。&lt;/p&gt;
&lt;p&gt;这不是为了增加流程感，而是在保护团队。&lt;/p&gt;
&lt;p&gt;没有这个边界，AI 原型越强，组织越容易误判交付成本。&lt;/p&gt;
&lt;h2 id=&#34;公司缺的不是更多原型而是原型治理&#34;&gt;公司缺的不是更多原型，而是原型治理
&lt;/h2&gt;&lt;p&gt;很多团队看到这类工具，第一反应会是：我们也要做一个内部 AI 原型平台。&lt;/p&gt;
&lt;p&gt;可以做，但别急着兴奋。&lt;/p&gt;
&lt;p&gt;原型生成能力很快会变成标配。真正拉开差距的，不是你能不能生成原型，而是你有没有能力管理这些原型。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/vibe-coding-internal-prototype-factory-2026/imgs/prototype-governance.png&#34;
	width=&#34;1280&#34;
	height=&#34;720&#34;
	srcset=&#34;https://blog.ccino.org/p/vibe-coding-internal-prototype-factory-2026/imgs/prototype-governance_hu_adc12bfb7619eed5.png 480w, https://blog.ccino.org/p/vibe-coding-internal-prototype-factory-2026/imgs/prototype-governance_hu_7775635ca737be64.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;原型治理闸门筛选 AI 生成原型进入正式工程化&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;一个公司内部如果开始规模化使用 AI 原型，至少要想清楚几件事。&lt;/p&gt;
&lt;p&gt;它到底用来干什么？是用户访谈、内部评审、方向探索，还是需求表达？不同用途对质量要求完全不同。&lt;/p&gt;
&lt;p&gt;它什么时候归档、什么时候废弃、什么时候进入正式项目？如果没有生命周期管理，内部很快会堆满一堆没人敢删、没人维护、但又被反复引用的半成品。&lt;/p&gt;
&lt;p&gt;谁有权把原型推进到工程阶段？如果任何 PM 或设计师都能拿着一个 AI 原型说“这个已经差不多了”，工程团队会非常被动。&lt;/p&gt;
&lt;p&gt;原型代码能不能复用？我的直觉是默认不允许。除非经过工程审查，否则 AI 生成的原型代码应该被视为一次性材料，不是生产资产。&lt;/p&gt;
&lt;p&gt;原型能不能接真实数据？这点尤其关键。内部工具一旦接入真实用户数据、真实业务接口、真实权限系统，风险就不再是“原型不好看”，而是安全、隐私和合规问题。&lt;/p&gt;
&lt;p&gt;所以公司内部原型工厂最重要的不是生成能力，而是边界设计。&lt;/p&gt;
&lt;p&gt;没有边界，它就是一个技术债制造机。有边界，它才可能成为组织试错机器。&lt;/p&gt;
&lt;h2 id=&#34;别把ai-做原型当成省工程人力&#34;&gt;别把“AI 做原型”当成省工程人力
&lt;/h2&gt;&lt;p&gt;国内团队很容易误读这件事。&lt;/p&gt;
&lt;p&gt;看到 Stripe 用内部 AI 原型工具，就立刻想到：那我们是不是可以少配几个前端？是不是 PM 自己就能把需求做出来？是不是设计师可以直接交付代码？&lt;/p&gt;
&lt;p&gt;这个方向大概率会出问题。&lt;/p&gt;
&lt;p&gt;AI 原型平台的价值，不是用非工程角色替代工程师，而是减少正式工程投入之前的无效沟通和错误方向。&lt;/p&gt;
&lt;p&gt;它省掉的不是工程质量，而是早期探索成本。&lt;/p&gt;
&lt;p&gt;如果把它当成省人力工具，结果通常是前期看起来更快，后期修起来更贵。因为原型阶段越随意，进入生产时补的账越多。&lt;/p&gt;
&lt;p&gt;更健康的做法，是把 AI 原型平台放在“需求发现”和“正式开发”之间。&lt;/p&gt;
&lt;p&gt;它可以回答：这个想法有没有感觉？用户路径是不是顺？核心交互能不能成立？几个方案里哪个更值得继续？&lt;/p&gt;
&lt;p&gt;但它不应该直接回答：系统架构是否合理？代码能不能长期维护？功能能不能安全上线？&lt;/p&gt;
&lt;p&gt;这些仍然是工程问题。&lt;/p&gt;
&lt;p&gt;换句话说，Vibe Coding 进入公司以后，最好的定位不是“让所有人都变成程序员”，而是“让所有人更早看见自己的想法到底长什么样”。&lt;/p&gt;
&lt;p&gt;前者会制造混乱，后者会提高组织学习速度。&lt;/p&gt;
&lt;h2 id=&#34;vibe-coding-的下一站是组织学习速度的竞争&#34;&gt;Vibe Coding 的下一站，是组织学习速度的竞争
&lt;/h2&gt;&lt;p&gt;如果只看个人创作者，Vibe Coding 的故事很容易变成爽文：一个人，一个 AI，一个 App，一夜上线。&lt;/p&gt;
&lt;p&gt;但放到公司内部，它会复杂得多，也更有价值。&lt;/p&gt;
&lt;p&gt;公司不缺一个能写代码的人。公司缺的是让想法快速暴露问题的机制。&lt;/p&gt;
&lt;p&gt;很多产品失败，不是因为代码写得慢，而是因为团队太晚才发现需求不成立、流程不顺、用户不懂、实现成本过高。AI 原型工厂真正可能改变的，是这些问题暴露的时间点。&lt;/p&gt;
&lt;p&gt;它让想法更早变成可触摸的东西，也让团队更早面对一个不舒服的问题：这个东西看起来很酷，但真的值得工程化吗？&lt;/p&gt;
&lt;p&gt;所以我不觉得 Vibe Coding 的下一站是更多独立开发者做 App。那当然还会发生，但不是最重要的部分。&lt;/p&gt;
&lt;p&gt;更重要的是，它会进入公司内部，变成 PM、设计师、工程师之间的新协作层。&lt;/p&gt;
&lt;p&gt;这个协作层会带来速度，也会带来债务；会减少误解，也会制造新的边界冲突；会让原型更容易出现，也会让“什么才算产品”这个问题变得更难回答。&lt;/p&gt;
&lt;p&gt;未来真正成熟的团队，可能不是最会用 AI 生成代码的团队，而是最会管理 AI 原型边界的团队。&lt;/p&gt;
&lt;p&gt;因为在 AI 时代，生成一个东西会越来越便宜。&lt;/p&gt;
&lt;p&gt;但决定什么东西值得被认真做，仍然很贵。&lt;/p&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/clairevo/status/2051342163188011323&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Twitter/X: Stripe Protodash vibe coding platform&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://reddit.com/r/ClaudeAI/comments/1t3bk3x/vibe_coding_vs_production_reality/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reddit: Vibe Coding vs. Production reality&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://sdtimes.com/ai/may-8-2026-ai-updates-from-the-past-week-coder-agents-launch-snyk-claude-partnership-opsera-cursor-partnership-and-more/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SD Times: AI updates from the past week&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://futurumgroup.com/insights/atlassian-teamwork-graph-the-secret-weapon-thats-no-longer-a-secret/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;The Futurum Group: Atlassian Teamwork Graph and Rovo MCP Server&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=5g67pNRCIZk&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;YouTube: AI Driven Development | Write Code with AI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>AI 编程助手的供应链危机：当可信仓库变成提示词陷阱</title>
        <link>https://blog.ccino.org/p/ai-coding-supply-chain-crisis-2026/</link>
        <pubDate>Fri, 08 May 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/ai-coding-supply-chain-crisis-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/ai-coding-supply-chain-crisis-2026/imgs/cover.png" alt="Featured image of post AI 编程助手的供应链危机：当可信仓库变成提示词陷阱" /&gt;
    &lt;blockquote&gt;
        &lt;p&gt;这篇文章基于 &lt;a class=&#34;link&#34; href=&#34;https://www.securityweek.com/ai-coding-agents-could-fuel-next-supply-chain-crisis/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SecurityWeek 对 AI coding agents 供应链风险的报道&lt;/a&gt; 和 &lt;a class=&#34;link&#34; href=&#34;https://www.theregister.com/security/2026/05/07/claude-code-trust-prompt-can-trigger-one-click-rce/5235319&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;The Register 对 Claude Code trust prompt 争议的报道&lt;/a&gt; 展开。文中不把单个案例扩大成确定性结论，而是讨论 AI 编程助手进入开发流程后，软件供应链安全正在出现的新攻击面。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;过去攻击开发者，最经典的路径是投毒依赖包。&lt;/p&gt;
&lt;p&gt;上传一个名字相似的 npm 包，伪装成热门库；在开源项目里混入恶意代码，等待下游自动更新；偷走 CI/CD 凭据，在构建链路里植入后门。这类攻击的共同点是，它们最终都要让某段恶意代码被执行。&lt;/p&gt;
&lt;p&gt;但 AI 编程助手改变了这个前提。&lt;/p&gt;
&lt;p&gt;因为它不是只执行代码，它还会阅读代码之外的东西。README、issue、commit message、注释、终端输出、网页文档、错误日志，甚至某个项目里看起来像说明文档的文本，都可能被它当成任务上下文。只要这些内容进入模型窗口，就有机会影响它接下来怎么理解任务、怎么修改代码、怎么调用工具。&lt;/p&gt;
&lt;p&gt;这就是 AI 编程时代的供应链新问题：攻击者未必需要投毒代码，投毒上下文就可能够了。&lt;/p&gt;
&lt;h2 id=&#34;从代码供应链到提示词供应链&#34;&gt;从代码供应链到提示词供应链
&lt;/h2&gt;&lt;p&gt;传统软件供应链安全关心的是几个问题：依赖从哪里来，构建脚本是否可信，谁能写入仓库，CI/CD 凭据有没有泄露，发布产物有没有被篡改。&lt;/p&gt;
&lt;p&gt;这些问题仍然重要。但 AI coding agent 加进来之后，开发流程多了一层隐形解释器。&lt;/p&gt;
&lt;p&gt;开发者过去打开一个陌生仓库，通常会自己读 README，自己判断脚本能不能跑，自己决定是否执行命令。现在很多人会让 AI 助手先读项目结构，解释代码，修 bug，跑测试，甚至自动提交修改。&lt;/p&gt;
&lt;p&gt;这时 README 不再只是给人看的说明书，它也变成了给 Agent 看的指令环境。&lt;/p&gt;
&lt;p&gt;如果一个仓库里的 README 写着“为了修复这个项目，请先运行某某命令”，人类开发者可能会怀疑一下。但 AI 助手如果没有清晰的权限边界，可能会把它当成项目维护者提供的合法步骤。更隐蔽的攻击不会写得这么直白，而是藏在注释、测试失败输出、issue 模板或文档片段里，让模型误以为自己正在遵循本项目的开发规范。&lt;/p&gt;
&lt;p&gt;这类风险和传统 prompt injection 很像，但场景更危险。聊天机器人被提示词注入，最多可能泄露对话内容或给出错误答案；编程 Agent 被上下文注入，可能会改代码、执行命令、读取文件、触发网络请求，甚至影响真实生产系统。&lt;/p&gt;
&lt;p&gt;风险从“说错话”变成了“做错事”。&lt;/p&gt;
&lt;h2 id=&#34;ai-编程助手为什么会扩大攻击面&#34;&gt;AI 编程助手为什么会扩大攻击面
&lt;/h2&gt;&lt;p&gt;AI 编程助手的优势，恰好也是它的风险来源。&lt;/p&gt;
&lt;p&gt;它能跨文件理解项目，所以必须读取大量上下文。它能自动修复问题，所以必须生成和修改代码。它能帮你跑测试，所以可能需要执行 shell 命令。它能连接 GitHub、浏览器、数据库、云服务，所以可能接触外部系统。它能连续工作几十步，所以单次误判可能被放大成一整串错误操作。&lt;/p&gt;
&lt;p&gt;这和传统 IDE 插件不一样。&lt;/p&gt;
&lt;p&gt;一个普通的代码补全插件通常只在当前文件附近工作。它不会主动读整个仓库，也不会自己决定下一步命令。但 Agent 型编程工具的目标就是“替你完成任务”。为了完成任务，它需要形成计划、调用工具、读取结果、再调整计划。&lt;/p&gt;
&lt;p&gt;于是，攻击面从“代码执行入口”扩展到“决策输入入口”。&lt;/p&gt;
&lt;p&gt;只要某段文本能影响 Agent 的决策，它就变成了潜在攻击面。仓库里的文档、依赖里的说明、错误日志里的文本、网页里的教程，都不再只是背景材料，而是可能改变执行路径的输入。&lt;/p&gt;
&lt;p&gt;这就是所谓“提示词供应链”最麻烦的地方：它不一定会出现在安全扫描器熟悉的位置。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/ai-coding-supply-chain-crisis-2026/imgs/supply-chain-to-prompt-chain.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/ai-coding-supply-chain-crisis-2026/imgs/supply-chain-to-prompt-chain_hu_5de037baaa4be71e.png 480w, https://blog.ccino.org/p/ai-coding-supply-chain-crisis-2026/imgs/supply-chain-to-prompt-chain_hu_80a4a91a960369b7.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;从代码供应链到提示词供应链&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;安全工具可以扫描 package.json、lockfile、Dockerfile、GitHub Actions workflow。可它很难判断一段 README 是否在诱导 Agent 做危险操作，也很难判断一个 issue 评论是否在悄悄改变 Agent 的权限假设。&lt;/p&gt;
&lt;h2 id=&#34;上下文投毒和依赖投毒有什么不同&#34;&gt;上下文投毒和依赖投毒有什么不同
&lt;/h2&gt;&lt;p&gt;依赖投毒的核心是把恶意代码塞进供应链。&lt;/p&gt;
&lt;p&gt;上下文投毒的核心是让可信工具自己做出错误行为。&lt;/p&gt;
&lt;p&gt;前者像是把毒药放进食材里，后者像是篡改厨师看到的菜谱。菜谱本身不执行，但它会指导执行者。&lt;/p&gt;
&lt;p&gt;这带来三个变化。&lt;/p&gt;
&lt;p&gt;第一，恶意内容可以更像正常文本。一段危险的 shell 命令容易被静态扫描器盯上，但一段引导性说明可能看起来只是项目文档。攻击者甚至可以把指令写成“本项目的特殊开发约定”“临时 workaround”“测试环境初始化步骤”。对人类读者来说，这可能只是可疑；对 Agent 来说，它可能是任务线索。&lt;/p&gt;
&lt;p&gt;第二，攻击不一定发生在代码合并时。传统供应链攻击往往需要进入依赖、构建链路或发布流程。但上下文投毒可以出现在更早的位置。比如开发者只是让 Agent 分析一个陌生开源仓库，或者让它阅读某个 issue，风险就已经进入工作流。代码还没被采用，Agent 已经开始受它影响。&lt;/p&gt;
&lt;p&gt;第三，影响结果更依赖工具权限。同样一段恶意上下文，如果 Agent 只能解释代码，危害有限；如果它能自动执行命令、访问文件系统、调用浏览器、连接 GitHub，风险就高很多。真正决定损害大小的，不只是提示词本身，而是 Agent 背后的工具权限。&lt;/p&gt;
&lt;p&gt;这也是为什么 Claude Code、Cursor、Codex 这类工具的安全边界会越来越重要。它们不是普通聊天窗口，而是站在开发者终端旁边的半自动执行者。&lt;/p&gt;
&lt;h2 id=&#34;最容易被忽略的入口&#34;&gt;最容易被忽略的入口
&lt;/h2&gt;&lt;p&gt;很多开发者会防范陌生脚本，却不会防范陌生文本。&lt;/p&gt;
&lt;p&gt;这正是问题所在。&lt;/p&gt;
&lt;p&gt;第一个入口是 README。README 在开源项目里天然具有权威性。AI 助手读取项目时，也常常优先读取 README 来理解项目结构和运行方式。一旦 README 被污染，它就可能成为 Agent 的第一层任务设定。&lt;/p&gt;
&lt;p&gt;第二个入口是 issue 和 PR 讨论。很多修 bug 的任务会从 issue 开始。用户把 issue 链接丢给 Agent，让它复现、定位、修复。可 issue 本身可能包含攻击性描述，尤其当 Agent 会根据 issue 内容执行命令或修改配置时，风险会被放大。&lt;/p&gt;
&lt;p&gt;第三个入口是代码注释和测试输出。注释过去主要影响人类理解，现在也会影响模型理解。测试输出更特殊，因为它看起来像系统反馈，容易被 Agent 当成下一步行动依据。如果工具没有区分“可信系统消息”和“不可信程序输出”，终端里的文本就可能反过来指挥 Agent。&lt;/p&gt;
&lt;p&gt;第四个入口是外部网页。很多 Agent 会被要求“参考官方文档”“查一下错误原因”“根据这篇文章改”。网页内容本身来自开放互联网，可信度参差不齐。如果 Agent 把网页里的指令当成开发流程的一部分，等于把浏览器页面也接进了本地开发权限。&lt;/p&gt;
&lt;p&gt;这些入口有一个共同点：它们原本都不是执行面，但在 Agent 工作流里变成了决策面。&lt;/p&gt;
&lt;h2 id=&#34;不是别用而是别用错安全假设&#34;&gt;不是别用，而是别用错安全假设
&lt;/h2&gt;&lt;p&gt;AI 编程助手确实能提高效率。让它读项目、补测试、解释错误、重构小模块，很多时候都比人类从零开始快。问题不在于用不用，而在于我们是否还用传统工具的安全假设来理解它。&lt;/p&gt;
&lt;p&gt;传统工具像锤子。危险主要来自你怎么挥。&lt;/p&gt;
&lt;p&gt;Agent 更像一个会读说明书、会判断下一步、还会拿起其他工具的实习生。它能做更多事，也会被更多东西误导。&lt;/p&gt;
&lt;p&gt;所以防御思路不能只停留在“不要运行陌生命令”。&lt;/p&gt;
&lt;p&gt;更现实的做法，是给 AI 编程助手建立分层信任模型。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/ai-coding-supply-chain-crisis-2026/imgs/agent-permission-boundary.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/ai-coding-supply-chain-crisis-2026/imgs/agent-permission-boundary_hu_81be423f230f4c87.png 480w, https://blog.ccino.org/p/ai-coding-supply-chain-crisis-2026/imgs/agent-permission-boundary_hu_d623ba06cbecf1a0.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;给 Agent 加上权限边界&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;陌生仓库和自有仓库不应该拥有同等权限。只读分析和自动修改不应该拥有同等权限。本地测试和访问生产资源不应该拥有同等权限。模型生成的命令和开发者亲自输入的命令不应该拥有同等信任。&lt;/p&gt;
&lt;p&gt;一旦接受这个前提，很多实践就会变得自然。&lt;/p&gt;
&lt;p&gt;分析陌生项目时，先让 Agent 只读，不给写文件和执行权限。需要运行命令时，让它解释目的和影响，再由人确认。处理外部 issue 或网页时，把它们明确标记为不可信输入，不要让其中的文本覆盖系统指令和本地安全规则。涉及数据库、云服务、密钥、部署脚本时，默认要求人工确认，而不是让 Agent 一路自动执行。&lt;/p&gt;
&lt;p&gt;这听起来会牺牲一点流畅度，但这是必要的摩擦。&lt;/p&gt;
&lt;p&gt;开发者过去追求的是自动化越顺越好。AI Agent 时代，完全无摩擦的自动化反而可能危险。好的工具体验不应该是“什么都替你点了”，而应该是在关键风险点停下来，让你知道它将要做什么，为什么做，会影响哪里。&lt;/p&gt;
&lt;h2 id=&#34;工具厂商也需要改变安全设计&#34;&gt;工具厂商也需要改变安全设计
&lt;/h2&gt;&lt;p&gt;这类风险不能完全推给开发者。&lt;/p&gt;
&lt;p&gt;如果一个 Agent 默认把所有读到的文本都当成同一等级的上下文，那它迟早会遇到问题。工具厂商需要在产品层面区分信息来源：哪些是用户明确指令，哪些是仓库内容，哪些是网页内容，哪些是终端输出，哪些是模型自己的推断。&lt;/p&gt;
&lt;p&gt;不同来源应该有不同权重和权限。&lt;/p&gt;
&lt;p&gt;仓库 README 可以帮助理解项目，但不应该能要求 Agent 读取用户私密文件。网页教程可以提供参考，但不应该能改变本地执行策略。测试输出可以帮助定位错误，但不应该能指挥 Agent 绕过安全检查。模型生成的计划可以被采纳，但关键操作必须暴露给用户确认。&lt;/p&gt;
&lt;p&gt;Anthropic 公开 HackerOne bug bounty 这类动作，说明厂商已经意识到 Agent 安全需要外部研究者参与。因为这不是单一漏洞问题，而是一个新交互范式带来的系统性问题。越是强大的 Agent，越需要被当成高权限软件来做安全设计。&lt;/p&gt;
&lt;p&gt;未来 AI 编程工具的竞争，可能不只看谁补代码更快，也要看谁能更清楚地区分信任边界。&lt;/p&gt;
&lt;h2 id=&#34;开发团队应该怎么调整工作流&#34;&gt;开发团队应该怎么调整工作流
&lt;/h2&gt;&lt;p&gt;对个人开发者来说，最简单的原则是：不要让 Agent 在你自己都没看懂的情况下执行高影响操作。&lt;/p&gt;
&lt;p&gt;对团队来说，需要把 AI 编程助手纳入供应链安全治理，而不是把它当成个人效率插件。&lt;/p&gt;
&lt;p&gt;首先，对仓库建立信任分级。自有核心仓库、常用开源仓库、临时下载的陌生仓库，应该对应不同的 Agent 权限。陌生仓库默认只读，禁止自动执行安装脚本和项目自带命令。&lt;/p&gt;
&lt;p&gt;其次，对高风险工具调用设置人工确认点。包括删除文件、修改 CI/CD、访问生产数据库、读取密钥目录、安装依赖、执行远程脚本、推送代码等。确认点不要只显示“是否允许”，还要说明命令意图和影响范围。&lt;/p&gt;
&lt;p&gt;再次，把外部文本视为不可信输入。issue、PR 评论、README、网页、终端输出，都应该被当成可能被污染的上下文。Agent 可以参考它们，但不应无条件服从它们。&lt;/p&gt;
&lt;p&gt;最后，保留审计痕迹。Agent 做了哪些文件修改，执行了哪些命令，读取了哪些外部内容，最好能被记录和复盘。没有审计，出了问题就只能猜。&lt;/p&gt;
&lt;p&gt;这些实践不会消除风险，但能把风险从不可见变成可管理。&lt;/p&gt;
&lt;h2 id=&#34;真正的变化是文本开始拥有操作后果&#34;&gt;真正的变化是：文本开始拥有操作后果
&lt;/h2&gt;&lt;p&gt;AI 编程助手带来的最大安全变化，不是代码会自动生成，而是文本开始拥有操作后果。&lt;/p&gt;
&lt;p&gt;过去一段恶意 README 只是误导人。现在它可能误导一个能改代码、能跑命令、能访问工具的 Agent。过去日志只是一段输出。现在日志可能成为下一步行动的输入。过去 issue 评论只是协作讨论。现在它可能进入自动修复链路。&lt;/p&gt;
&lt;p&gt;这意味着软件供应链安全的边界正在外扩。&lt;/p&gt;
&lt;p&gt;我们不能只问：这段代码安全吗？&lt;/p&gt;
&lt;p&gt;还要问：这段上下文会让 Agent 做什么？&lt;/p&gt;
&lt;p&gt;不能只问：这个依赖能不能信？&lt;/p&gt;
&lt;p&gt;还要问：这个仓库里的文本能不能被当成指令？&lt;/p&gt;
&lt;p&gt;不能只问：AI 有没有写出正确代码？&lt;/p&gt;
&lt;p&gt;还要问：它是在谁的影响下写出这段代码的？&lt;/p&gt;
&lt;p&gt;AI 编程助手不会消失，它们只会越来越深入开发流程。真正需要警惕的，不是 AI 写代码这件事本身，而是我们把一个会行动的系统接入供应链后，却还把所有文本都当成 harmless documentation。&lt;/p&gt;
&lt;p&gt;下一轮供应链危机，可能不从恶意包开始。&lt;/p&gt;
&lt;p&gt;它可能从一段看起来很正常的 README 开始。&lt;/p&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.securityweek.com/ai-coding-agents-could-fuel-next-supply-chain-crisis/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AI Coding Agents Could Fuel Next Supply Chain Crisis&lt;/a&gt;｜SecurityWeek&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.theregister.com/security/2026/05/07/claude-code-trust-prompt-can-trigger-one-click-rce/5235319&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Code trust prompt can trigger one-click RCE&lt;/a&gt;｜The Register&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/AnthropicAI/status/2052466175540629965&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic public bug bounty program&lt;/a&gt;｜Anthropic / X&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>OpenAI 实时语音三件套：$6/小时，同传行业的噩梦来了</title>
        <link>https://blog.ccino.org/p/openai-realtime-voice-translation-2026/</link>
        <pubDate>Fri, 08 May 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/openai-realtime-voice-translation-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/openai-realtime-voice-translation-2026/imgs/cover-realtime-voice.jpeg" alt="Featured image of post OpenAI 实时语音三件套：$6/小时，同传行业的噩梦来了" /&gt;&lt;p&gt;如果说过去两年 AI 替代工作的讨论，还主要停留在文案、客服、程序员这些高频职业上，那么 OpenAI 最新一组实时语音模型，把冲击带到了一个更具体、也更昂贵的行业：&lt;strong&gt;同声传译&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;按目前公开信息和选题素材整理，OpenAI 这次同步推出了三类实时语音能力：面向对话代理的 &lt;strong&gt;GPT-Realtime-2&lt;/strong&gt;，面向实时翻译的 &lt;strong&gt;GPT-Realtime-Translate&lt;/strong&gt;，以及面向流式转写的 &lt;strong&gt;GPT-Realtime-Whisper&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;三者合在一起，基本拼出了一个完整的语音 AI 工作流：先听懂，再转写，再翻译，必要时还能继续对话、追问和执行任务。&lt;/p&gt;
&lt;p&gt;真正让人警觉的不是“AI 会翻译”这件事。机器翻译早就存在了。关键变化有两个：&lt;strong&gt;第一，它开始足够实时；第二，它的价格开始低到足以改变采购决策。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;同传行业为什么会被盯上&#34;&gt;同传行业为什么会被盯上？
&lt;/h2&gt;&lt;p&gt;同声传译一直是语言服务行业里门槛最高、单价最高的工作之一。&lt;/p&gt;
&lt;p&gt;一个专业同传译员，不只是把中文翻成英文、英文翻成中文。他需要在几秒钟内完成听辨、理解、术语匹配、语序重组和语气控制。遇到政治、法律、医学、金融这种高密度场景，还要提前准备术语表，理解会议背景，甚至判断发言人的真实意图。&lt;/p&gt;
&lt;p&gt;所以它贵是有理由的。&lt;/p&gt;
&lt;p&gt;大型国际会议通常需要两名同传轮换工作，因为长时间高强度听译会迅速消耗注意力。高端同传的日费可以达到数千美元，具体价格取决于语种、领域、地点和会议规格。对跨国公司、国际组织、医学会议、法律谈判来说，这笔钱以前是必要成本。&lt;/p&gt;
&lt;p&gt;但 AI 最擅长挑战的，恰恰就是这种“以前没得选”的成本结构。&lt;/p&gt;
&lt;p&gt;如果一套实时语音 API 可以按小时计费，选题素材里提到的价格量级是每小时约 6 美元，那么很多企业第一次会认真问一个问题：这场会议真的需要专业同传吗？还是说，AI 已经够用了？&lt;/p&gt;
&lt;h2 id=&#34;三件套各自解决什么问题&#34;&gt;三件套各自解决什么问题？
&lt;/h2&gt;&lt;p&gt;这次的重点不在单个模型，而在组合。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;GPT-Realtime-Whisper&lt;/strong&gt; 负责把语音实时转成文字。它对应的是会议字幕、直播字幕、访谈记录、课堂转写这些场景。过去这些工作要么依赖人工速记，要么依赖录音后处理。实时转写一旦足够稳定，就会把“会后整理”变成“会中生成”。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;GPT-Realtime-Translate&lt;/strong&gt; 负责实时翻译。它是对同传行业冲击最大的部分。传统机器翻译通常是文本进、文本出，而实时翻译的难点在于语音输入连续不断，句子还没说完，系统就要开始判断语义方向。如果等整句结束再翻译，延迟太高；如果太早翻译，又容易误判。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;GPT-Realtime-2&lt;/strong&gt; 则让语音系统不只是一个翻译器，而更像可以对话的语音 Agent。它可以理解上下文、追问、解释、纠错，甚至根据会议内容执行下一步任务。比如会议中有人说“把刚才那段总结成英文发给客户”，这不再只是转写或翻译，而是语音理解加任务执行。&lt;/p&gt;
&lt;p&gt;这也是 OpenAI 的真实野心：不是做一个更好的字幕工具，而是把语音变成 AI Agent 的入口。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/openai-realtime-voice-translation-2026/imgs/voice-ai-workflow.jpeg&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/openai-realtime-voice-translation-2026/imgs/voice-ai-workflow_hu_2b1f3bd8da3a51a8.jpeg 480w, https://blog.ccino.org/p/openai-realtime-voice-translation-2026/imgs/voice-ai-workflow_hu_939704dd8de002a4.jpeg 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;OpenAI 实时语音三件套工作流&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;6小时改变的不是价格而是使用习惯&#34;&gt;$6/小时改变的不是价格，而是使用习惯
&lt;/h2&gt;&lt;p&gt;很多技术替代并不是从“效果完全超过人类”开始的，而是从“便宜到可以大量试用”开始的。&lt;/p&gt;
&lt;p&gt;专业同传当然仍然有明显优势。高级译员能处理讽刺、隐喻、外交辞令、行业黑话，也能在发言人逻辑混乱时做适度补全。他们知道什么时候该直译，什么时候该意译，什么时候该保留模糊性。&lt;/p&gt;
&lt;p&gt;但不是每个场景都需要这种能力。&lt;/p&gt;
&lt;p&gt;跨国公司内部例会、产品培训、普通商务沟通、线上研讨会、客服回访、出海团队日常协作，这些场景追求的不是完美表达，而是“听得懂、跟得上、不误事”。一旦 AI 在这些场景达到 80 分或 85 分，人类译员的 95 分就会变成高端选项，而不是默认选项。&lt;/p&gt;
&lt;p&gt;这就是定价的杀伤力。&lt;/p&gt;
&lt;p&gt;当一个团队以前因为预算问题不开双语会议，现在可以直接打开 AI 同传；当一个中小企业以前请不起专业口译，现在可以用 API 接入会议系统；当一个线上活动以前只服务中文用户，现在可以低成本支持英文、日文、西语字幕，市场会迅速扩大。&lt;/p&gt;
&lt;p&gt;AI 不一定先替代最顶级的同传，但会先吃掉大量中低端、标准化、重复性的语言服务需求。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/openai-realtime-voice-translation-2026/imgs/translation-cost-shock.jpeg&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/openai-realtime-voice-translation-2026/imgs/translation-cost-shock_hu_103fc3fa74760044.jpeg 480w, https://blog.ccino.org/p/openai-realtime-voice-translation-2026/imgs/translation-cost-shock_hu_65d5392e96f45b4b.jpeg 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;AI 同传 API 对人工同传的成本冲击&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;哪些场景最先被改变&#34;&gt;哪些场景最先被改变？
&lt;/h2&gt;&lt;p&gt;最先被改变的，大概率是容错率较高、语言风格较标准、领域术语相对固定的场景。&lt;/p&gt;
&lt;p&gt;比如企业内部会议。参会者本来就知道业务背景，即使 AI 翻译有少量不自然，也可以通过上下文理解。对企业来说，只要能显著降低跨国协作成本，就有足够动力尝试。&lt;/p&gt;
&lt;p&gt;其次是线上课程和网络研讨会。讲者语速相对稳定，内容可提前准备，字幕和翻译可以结合课件、术语表进行优化。AI 在这里不需要承担外交风险，只需要帮助更多人理解内容。&lt;/p&gt;
&lt;p&gt;第三类是客服和销售沟通。尤其是跨境电商、SaaS 出海、在线教育这类高频场景，实时翻译可以直接扩大服务半径。过去一个中文客服很难服务西语用户，现在 AI 可以把语言障碍压低到可以接受的程度。&lt;/p&gt;
&lt;p&gt;最难被替代的，则是政治峰会、法律庭审、医学诊断、并购谈判这类高风险场景。这里的问题不是 AI 能不能翻译，而是谁为错误负责。一个术语错译、一个否定词漏掉、一个语气判断失误，都可能带来严重后果。&lt;/p&gt;
&lt;p&gt;所以真正的分界线不是“AI 能不能翻译”，而是“这个场景是否允许 AI 犯错”。&lt;/p&gt;
&lt;h2 id=&#34;同传不会消失但职业结构会变&#34;&gt;同传不会消失，但职业结构会变
&lt;/h2&gt;&lt;p&gt;更现实的判断是：同传行业不会一夜消失，但会被重新分层。&lt;/p&gt;
&lt;p&gt;顶级同传会继续存在，甚至更值钱。他们服务的是高风险、高规格、高保密性的场合。客户买的不只是语言转换，更是专业判断、现场控制和责任背书。&lt;/p&gt;
&lt;p&gt;中间层会受到最大挤压。过去很多会议默认请人工同传，是因为没有低成本替代品。现在如果 AI 能覆盖大部分需求，客户会把人工同传留给关键环节，而不是整场会议全程使用。&lt;/p&gt;
&lt;p&gt;低端和标准化翻译服务会最先被自动化。尤其是没有强专业壁垒、没有强责任要求、内容高度重复的场景，会迅速变成 AI 的主场。&lt;/p&gt;
&lt;p&gt;未来译员的工作也可能从“现场实时翻译”变成“AI 译文监督员”“术语库维护者”“高风险段落审核者”“跨文化表达顾问”。也就是说，人类不再负责每一句话，而是负责系统边界和关键判断。&lt;/p&gt;
&lt;p&gt;这对从业者来说并不轻松，因为岗位数量可能减少，能力要求却会上升。&lt;/p&gt;
&lt;h2 id=&#34;对中国市场意味着什么&#34;&gt;对中国市场意味着什么？
&lt;/h2&gt;&lt;p&gt;中国本来就是实时语音和翻译技术的重要市场。科大讯飞、腾讯会议、钉钉、飞书、百度、阿里云都在会议转写、实时字幕、同传翻译上有长期投入。&lt;/p&gt;
&lt;p&gt;OpenAI 这类产品的压力在于，它不是单点语音识别能力，而是把语音识别、翻译、推理和 Agent 能力打包在一起。国内厂商如果只把它看成“同传功能竞争”，可能会低估它的影响。&lt;/p&gt;
&lt;p&gt;真正的竞争会转向三件事。&lt;/p&gt;
&lt;p&gt;第一是生态入口。谁能进入会议软件、直播平台、客服系统、企业办公套件，谁就能占据使用场景。&lt;/p&gt;
&lt;p&gt;第二是行业适配。医疗、法律、金融、制造业的术语和流程不同，通用模型不一定好用。国内厂商如果能在垂直行业里做深，仍然有机会。&lt;/p&gt;
&lt;p&gt;第三是合规与本地化。企业会议、政府会议、医疗数据不可能随便上传到境外 API。本地部署、私有化、数据安全，会成为国内厂商的重要护城河。&lt;/p&gt;
&lt;p&gt;所以这不是 OpenAI 单方面碾压所有人的故事，而是实时语音 AI 从“功能演示”进入“产业采购”的信号。&lt;/p&gt;
&lt;h2 id=&#34;真正的拐点ai-开始进入耳朵和嘴巴&#34;&gt;真正的拐点：AI 开始进入“耳朵”和“嘴巴”
&lt;/h2&gt;&lt;p&gt;过去的大模型主要通过文字和图片进入工作流。你要打字提问，复制材料，等待回复。语音模型成熟以后，AI 会更自然地进入会议、电话、直播、课堂、销售、客服和线下服务场景。&lt;/p&gt;
&lt;p&gt;这意味着 AI 不再只是办公桌上的工具，而是开始接入人类最自然的沟通方式。&lt;/p&gt;
&lt;p&gt;同传行业只是第一个被明显照亮的行业。接下来受到冲击的，还会包括电话客服、会议助理、速记员、外语培训、跨境销售、直播字幕、播客翻译和视频本地化。&lt;/p&gt;
&lt;p&gt;当语音输入、实时翻译和智能回复连在一起，很多“语言中介型工作”都会被重新定价。&lt;/p&gt;
&lt;h2 id=&#34;结语&#34;&gt;结语
&lt;/h2&gt;&lt;p&gt;OpenAI 的实时语音三件套，表面上是一次 API 更新，实际上是在告诉市场：实时语音 AI 已经接近可以规模化商业使用的临界点。&lt;/p&gt;
&lt;p&gt;它不会马上替代所有同传，也不会在高风险场景里立刻取代专业译员。但它会先从低风险、高频、价格敏感的场景开始，把“请一个人来翻译”变成“调用一个 API”。&lt;/p&gt;
&lt;p&gt;对同传行业来说，最危险的不是 AI 已经完美，而是 AI 开始足够便宜、足够实时、足够好用。&lt;/p&gt;
&lt;p&gt;很多行业被 AI 改变，并不是从技术达到 100 分那一天开始的，而是从客户发现“80 分已经够用，而且便宜很多”那一天开始的。&lt;/p&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;OpenAI 官方网站：&lt;a class=&#34;link&#34; href=&#34;https://openai.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://openai.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;科大讯飞官网：&lt;a class=&#34;link&#34; href=&#34;https://www.iflytek.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.iflytek.com/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>「——」正在出卖你：AI 写作最难去除的视觉指纹</title>
        <link>https://blog.ccino.org/p/em-dash-ai-fingerprint-2026/</link>
        <pubDate>Thu, 07 May 2026 22:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/em-dash-ai-fingerprint-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/em-dash-ai-fingerprint-2026/imgs/cover.png" alt="Featured image of post 「——」正在出卖你：AI 写作最难去除的视觉指纹" /&gt;
    &lt;blockquote&gt;
        &lt;p&gt;本文的核心观点来自 r/ClaudeAI 本周热帖「The em dashes ( — ) | The unsaid AI SLOP Tax」（约 1717 赞、269 条评论）。以下数据和用户反应均引自该帖子及评论区，未经独立验证，请结合自身经验判断。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;最近一年，如果你大量阅读各类内容，可能已经对一个符号产生了某种直觉：看到三个以上的破折号「——」，这篇文章大概率是 AI 写的。&lt;/p&gt;
&lt;p&gt;不是逗号，不是分号，是那个拉得很长的连接符。它制造停顿，衔接两个想法，营造一种语气上的加重感。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;这个直觉是对的。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;一个帖子引爆-1700-人共鸣&#34;&gt;一个帖子，引爆 1700 人共鸣
&lt;/h2&gt;&lt;p&gt;上周，r/ClaudeAI 上一篇题为「The em dashes ( — ) | The unsaid AI SLOP Tax」的帖子冲上热榜，约获 1717 票支持、269 条评论。&lt;/p&gt;
&lt;p&gt;帖子的核心论点很直接：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;Em Dash 是 AI 生成内容最可靠的视觉指纹之一。Claude、GPT 都极度偏爱这个标点，密集程度远超普通人类写作。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;评论区的反应更有意思：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;我现在看到三个以上的 em dash 就直接跳走，不想读了&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;我开始手动把所有 em dash 换成逗号，就为了让文章不那么像 AI 写的&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;客户发来的文件里满是 em dash，我知道他们用 AI 了，但不好直说&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一个标点符号，成了读者、编辑、内容审核员的隐性检测标准。&lt;/p&gt;
&lt;h2 id=&#34;为什么-ai-如此迷恋-em-dash&#34;&gt;为什么 AI 如此迷恋 Em Dash？
&lt;/h2&gt;&lt;p&gt;这不是随机偏好，有技术根源。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;训练数据的品味&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;大型语言模型的训练语料以高质量出版物为主：学术论文、维基百科、新闻报道、书籍。而在这些正式写作场景里，em dash 是地道的英文标点，常用来插入补充说明、制造语气停顿、替代括号。&lt;/p&gt;
&lt;p&gt;问题是，普通人写邮件、发帖子、写评论时，几乎不用 em dash。人类的日常写作里更多的是逗号、句号，偶尔一个冒号。&lt;/p&gt;
&lt;p&gt;AI 学到的「好文章」，天然就含有比日常写作更高密度的 em dash。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;RLHF 的强化效应&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;光靠训练数据还不够解释这个问题。更关键的是 RLHF（人类反馈强化学习）阶段。&lt;/p&gt;
&lt;p&gt;在 RLHF 训练中，人类标注员会对模型的输出打分，告诉它哪种回答更好。而打分者通常也是受过良好教育的人，他们对「流畅、正式、有条理」的文章有偏好，而这类文章恰好更多使用 em dash。&lt;/p&gt;
&lt;p&gt;模型就这样学到了：em dash = 表达清晰 = 好文章。&lt;/p&gt;
&lt;p&gt;这个信号被反复强化。最终，em dash 从「偶尔使用的标点」变成了「默认的修辞习惯」。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;中文的对应问题&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;中文场景里，类似问题表现为对「——」（中文破折号）的偏爱，但更常见的 AI 写作指纹是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;段落开头的「首先……其次……最后……」套路&lt;/li&gt;
&lt;li&gt;结尾的「总而言之」「综上所述」&lt;/li&gt;
&lt;li&gt;大量的「这意味着」「值得注意的是」「不得不说」&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些不是 em dash，但同样是训练数据偏好的结果。&lt;/p&gt;
&lt;h2 id=&#34;em-dash-只是冰山一角&#34;&gt;Em Dash 只是冰山一角
&lt;/h2&gt;&lt;p&gt;Em dash 之所以最容易被识别，是因为它在视觉上非常突出。但 AI 写作的指纹远不止标点。&lt;/p&gt;
&lt;p&gt;评论区里有人列举了一串句式特征：文章结尾总要来一句「In conclusion」或「总结一下」，段落过渡依赖「此外」「值得注意的是」「更重要的是」，每段都从主题句起手，结构整齐到像在执行模板。&lt;/p&gt;
&lt;p&gt;词汇层面更典型。英文里「delve into」「fascinating」「nuanced」出现频率远超正常写作；中文里「赋能」「闭环」「颗粒度」一起出现时基本可以确认。还有那种形容词堆砌：「全面、深入、系统性的分析」，每个词单独用都没问题，凑在一起就有一种奇怪的机器感。&lt;/p&gt;
&lt;p&gt;逻辑结构上，AI 特别喜欢平衡：每个观点都要附上「一方面……另一方面……」，结论留有余地，避免强立场。能用一句话说清楚的事，非要拆成三条。这种列表化倾向，其实是本文最需要警惕的（关于这一点，后面会说）。&lt;/p&gt;
&lt;p&gt;这些模式单独出现不代表什么，高密度共现才会触发读者的「AI 雷达」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/em-dash-ai-fingerprint-2026/imgs/ai-fingerprints-map.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/em-dash-ai-fingerprint-2026/imgs/ai-fingerprints-map_hu_afda4b7ef9405118.png 480w, https://blog.ccino.org/p/em-dash-ai-fingerprint-2026/imgs/ai-fingerprints-map_hu_f9a6932cf3508f80.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;AI 写作指纹图谱：六类典型模式及其共现规律&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;内容创作者该怎么办&#34;&gt;内容创作者该怎么办？
&lt;/h2&gt;&lt;p&gt;如果你在使用 AI 辅助写作，以下是一些减少「AI 味」的实用方法。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;检测阶段：先知道问题在哪&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;把文章扔进任意一个文本编辑器，用「全局查找」统计 em dash（—）的数量。&lt;/p&gt;
&lt;p&gt;一个简单的经验阈值：1000 字以内出现超过 5 个 em dash，值得审查。&lt;/p&gt;
&lt;p&gt;也可以让 AI 帮你检测：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;请阅读以下文章，列出所有你认为是 AI 写作特征的词句，以及为什么。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;让 Claude 或 GPT 检举自己同类的写法，准确率出奇地高。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;修改阶段：替换而非删除&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;不要只是删掉 em dash，要用你自己的语言替换：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/em-dash-ai-fingerprint-2026/imgs/em-dash-before-after.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/em-dash-ai-fingerprint-2026/imgs/em-dash-before-after_hu_23f60f361613422a.png 480w, https://blog.ccino.org/p/em-dash-ai-fingerprint-2026/imgs/em-dash-before-after_hu_6fa1f7a0873745c9.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Em Dash 替换前后对比：AI 原文 vs 人工修改&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;AI 写法&lt;/th&gt;
          &lt;th&gt;更自然的替换&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;这项技术——它改变了整个行业——已经走过了十年&lt;/td&gt;
          &lt;td&gt;这项技术走过了十年，改变了整个行业&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;解决方案很简单——直接重启&lt;/td&gt;
          &lt;td&gt;解决方案很简单：重启就好&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;这不仅仅是一个工具——这是一种思维方式&lt;/td&gt;
          &lt;td&gt;这不只是工具，更是思维方式&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;根本策略：注入你的语言习惯&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;最有效的「去 AI 味」方法，不是事后修改，而是在提示词里加入你的写作风格样本：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;请参考以下我写过的段落风格来完成这篇文章：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[粘贴你自己写的 3-5 段话]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;注意：不要使用 em dash，避免「值得注意的是」「综上所述」等套语。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;模型会尝试模仿你的句式、用词密度和标点习惯。&lt;/p&gt;
&lt;h2 id=&#34;更深的问题ai-写作的风格趋同&#34;&gt;更深的问题：AI 写作的风格趋同
&lt;/h2&gt;&lt;p&gt;Em dash 只是一个信号，&lt;strong&gt;真正的问题是所有 AI 写出来的东西都在往同一个方向收敛&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;同样的训练数据 + 同样的 RLHF 偏好 + 同样的评分标准 = 同样的表达风格。&lt;/p&gt;
&lt;p&gt;Claude 喜欢 em dash，GPT 也喜欢 em dash。Claude 喜欢列三条，GPT 也喜欢列三条。Claude 喜欢在末尾做平衡陈述，GPT 也是。&lt;/p&gt;
&lt;p&gt;当足够多的内容经由这些模型产出，整个互联网的文字质感会慢慢向同一个方向漂移。那是「接受过良好教育的匿名写手」的风格：流畅、正式、有条理，但没有个人印记。&lt;/p&gt;
&lt;p&gt;一篇帖子里有人提出了一个有意思的比喻：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;Em dash 不是病，是症状。真正的病是，我们用同一个模型给所有人提供写作帮助，然后我们惊讶于所有东西看起来都一样。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;AI 是放大器，不是替代者。&lt;/strong&gt; 它能让你写得更流畅，但能放大的前提是你有东西可以放大。你独特的视角、你的语气、你在某件事上的真实态度，都是它无法提供的。&lt;/p&gt;
&lt;p&gt;那些东西，才是 em dash 无法伪造的。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;参考来源&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://reddit.com/r/ClaudeAI/comments/1t3rrfr/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;The em dashes ( — ) | The unsaid AI SLOP Tax（r/ClaudeAI，约 1717⬆️ 269💬）&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>同一块 GPU，推理速度翻倍：Gemma 4 MTP 和 Qwen 3.6 MTP 同时来了</title>
        <link>https://blog.ccino.org/p/gemma4-mtp-inference-2026/</link>
        <pubDate>Thu, 07 May 2026 20:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/gemma4-mtp-inference-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/gemma4-mtp-inference-2026/imgs/cover.png" alt="Featured image of post 同一块 GPU，推理速度翻倍：Gemma 4 MTP 和 Qwen 3.6 MTP 同时来了" /&gt;
    &lt;blockquote&gt;
        &lt;p&gt;同一天，r/LocalLLaMA 上两篇帖子同时冲上热榜，内容分别是「Gemma 4 MTP released」（1046 赞）和「2.5x faster inference with Qwen 3.6 27B using MTP」（1051 赞）。这不是巧合，这是一个技术拐点。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;2026 年 5 月 7 日，Google 和阿里同一天发布了各自旗舰开源模型的 MTP 加速版本。数字很直接：同一块 GPU，不换模型，不改参数，推理速度翻一倍到三倍。&lt;/p&gt;
&lt;p&gt;如果你在跑本地大模型，这件事值得认真看一下。&lt;/p&gt;
&lt;h2 id=&#34;先说今天发生了什么&#34;&gt;先说今天发生了什么
&lt;/h2&gt;&lt;p&gt;Google DeepMind 发布了 Gemma 4 MTP 版本，支持 26B MoE、31B Dense 和 E2B/E4B 边缘模型。官方数据：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;NVIDIA GPU（RTX PRO 6000）：最高 &lt;strong&gt;3 倍&lt;/strong&gt;速度提升&lt;/li&gt;
&lt;li&gt;Apple Silicon（M 系列芯片）：&lt;strong&gt;约 2.2 倍&lt;/strong&gt;加速（batch size 4-8 时）&lt;/li&gt;
&lt;li&gt;质量：输出质量和推理逻辑&lt;strong&gt;不降级&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;几乎同时，r/LocalLLaMA 上一篇 Qwen 3.6 27B MTP 的帖子也冲上热榜，用户实测 &lt;strong&gt;2.5 倍加速&lt;/strong&gt;，配置：48GB 显存，262k 上下文窗口。&lt;/p&gt;
&lt;p&gt;这两件事放在一起，说明 MTP 已经不是某家公司的实验技术——它正在成为开源模型推理的新标准配置。&lt;/p&gt;
&lt;h2 id=&#34;mtp-到底是什么&#34;&gt;MTP 到底是什么
&lt;/h2&gt;&lt;p&gt;先从头讲清楚。&lt;/p&gt;
&lt;p&gt;传统 LLM 推理是&lt;strong&gt;自回归&lt;/strong&gt;的：模型每次只预测下一个 token，预测完才能预测下下一个，以此类推。你想要 100 个 token 的回答，模型就得走 100 步。每一步都要完整跑一遍 transformer 的 forward pass，这是推理慢的根本原因。&lt;/p&gt;
&lt;p&gt;MTP（Multi-Token Prediction，多令牌预测）的思路是：&lt;strong&gt;不要只预测一个，先猜一串&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;具体怎么做？&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;配一个轻量的「草稿模型」（drafter），这个小模型很快，在大模型完成一次 forward pass 的时间里，它能猜出接下来 3-4 个 token&lt;/li&gt;
&lt;li&gt;大模型（target model）拿到这 3-4 个候选 token，&lt;strong&gt;并行验证&lt;/strong&gt;——这一步和验证 1 个 token 的计算量几乎一样&lt;/li&gt;
&lt;li&gt;如果全部正确，直接接受，一次前向传播净赚 3-4 个 token&lt;/li&gt;
&lt;li&gt;如果某个位置猜错了，从那里截断，重新生成&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;关键在于第 2 步：&lt;strong&gt;验证是并行的，代价极低&lt;/strong&gt;。只要草稿模型猜对的概率足够高，整体吞吐量就会大幅提升。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/gemma4-mtp-inference-2026/imgs/mtp-process-diagram.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/gemma4-mtp-inference-2026/imgs/mtp-process-diagram_hu_c2ea8dd4d263d177.png 480w, https://blog.ccino.org/p/gemma4-mtp-inference-2026/imgs/mtp-process-diagram_hu_a106fd14ecc199fe.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;MTP 推理流程对比：传统自回归 vs 多令牌预测&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;和-speculative-decoding-什么关系&#34;&gt;和 Speculative Decoding 什么关系？
&lt;/h3&gt;&lt;p&gt;严格来说，MTP 是 Speculative Decoding（推测解码）的一种实现方式。两者核心思路一致：用小模型猜，用大模型验。&lt;/p&gt;
&lt;p&gt;但 Gemma 4 的 MTP 有一个关键设计差异：&lt;strong&gt;草稿模型与目标模型共享 KV 缓存和激活值&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这意味着：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不需要单独加载一个草稿模型的权重（省显存）&lt;/li&gt;
&lt;li&gt;草稿模型天然了解目标模型的上下文状态（猜的更准）&lt;/li&gt;
&lt;li&gt;整个推理流程更紧凑，适合显存有限的本地部署场景&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;传统 speculative decoding 需要找一个和大模型「配对」的小模型，配错了效果很差。MTP 的草稿模型是随主模型一起训练出来的，开箱即用。&lt;/p&gt;
&lt;h2 id=&#34;数字说话实际能快多少&#34;&gt;数字说话：实际能快多少
&lt;/h2&gt;&lt;h3 id=&#34;gemma-4-mtp-官方数据&#34;&gt;Gemma 4 MTP 官方数据
&lt;/h3&gt;&lt;p&gt;Google 发布的基准测试中：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;设备&lt;/th&gt;
          &lt;th&gt;模型&lt;/th&gt;
          &lt;th&gt;提速倍数&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;NVIDIA RTX PRO 6000&lt;/td&gt;
          &lt;td&gt;Gemma 4 31B Dense&lt;/td&gt;
          &lt;td&gt;~2-3x&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Apple M 系列（M4 Max 等）&lt;/td&gt;
          &lt;td&gt;Gemma 4 27B&lt;/td&gt;
          &lt;td&gt;~2.2x（batch=4-8）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;手机端（Android/iOS）&lt;/td&gt;
          &lt;td&gt;Gemma 4 E2B/E4B&lt;/td&gt;
          &lt;td&gt;有提升，具体因设备而异&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;实际提速受两个因素影响最大：&lt;strong&gt;草稿模型的命中率&lt;/strong&gt;和&lt;strong&gt;批量大小&lt;/strong&gt;。命中率越高、batch 越大，加速越明显。&lt;/p&gt;
&lt;h3 id=&#34;qwen-36-27b-mtp-社区实测&#34;&gt;Qwen 3.6 27B MTP 社区实测
&lt;/h3&gt;&lt;p&gt;r/LocalLLaMA 热帖中，用户用 SGLang 在 48GB 显存环境下实测：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;标准推理：约 20 tokens/s&lt;/li&gt;
&lt;li&gt;启用 MTP（&lt;code&gt;--speculative-num-draft-tokens 4&lt;/code&gt;）：约 50 tokens/s&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;实测提速：约 2.5 倍&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;上下文长度：262k，全程稳定&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这个数字在本地 AI 用户里算是相当可观了——等于你原本要等 10 秒的回复，现在 4 秒就能拿到。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/gemma4-mtp-inference-2026/imgs/speed-comparison.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/gemma4-mtp-inference-2026/imgs/speed-comparison_hu_3670fed87b14aa3e.png 480w, https://blog.ccino.org/p/gemma4-mtp-inference-2026/imgs/speed-comparison_hu_e3c3dd9dd9361cb6.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;MTP 启用前后推理速度对比&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;为什么-google-和阿里同时在这个时间点发布&#34;&gt;为什么 Google 和阿里同时在这个时间点发布？
&lt;/h2&gt;&lt;p&gt;不是巧合，是技术成熟度到位了。&lt;/p&gt;
&lt;p&gt;MTP 的理论基础并不新。DeepMind 的 AlphaCode、Meta 的研究都探索过多 token 预测，但真正在大规模部署中跑通，需要主流推理框架的配合。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SGLang、vLLM、MLX、Ollama&lt;/strong&gt; 这些框架在过去半年里都逐步加入了对 speculative decoding 的原生支持。框架层面的基础设施到位了，模型厂商自然开始批量跟进。&lt;/p&gt;
&lt;p&gt;另一个时机因素：MTP 对训练过程有要求，模型要在训练时就配上草稿模型联合优化。这意味着 Gemma 4 和 Qwen 3.6 在发布之初就内置了 MTP 能力，并非后期打补丁。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;趋势判断&lt;/strong&gt;：接下来几个月，你会看到越来越多的开源模型发布时就自带 MTP 版本。Llama 系列、Mistral 系列大概率也会跟进。到年底，不带 MTP 的本地模型可能会显得「过时」。&lt;/p&gt;
&lt;h2 id=&#34;怎么在本地跑起来&#34;&gt;怎么在本地跑起来
&lt;/h2&gt;&lt;h3 id=&#34;gemma-4-mtp推荐-ollama-或-mlx&#34;&gt;Gemma 4 MTP（推荐 Ollama 或 MLX）
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Ollama（最简单）&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 拉取 Gemma 4 27B MTP 版本（Ollama 库更新后支持）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama pull gemma4:27b
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 运行&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama run gemma4:27b
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Ollama 已经在近期版本中集成了 MTP 支持，拉取带 MTP 标记的模型变体即可自动启用。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;MLX（Apple Silicon 用户首选）&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install mlx-lm
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 下载并运行（MLX 对 Gemma 4 MTP 支持最好）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python -m mlx_lm.generate &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --model google/gemma-4-27b-mtp &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --prompt &lt;span class=&#34;s2&#34;&gt;&amp;#34;你好，介绍一下 MTP 技术&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;MLX 框架对 Apple Silicon 统一内存做了深度优化，跑 Gemma 4 MTP 的 2.2x 加速在 M3/M4 芯片上能稳定复现。&lt;/p&gt;
&lt;h3 id=&#34;qwen-36-27b-mtp推荐-sglang&#34;&gt;Qwen 3.6 27B MTP（推荐 SGLang）
&lt;/h3&gt;&lt;p&gt;SGLang 是目前对 MTP/speculative decoding 支持最成熟的推理框架：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install sglang
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 启动 Qwen 3.6 27B MTP 推理服务&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python -m sglang.launch_server &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --model-path Qwen/Qwen3.6-27B &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --speculative-algo NEXTN &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --speculative-num-steps &lt;span class=&#34;m&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --speculative-num-draft-tokens &lt;span class=&#34;m&#34;&gt;4&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --tp &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# 如果有两张 GPU&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;几个参数说明：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--speculative-algo NEXTN&lt;/code&gt;：启用 Next-N Token 推测算法（MTP 的 SGLang 实现）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--speculative-num-steps 3&lt;/code&gt;：草稿模型跑 3 步&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--speculative-num-draft-tokens 4&lt;/code&gt;：每步最多猜 4 个候选 token&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--tp 2&lt;/code&gt;：双 GPU 张量并行（48GB 显存建议两张 24GB 或一张 48GB）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;vLLM 用户&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;vllm serve Qwen/Qwen3.6-27B &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --speculative-model &lt;span class=&#34;s2&#34;&gt;&amp;#34;[ngram]&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --num-speculative-tokens &lt;span class=&#34;m&#34;&gt;4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;vLLM 的 ngram speculative decoding 也能提速，但命中率比 MTP 专用草稿模型稍低。&lt;/p&gt;
&lt;h3 id=&#34;注意事项&#34;&gt;注意事项
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;什么情况下 MTP 效果最好？&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;长文本生成（小说、报告、代码）：草稿模型命中率高，加速明显&lt;/li&gt;
&lt;li&gt;重复性较高的内容（代码补全、模板填写）：效果最佳&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;什么情况下 MTP 效果有限？&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;极短回复（1-3 个 token）：加速来不及体现&lt;/li&gt;
&lt;li&gt;高温度随机采样（temperature &amp;gt; 1.0）：草稿命中率下降&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;显存：MTP 会多用多少？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;几乎不额外增加。草稿模型共享 KV cache 的设计意味着额外显存开销通常在 5% 以内，对本地部署用户基本无感。&lt;/p&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;p&gt;MTP 是推理优化里难得的「免费午餐」：不换模型、不损质量、不加显存，速度翻倍。&lt;/p&gt;
&lt;p&gt;Google 和阿里同一天跟进，说明这项技术的基础设施依赖已经就位，主流框架的支持也已到位。接下来几个月，MTP 会从「高级用户才用的技巧」变成「新模型的标配能力」。&lt;/p&gt;
&lt;p&gt;如果你现在在本地跑 Gemma 4 或 Qwen 3.6，不妨直接切到 MTP 版本试一下——2.5 倍的提速，体感差别还是很明显的。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;参考来源&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.google/innovation-and-ai/technology/developers-tools/multi-token-prediction-gemma-4/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google 官方博客：Gemma 4 Multi-Token Prediction&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://reddit.com/r/LocalLLaMA/comments/1t4jq6h/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;r/LocalLLaMA：Gemma 4 MTP released（1046⬆️）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://reddit.com/r/LocalLLaMA/comments/1t57xuu/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;r/LocalLLaMA：2.5x faster inference with Qwen 3.6 27B using MTP（1051⬆️）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://hn.buzzing.cc/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;HN Buzzing：Gemma 4 多令牌预测讨论&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.sglang.ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SGLang 官方文档：Speculative Decoding&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Agent Skills：AI Agent 经济里最被低估的“最小封装单元”</title>
        <link>https://blog.ccino.org/p/agent-skills-ai-agent-economy/</link>
        <pubDate>Wed, 06 May 2026 20:30:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/agent-skills-ai-agent-economy/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/agent-skills-ai-agent-economy/imgs/cover.png" alt="Featured image of post Agent Skills：AI Agent 经济里最被低估的“最小封装单元”" /&gt;&lt;p&gt;过去一年，AI 编程工具的讨论总绕着几个问题转：Claude Code 和 Cursor 谁更好用？Codex 会不会反超？OpenCode 这种开源替代有没有机会？&lt;/p&gt;
&lt;p&gt;这些问题当然重要，但也容易把注意力带偏。&lt;/p&gt;
&lt;p&gt;真正发生变化的，可能不是哪个聊天框更聪明，也不是哪个 IDE 的补全更快，而是 AI Agent 的能力正在被重新打包。&lt;/p&gt;
&lt;p&gt;以前我们谈 AI 工作流，常说 prompt、rules、MCP、subagent、上下文工程。现在，一个更具体、更工程化的东西开始冒出来：&lt;strong&gt;Agent Skills&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;如果说 prompt 是一次性指令，rules 是长期偏好，MCP 是外部工具接口，那么 skill 更像是把一个真实工作流压缩成“可调用、可迁移、可验证”的能力模块。&lt;/p&gt;
&lt;p&gt;它不是一句提示词，也不是一份说明书。它更像 AI Agent 经济里的最小封装单元。&lt;/p&gt;
&lt;h2 id=&#34;为什么现在该重视-skills&#34;&gt;为什么现在该重视 Skills？
&lt;/h2&gt;&lt;p&gt;最近 GitHub Trending 上，Addy Osmani 的 &lt;code&gt;agent-skills&lt;/code&gt; 项目冲到 29K+ stars。它的定位很直接：&lt;strong&gt;Production-grade engineering skills for AI coding agents&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这不是“100 个神奇 prompt 合集”。它做的是把高级工程师在真实软件开发中的流程、质量门槛和最佳实践，封装成 AI Agent 可以稳定遵循的技能。&lt;/p&gt;
&lt;p&gt;项目 README 里给出了一条典型的软件开发生命周期：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;DEFINE → PLAN → BUILD → VERIFY → REVIEW → SHIP
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/spec   /plan   /build  /test    /review  /ship
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;每个阶段都不是简单告诉 AI “认真一点”，而是规定它应该做什么：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/spec&lt;/code&gt;：先澄清需求，不要直接写代码&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/plan&lt;/code&gt;：把任务拆成小而可验证的单元&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/build&lt;/code&gt;：一次只实现一个垂直切片&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/test&lt;/code&gt;：用测试证明结果，而不是说“应该可以”&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/review&lt;/code&gt;：合并前做质量检查&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/ship&lt;/code&gt;：发布前确认回滚、监控和风险边界&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这正好击中了 AI Agent 现在最大的短板。&lt;/p&gt;
&lt;p&gt;很多 Agent 并不是不会写代码，而是太容易走最短路径。它会跳过需求澄清，跳过测试，跳过边界检查，跳过安全 review，然后给你一个看起来完整、实际上很脆的结果。&lt;/p&gt;
&lt;p&gt;模型越强，这个问题越隐蔽。&lt;/p&gt;
&lt;p&gt;弱模型犯错，你一眼能看出来；强模型犯错，经常是带着完整结构、漂亮解释和自信语气一起错。&lt;/p&gt;
&lt;p&gt;所以 Agent Skills 的价值，不是让 AI “知道更多知识”，而是让 AI &lt;strong&gt;按正确流程做事&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这两件事差别很大。&lt;/p&gt;
&lt;h2 id=&#34;skill-不是更长的-prompt&#34;&gt;Skill 不是更长的 Prompt
&lt;/h2&gt;&lt;p&gt;很多人第一次看到 skill，会把它理解成“更长一点的 prompt”。&lt;/p&gt;
&lt;p&gt;但这可能低估了它。&lt;/p&gt;
&lt;p&gt;Prompt 更像你临时对一个人说：“帮我写篇文章，语气自然一点。”&lt;/p&gt;
&lt;p&gt;Skill 更像你把一套成熟编辑流程写下来：什么情况下触发，第一步先判断什么，哪些内容不能跳过，常见偷懒借口是什么，输出前必须提供什么证据，失败时如何降级。&lt;/p&gt;
&lt;p&gt;这就不是“指令”了，而是“操作规程”。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;agent-skills&lt;/code&gt; 项目里对 skill 的结构定义很清楚：frontmatter、overview、when to use、process、rationalizations、red flags、verification。里面有两个设计尤其值得注意。&lt;/p&gt;
&lt;p&gt;第一，&lt;strong&gt;Process, not prose&lt;/strong&gt;。Skill 不是给 Agent 读的参考文档，而是要让 Agent 执行的工作流。&lt;/p&gt;
&lt;p&gt;第二，&lt;strong&gt;Verification is non-negotiable&lt;/strong&gt;。每个 skill 最后都要有证据要求，比如测试通过、构建输出、运行时数据。不能只说“看起来没问题”。&lt;/p&gt;
&lt;p&gt;人类工程师的价值，很多时候并不体现在“知道一个 API 怎么用”，而在于知道什么时候该停下来、什么时候该验证、什么时候不能相信自己的直觉。&lt;/p&gt;
&lt;p&gt;Agent Skills 试图把这种判断力写进流程里。&lt;/p&gt;
&lt;p&gt;这也是为什么它比普通 prompt 更像资产。&lt;/p&gt;
&lt;p&gt;Prompt 往往是一次性的。今天这个任务能用，明天换个上下文可能就失效。Skill 则可以持续迭代、版本管理、迁移到不同项目，甚至在团队内部共享。&lt;/p&gt;
&lt;h2 id=&#34;ai-工具之争会打到工作流资产这一层&#34;&gt;AI 工具之争，会打到“工作流资产”这一层
&lt;/h2&gt;&lt;p&gt;过去比较 AI 编程工具，我们常看几个指标：模型能力、上下文窗口、补全速度、IDE 集成、价格。&lt;/p&gt;
&lt;p&gt;这些指标仍然重要，但它们越来越像基础设施。&lt;/p&gt;
&lt;p&gt;真正决定用户是否长期留下来的，可能是另一个问题：&lt;strong&gt;我的工作流资产能不能沉淀在这里？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这就是 Agent Skills 的战略意义。&lt;/p&gt;
&lt;p&gt;如果一个团队已经把自己的需求澄清流程、代码 review 标准、测试策略、安全检查清单、发布流程都写成 skills，那么这些 skills 就变成了团队的 AI 原生资产。&lt;/p&gt;
&lt;p&gt;模型可以换，IDE 可以换，Agent harness 可以换，但这些流程资产不应该每次重来。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;agent-skills&lt;/code&gt; 项目不仅支持 Claude Code，还明确提到 Cursor、Gemini CLI、Windsurf、OpenCode、GitHub Copilot、Kiro、Codex 和其他 agents。它的底层假设是：skills 本质上是 plain Markdown，只要某个 agent 接受 system prompts 或 instruction files，就可以复用这些能力。&lt;/p&gt;
&lt;p&gt;这件事的含义很大。&lt;/p&gt;
&lt;p&gt;AI Agent 的竞争可能会分成三层：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/agent-skills-ai-agent-economy/imgs/agent-layers.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/agent-skills-ai-agent-economy/imgs/agent-layers_hu_5ca0454827008dbe.png 480w, https://blog.ccino.org/p/agent-skills-ai-agent-economy/imgs/agent-layers_hu_2a70fdba02c63a9b.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;AI Agent 的三层竞争结构&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;模型层：Claude、GPT、Gemini、DeepSeek、Qwen&lt;/li&gt;
&lt;li&gt;Harness 层：Claude Code、Cursor、Codex、OpenCode、Windsurf&lt;/li&gt;
&lt;li&gt;Skill 层：用户和团队沉淀下来的工作流能力&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;前两层你很难完全拥有。模型是厂商的，harness 也是厂商或开源社区的。&lt;/p&gt;
&lt;p&gt;但第三层可能属于你。&lt;/p&gt;
&lt;p&gt;你的代码规范、写作风格、选题流程、发布检查、客服话术、数据分析方法，都可以被封装成 skills。&lt;/p&gt;
&lt;p&gt;换句话说，未来真正有价值的不是“我会用某个 AI 工具”，而是“我有一套可以迁移到任何 AI 工具里的能力资产”。&lt;/p&gt;
&lt;h2 id=&#34;好的-skill-应该像靠谱同事不是一本手册&#34;&gt;好的 Skill 应该像靠谱同事，不是一本手册
&lt;/h2&gt;&lt;p&gt;很多人做 skill，容易犯一个错误：把它写成知识库。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;写代码要遵循 SOLID、KISS、DRY、YAGNI。要注意安全，要写测试，要保持可维护性。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;这当然都对，但对 Agent 的帮助有限。&lt;/p&gt;
&lt;p&gt;因为这些原则太抽象。AI 很擅长复述原则，也很擅长在违反原则之后解释自己为什么没有违反。&lt;/p&gt;
&lt;p&gt;真正有用的 skill，需要把原则变成动作。&lt;/p&gt;
&lt;p&gt;不是说“要写测试”，而是写清楚：什么时候必须先写测试，哪些场景可以不写，如果不写测试要给出什么替代验证，测试失败时不能继续推进，不允许用“只是小改动”作为跳过理由。&lt;/p&gt;
&lt;p&gt;这就是 &lt;code&gt;agent-skills&lt;/code&gt; 里 anti-rationalization 表的价值。&lt;/p&gt;
&lt;p&gt;它不是假设 Agent 会严格自律，而是假设 Agent 会找理由偷懒，然后提前把这些理由堵住。&lt;/p&gt;
&lt;p&gt;这很真实。&lt;/p&gt;
&lt;p&gt;我们自己使用 AI Agent 时也经常能看到类似话术：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;“这是一个简单改动，不需要测试”&lt;/li&gt;
&lt;li&gt;“我已经看过代码，应该没问题”&lt;/li&gt;
&lt;li&gt;“为了节省时间，先跳过验证”&lt;/li&gt;
&lt;li&gt;“这个错误可能是环境问题”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些话如果来自初级工程师，你会要求他停下来补证据；但如果来自一个语言流畅的 AI，我们反而容易被说服。&lt;/p&gt;
&lt;p&gt;所以一个好的 skill，不应该只是知识说明，而应该像一个靠谱同事在旁边盯流程。&lt;/p&gt;
&lt;p&gt;它会提醒你：先别急着写。需求没说清。这个改动范围太大。测试证据不够。安全边界没确认。发布前没有回滚方案。&lt;/p&gt;
&lt;p&gt;这样的 skill 才有生产价值。&lt;/p&gt;
&lt;h2 id=&#34;为什么说-skill-是最小封装单元&#34;&gt;为什么说 Skill 是“最小封装单元”？
&lt;/h2&gt;&lt;p&gt;“经济”这个词听起来有点大，但如果把 Agent 当成未来的软件执行单元，那么 skill 很可能会扮演类似“插件”“包”“模板”“SOP”的混合角色。&lt;/p&gt;
&lt;p&gt;它足够小，小到可以封装一个具体任务。&lt;/p&gt;
&lt;p&gt;它又足够完整，完整到不只是描述结果，还包含流程、边界、验证和失败处理。&lt;/p&gt;
&lt;p&gt;这让 skill 具备几种潜在价值。&lt;/p&gt;
&lt;p&gt;第一，它可以复用。一个好的 code review skill，不应该只服务一个项目。稍作调整，它可以用于多个代码库、多个团队、多个 Agent。&lt;/p&gt;
&lt;p&gt;第二，它可以组合。一个完整任务往往不是一个 skill 完成，而是多个 skill 串联。比如写一篇文章，可以是“热点采集 → 选题审核 → 素材入库 → 大纲生成 → 初稿写作 → 去 AI 味 → 发布检查”。每一步都是独立 skill，但组合起来就是一个工作流。&lt;/p&gt;
&lt;p&gt;第三，它可以审计。相比临时聊天，skill 有文本、有版本、有规则。团队可以 review 它、修改它、追踪它为什么导致某类输出。这对企业使用 AI 很重要。&lt;/p&gt;
&lt;p&gt;第四，它可以迁移。如果 skill 是 Markdown 或类似开放格式，它就不完全绑定某个平台。今天在 Claude Code，明天在 Gemini CLI，后天在 OpenCode，只要 agent 支持读取这些流程，它就有迁移空间。&lt;/p&gt;
&lt;p&gt;模型负责推理，工具负责执行，skill 负责把人类经验封装成可重复调用的工作方式。&lt;/p&gt;
&lt;h2 id=&#34;但-skill-不是写得越多越好&#34;&gt;但 Skill 不是写得越多越好
&lt;/h2&gt;&lt;p&gt;Skill 不是银弹。写得不好，它也会制造新问题。&lt;/p&gt;
&lt;p&gt;第一个风险是过度流程化。有些任务本来很简单，却被 skill 拆成十几步，导致 Agent 每次都像在走官僚流程。&lt;/p&gt;
&lt;p&gt;第二个风险是规则冲突。一个 skill 说“保持简洁”，另一个 skill 说“充分解释”，第三个 skill 说“必须列出完整步骤”。如果没有优先级，Agent 会在冲突指令里摇摆。&lt;/p&gt;
&lt;p&gt;第三个风险是维护成本。Skill 一旦多起来，就会像代码一样腐烂。旧规则不更新，路径失效，工具命令过时，项目结构变化后还在按旧流程做事。&lt;/p&gt;
&lt;p&gt;第四个风险是权限扩大。当 skill 开始调用工具、操作文件、连接外部服务，它就不只是提示词，而是带执行后果的自动化流程。哪些动作需要确认，哪些动作可以自动执行，必须写清楚。&lt;/p&gt;
&lt;p&gt;所以好的 skill 应该遵循几个原则：小而具体，有明确触发条件，有验证标准，有失败路径，能被版本管理和持续迭代，尽量用开放格式。&lt;/p&gt;
&lt;p&gt;这和写软件其实很像。&lt;/p&gt;
&lt;p&gt;一个函数如果职责太多、边界不清、没有测试、没人维护，最后一定会变成负担。Skill 也是一样。&lt;/p&gt;
&lt;h2 id=&#34;先别急着装-100-个-skills&#34;&gt;先别急着装 100 个 Skills
&lt;/h2&gt;&lt;p&gt;看到 &lt;code&gt;agent-skills&lt;/code&gt; 这种项目，很多人的第一反应可能是：我是不是应该把所有 skills 都装上？&lt;/p&gt;
&lt;p&gt;可以装，但更重要的是另一件事：开始写自己的 skills。&lt;/p&gt;
&lt;p&gt;不是为了炫技，而是为了把你反复做的工作沉淀下来。&lt;/p&gt;
&lt;p&gt;最适合做成 skill 的任务，通常有几个特征：你每周都会重复做，你有明确偏好但每次都要重新告诉 AI，AI 经常在同一个地方犯错，任务有固定检查清单，输出质量可以被验证。&lt;/p&gt;
&lt;p&gt;比如你经常写公众号文章，就可以先做一个“文章去 AI 味 skill”。&lt;/p&gt;
&lt;p&gt;比如你经常做选题，就可以做一个“热点去重与角度判断 skill”。&lt;/p&gt;
&lt;p&gt;比如你经常改代码，就可以做一个“发布前检查 skill”。&lt;/p&gt;
&lt;p&gt;初版不用完美。写清楚什么时候用、分几步做、哪些事情不能跳过、最后输出什么，就够了。&lt;/p&gt;
&lt;p&gt;然后每次使用中发现问题，再把规则补进去。&lt;/p&gt;
&lt;p&gt;这才是 skill 真正有意思的地方。它不是一次性写完的 prompt，而是会随着你的工作经验一起成长的东西。&lt;/p&gt;
&lt;h2 id=&#34;未来每个人都可能有两套资产&#34;&gt;未来每个人都可能有两套资产
&lt;/h2&gt;&lt;p&gt;过去几年，很多人开始搭建自己的知识库。Obsidian、Notion、Logseq、NotebookLM，本质上都是在解决一个问题：我的信息如何被保存、组织、检索和复用。&lt;/p&gt;
&lt;p&gt;但 AI Agent 普及之后，仅有知识库可能不够了。&lt;/p&gt;
&lt;p&gt;因为知识回答的是“我知道什么”，skill 回答的是“我怎么做事”。&lt;/p&gt;
&lt;p&gt;一个人的长期竞争力，可能会由两套资产组成：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/agent-skills-ai-agent-economy/imgs/knowledge-skill-assets.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/agent-skills-ai-agent-economy/imgs/knowledge-skill-assets_hu_768f20e61eb1834.png 480w, https://blog.ccino.org/p/agent-skills-ai-agent-economy/imgs/knowledge-skill-assets_hu_14161081b490d5a6.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;知识库与技能库共同构成 AI 工作流资产&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;知识库：事实、资料、笔记、案例、经验&lt;/li&gt;
&lt;li&gt;技能库：流程、判断、标准、检查、输出方式&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;前者让 AI 更懂你的背景。&lt;/p&gt;
&lt;p&gt;后者让 AI 更像你的工作方式。&lt;/p&gt;
&lt;p&gt;如果说知识库是外部大脑，那么技能库更像外部小脑。它不负责存储所有信息，而负责把动作变得稳定、协调、可重复。&lt;/p&gt;
&lt;p&gt;大家现在还在问“哪个模型最好”。但再过一段时间，真正的问题可能会变成：&lt;/p&gt;
&lt;p&gt;你的 Agent 学会了你哪些 Skills？&lt;/p&gt;
&lt;h2 id=&#34;结语&#34;&gt;结语
&lt;/h2&gt;&lt;p&gt;AI 工具更新很快。今天 Claude Code 强，明天 Codex 反超，后天 OpenCode 又冒出来。模型价格会变，接口会变，厂商策略也会变。&lt;/p&gt;
&lt;p&gt;但有一类东西不应该跟着每次工具迁移一起丢掉。&lt;/p&gt;
&lt;p&gt;那就是你自己的工作流。&lt;/p&gt;
&lt;p&gt;Agent Skills 的真正价值，不在于它让 AI 多会了一个技巧，而在于它把“怎么把事情做好”这件事，从一次性的对话里抽离出来，变成可以保存、复用、修改、迁移的资产。&lt;/p&gt;
&lt;p&gt;AI Agent 经济如果真的会出现，它不可能只建立在模型 API 上。它还需要一层更贴近真实工作的封装：把专家经验变成流程，把流程变成技能，把技能变成可以组合的能力单元。&lt;/p&gt;
&lt;p&gt;到那时，最重要的问题可能不再是：你用哪个 Agent？&lt;/p&gt;
&lt;p&gt;而是：你的 Agent 学会了你哪些 Skills？&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/addyosmani/agent-skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub: addyosmani/agent-skills&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=EkBUI84eGJU&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;HAMY LABS: How To Create Portable AI Skills Across Harnesses&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=FETkcI0gL5Y&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Akinyemi Bajulaiye: Agent Skills Are the Most Underrated Part of the AI Agent Economy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=EHAwXXUB-94&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hyperautomation Labs: The Agent Harness Pro Playbook&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>白宫要给AI装「安检门」——特朗普政府为何突然不「自由市场」了？</title>
        <link>https://blog.ccino.org/p/white-house-ai-model-review/</link>
        <pubDate>Tue, 05 May 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/white-house-ai-model-review/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/white-house-ai-model-review/imgs/cover.jpg" alt="Featured image of post 白宫要给AI装「安检门」——特朗普政府为何突然不「自由市场」了？" /&gt;&lt;p&gt;昨天刷到这条新闻的时候，我愣了好几秒。&lt;/p&gt;
&lt;p&gt;《纽约时报》和路透社同步报道：特朗普政府正在考虑要求AI公司在发布新模型前，先接受政府审查。不是&amp;quot;我们建议你自查一下&amp;quot;那种，是正经的审查流程。&lt;/p&gt;
&lt;p&gt;消息一出，整个AI圈的反应出奇一致——不是震惊于&amp;quot;政府要审查AI&amp;quot;这事儿本身，而是&lt;strong&gt;说这话的人不对&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;拜登政府在2023年干过类似的事，要求AI开发者向政府提交安全测试结果。特朗普一上台就把它废了，同时废掉的还有一系列联邦AI标准。过去一年半，这届白宫对AI的态度用一个表情包就能概括：别管我，让我跑。&lt;/p&gt;
&lt;p&gt;废除监管、威胁制裁搞AI监管的州、高喊美国优先要赢下AI竞赛——都是同一套剧本。&lt;/p&gt;
&lt;p&gt;现在剧本突然翻页了。&lt;/p&gt;
&lt;h2 id=&#34;mythos才是那个点燃引信的家伙&#34;&gt;Mythos才是那个点燃引信的家伙
&lt;/h2&gt;&lt;p&gt;白宫正在酝酿的行政令，核心是成立一个由科技高管和政府官员组成的AI工作组，专门研究怎么对新模型搞&amp;quot;发布前审查&amp;quot;。白宫高级官员已经在最近几周跟Anthropic、Google和OpenAI的高管们通过气了。&lt;/p&gt;
&lt;p&gt;这事儿还没定案。白宫官员对外说的口径是——关于行政令的讨论目前还只是&amp;quot;猜测&amp;quot;，真要有啥政策 announcement，得特朗普本人亲自来。&lt;/p&gt;
&lt;p&gt;但真正让我觉得有意思的是，这整件事的导火索。&lt;/p&gt;
&lt;p&gt;不是GPT-5.5，不是Opus 4.7，是一个叫Mythos的模型。Anthropic开发的，能力强到能高效识别软件安全漏洞。强到什么程度？Anthropic自己说它&amp;quot;可能引发网络安全领域的清算&amp;quot;，然后——&lt;strong&gt;拒绝公开发布&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这就引出了一个白宫不得不面对的问题：如果一家公司可以单方面决定什么AI能力&amp;quot;太危险不能发布&amp;quot;，那政府是不是也该有个发言权？&lt;/p&gt;
&lt;p&gt;我后来想，这其实是个挺经典的囚徒困境。公司不发布，是出于责任感的自我约束；但如果另一家不那么有责任感的公司决定发布呢？或者更糟，有人用开源方式把类似能力放出来？&lt;/p&gt;
&lt;p&gt;政府的思路是：不能把&amp;quot;什么能发布&amp;quot;这事完全交给AI公司。就像不能把&amp;quot;什么药能上市&amp;quot;完全交给制药公司。&lt;/p&gt;
&lt;p&gt;道理是这个道理，但从这届白宫嘴里说出来，味道就很微妙了。&lt;/p&gt;
&lt;h2 id=&#34;回头看那18个月的政策轨迹&#34;&gt;回头看那18个月的政策轨迹
&lt;/h2&gt;&lt;p&gt;要理解这个转向有多剧烈，得先看看特朗普上台后对AI干过什么。&lt;/p&gt;
&lt;p&gt;2025年1月，上任第一天就签署行政令，废了拜登那套AI监管框架。&lt;/p&gt;
&lt;p&gt;2025年12月，又签了一个，这次更狠——威胁从联邦宽带基金里扣钱，制裁那些搞&amp;quot;阻碍美国AI领先地位&amp;quot;的州法规。命令原文写得明明白白：&amp;ldquo;美国的AI公司必须能够在没有繁琐监管的情况下自由创新。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;2026年3月，白宫搞了个国家AI立法框架，核心主张是全国统一标准，不让各州各自为政。同一个月，还下令联邦机构全面停用Anthropic产品——原因是Anthropic拒绝放宽军事用途限制。&lt;/p&gt;
&lt;p&gt;然后到了2026年5月。&lt;/p&gt;
&lt;p&gt;同一个人，同一个政府，开始考虑AI发布前审查。&lt;/p&gt;
&lt;p&gt;这个转向看起来矛盾，但仔细想想，逻辑线是通的。特朗普政府从来没反对过&amp;quot;监管&amp;quot;本身——它反对的是&amp;quot;别人来监管&amp;quot;。当监管权从加州和纽约州手里拿回来、握在联邦政府手里时，行政令就突然香了。&lt;/p&gt;
&lt;p&gt;更重要的是，AI的能力曲线已经逼近了一道他们不得不正视的红线。&lt;/p&gt;
&lt;h2 id=&#34;gpt-55opus-47-和一直没露面的-mythos&#34;&gt;GPT-5.5、Opus 4.7 和一直没露面的 Mythos
&lt;/h2&gt;&lt;p&gt;三个几乎同时发生的技术节点，把白宫推到了谈判桌前。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/white-house-ai-model-review/imgs/agent-security.jpg&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/white-house-ai-model-review/imgs/agent-security_hu_12d7cb6188d12ddf.jpg 480w, https://blog.ccino.org/p/white-house-ai-model-review/imgs/agent-security_hu_eb72ced62ad02d7d.jpg 1024w&#34;
	loading=&#34;lazy&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;GPT-5.5的Agent能力是一个量级变化。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;4月24日发布的GPT-5.5，OpenAI说它是&amp;quot;为复杂真实世界工作设计&amp;quot;的。英国AI安全研究所的测试数据很吓人：GPT-5.5能独立完成一个模拟的32步企业网络攻击，一个人类安全专家需要20小时才能干完同样的事。OpenAI自己的安全评估把GPT-5.5的网络安全能力评为&amp;quot;高&amp;quot;，距离最高档&amp;quot;临界&amp;quot;（能自主开发针对生产系统的零日漏洞利用）只差一档。&lt;/p&gt;
&lt;p&gt;什么意思呢？以前的AI是个聊天框，你得告诉它每一步怎么做。现在它是一个可以自主行动的数字员工，给它一个目标，它会自己规划、自己找工具、自己纠错。当&amp;quot;可以自主行动&amp;quot;包括&amp;quot;可以发起网络攻击&amp;quot;时，政府不可能再装没看见。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Opus 4.7这边也不让人省心。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;比GPT-5.5早一天发布的Claude Opus 4.7，在软件工程基准（SWE-Bench Pro）和MCP工具编排上领先GPT-5.5，232页的系统卡前所未有地长。Anthropic强调的是&amp;quot;严谨性和一致性&amp;quot;——换个角度理解：这模型能力很强，但也很复杂，行为边界不好确定。&lt;/p&gt;
&lt;p&gt;两个前沿模型几乎同时达到相似的能力水位线。头部玩家们都在猛踩油门，任何一个的安全失误都可能是灾难性的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;但真正让白宫从&amp;quot;再看看吧&amp;quot;变成&amp;quot;得管管&amp;quot;的，是Mythos。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这个模型至今没有公开发布。Anthropic高管的原话是它&amp;quot;可能引发网络安全领域的清算&amp;quot;——不是修辞，是真的认为它能造成实质性破坏。所以Anthropic选择不发布它。&lt;/p&gt;
&lt;p&gt;问题是，白宫看到的不是&amp;quot;Anthropic很有责任感&amp;quot;，而是&amp;quot;如果下次发布的是一个没那么有责任感的公司呢？&amp;quot;&lt;/p&gt;
&lt;h2 id=&#34;一个诡异的悖论anthropic被打了左脸右脸又被叫去开会&#34;&gt;一个诡异的悖论：Anthropic被打了左脸，右脸又被叫去开会
&lt;/h2&gt;&lt;p&gt;这个故事里最黑色幽默的一幕是：正在被白宫叫去商量监管的Anthropic，同时也是被特朗普政府往死里制裁的对象。&lt;/p&gt;
&lt;p&gt;就在几周前，特朗普签了行政令要联邦机构逐步淘汰Anthropic产品。五角大楼给它贴了&amp;quot;供应链风险&amp;quot;的标签，财政部、国务院、卫生与公众服务部相继停用Claude。Anthropic起诉了五角大楼，好在联邦法官发了临时禁令。&lt;/p&gt;
&lt;p&gt;然后到了5月，白宫说：来，坐下聊聊AI安全的事。&lt;/p&gt;
&lt;p&gt;又打又拉，这姿态挺诚实的。翻译一下就是：我需要你的技术，但我信不过你的价值观；我看重你的能力，但我不想被你绑架。&lt;/p&gt;
&lt;p&gt;4月底特朗普在CNBC采访里话锋一转，说Anthropic&amp;quot;正在变得不错&amp;quot;&amp;ldquo;未来可以大有用处&amp;rdquo;。Axios紧接着报道白宫在起草允许联邦机构使用Anthropic的指引。从全面封杀到重新接纳到寻求合作——不到两个月，画了一条完整的U型曲线。&lt;/p&gt;
&lt;p&gt;政商关系能做到这么拧巴的，也是少见。&lt;/p&gt;
&lt;h2 id=&#34;那套欧盟剧本美国抄不了&#34;&gt;那套欧盟剧本，美国抄不了
&lt;/h2&gt;&lt;p&gt;很多人看到这消息第一反应是：这不就是欧盟AI Act吗？&lt;/p&gt;
&lt;p&gt;仔细看，差挺远的。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/white-house-ai-model-review/imgs/free-market-vs-regulation.jpg&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/white-house-ai-model-review/imgs/free-market-vs-regulation_hu_15f1e77f4234f4ff.jpg 480w, https://blog.ccino.org/p/white-house-ai-model-review/imgs/free-market-vs-regulation_hu_d8d5704165fdb959.jpg 1024w&#34;
	loading=&#34;lazy&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;欧盟那套是基于风险分级——不可接受风险不能用，高风险要严管，有限风险贴个标签就行。核心出发点是保护公民权利，防止算法歧视和隐私侵犯。&lt;/p&gt;
&lt;p&gt;白宫这次想搞的模式不一样。它是基于能力阈值——不管你是干什么的AI，只要能力到了某个水平线，就得先让我看看。出发点是国家安全，防止AI驱动的网络攻击和生物武器开发。&lt;/p&gt;
&lt;p&gt;两者的共同困境倒是一致的：监管永远追不上技术迭代。欧盟AI Act从提案到生效花了三年多，GPT-5.5和Opus 4.7的发布间隔只有几天。&lt;/p&gt;
&lt;h2 id=&#34;这事跟中国有什么关系&#34;&gt;这事跟中国有什么关系？
&lt;/h2&gt;&lt;p&gt;说几个我觉得值得关注的点。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第一，中美之间的&amp;quot;监管鸿沟&amp;quot;可能会拉大。&lt;/strong&gt; 如果美国真搞起发布前审查，中国AI公司的处境有点两难：跟着搞监管吧，可能拖慢自己迭代速度；坚持不干预吧，国际合作上可能陷入被动。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第二，开源和闭源的博弈会进入一个新阶段。&lt;/strong&gt; 如果闭源模型受审查，开源可能变成绕开监管的通道——就像当年加密货币绕过传统金融体系一样。这个逻辑下，中国AI公司拥抱开源的可能性反而在增加。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第三，AI安全的国际标准之争会越来越激烈。&lt;/strong&gt; 谁定义&amp;quot;安全&amp;quot;，谁就握住了监管的尺子。美国搞以国家安全为导向的审查，欧盟搞以公民权利为导向的监管，中国可能会推出自己的版本——三套标准并行，全世界AI公司得做三套合规。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第四，人才流动的方向可能有变数。&lt;/strong&gt; 如果美国监管趋严，一部分不愿意受政府审查约束的研究者可能把目光转向中国或其他地区。当年欧洲GDPR实施后一些AI创业者跑到美国去发展，历史可能重演，只是方向相反。&lt;/p&gt;
&lt;h2 id=&#34;几个没人答得出来的问题&#34;&gt;几个没人答得出来的问题
&lt;/h2&gt;&lt;p&gt;最后说几个我越想越觉得悬而未决的事。&lt;/p&gt;
&lt;p&gt;工作组怎么运作？科技公司高管和政府官员坐一个委员会里，利益冲突怎么解决？Google的VP参与对OpenAI模型的审查，商业机密怎么保护？&lt;/p&gt;
&lt;p&gt;审查标准怎么定？&amp;ldquo;危险&amp;quot;的AI模型怎么定义？是按能力来（能发起攻击就算），还是按意图来（被设计用于攻击才算）？一个能自主编程的AI Agent，既能帮开发者修bug，也能帮黑客写恶意软件——同一个东西，你怎么定它是有害还是无害？&lt;/p&gt;
&lt;p&gt;通不过怎么办？白宫有权禁止一个模型发布吗？公司不服告到哪里？这可是碰了宪法第一修正案的底线——代码到底算不算受保护的言论？&lt;/p&gt;
&lt;p&gt;这些问题目前一个答案都没有。&lt;/p&gt;
&lt;p&gt;但有一件事是确定的——AI的能力曲线在以超出政策制定者预期的速度往上冲，&amp;ldquo;先看看再说&amp;quot;的窗口期正在关闭。&lt;/p&gt;
&lt;p&gt;2025年12月，特朗普在废除州级AI监管的行政令里写：&amp;ldquo;美国的AI公司必须能够自由创新。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;六个月后，同一个政府在起草AI发布前审查的命令。&lt;/p&gt;
&lt;p&gt;不是特朗普变了。是这个技术跑得太快了，快到让最坚定的自由市场信徒都开始怀疑自己的信仰。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;参考来源：&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.nytimes.com/2026/05/04/technology/trump-ai-models.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NYT: White House Considers Vetting A.I. Models Before They Are Released&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reuters.com/world/white-house-considers-vetting-ai-models-before-they-are-released-nyt-reports-2026-05-04/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reuters: White House considers government reviews for AI models&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.cio.com/article/4166828/white-house-weighs-pre-release-reviews-for-high-risk-ai-models.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CIO: White House weighs pre-release reviews for high-risk AI models&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.freemalaysiatoday.com/category/world/2026/05/05/white-house-weighs-vetting-ai-models-before-public-release&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Free Malaysia Today: White House weighs vetting AI models&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openai.com/index/gpt-5-5-system-card/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI: GPT-5.5 System Card&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.transformernews.ai/p/openai-shouldnt-be-deciding-if-its-gpt-55&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Transformer News: GPT-5.5 and the broken state of government evals&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://36kr.com/newsflashes/3795818949647618&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;36氪: 白宫拟在AI模型发布前实施审查&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.axios.com/2026/03/09/trump-white-house-anthropic-executive-order&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Axios: Scoop: White House readies executive order to weed out Anthropic&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.govexec.com/technology/2026/04/white-house-drafting-plans-permit-federal-anthropic-use/413204/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GovExec: White House is drafting plans to permit federal Anthropic use&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.whitehouse.gov/presidential-actions/2025/12/eliminating-state-law-obstruction-of-national-artificial-intelligence-policy/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;White House: Ensuring a National Policy Framework for AI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Graphify 爆火背后：Claude Code 最大的敌人不是笨，而是贵</title>
        <link>https://blog.ccino.org/p/graphify-claude-code-context-cost/</link>
        <pubDate>Mon, 04 May 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/graphify-claude-code-context-cost/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/graphify-claude-code-context-cost/cover.png" alt="Featured image of post Graphify 爆火背后：Claude Code 最大的敌人不是笨，而是贵" /&gt;&lt;p&gt;这两天，Claude Code 社区里有个工具被反复提到：&lt;strong&gt;Graphify&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;它的卖点很直白：先在本地给你的代码库建一张知识图谱，再让 Claude Code 查询这张图，而不是每次都重新 &lt;code&gt;Read&lt;/code&gt;、&lt;code&gt;Grep&lt;/code&gt;、&lt;code&gt;Glob&lt;/code&gt; 一遍项目。&lt;/p&gt;
&lt;p&gt;作者在 Reddit 上说，&lt;code&gt;/graphify&lt;/code&gt; 26 天拿到 45 万多次下载、接近 4 万 stars。Twitter 上也有人贴了实测：一个生产级 NestJS + Next.js SaaS 项目，同一个问题，不用 graphify-ts 时跑了 9 轮、96 秒、615K tokens；用了之后变成 3 轮、35 秒、234K tokens。&lt;/p&gt;
&lt;p&gt;这些数字不一定能在每个项目里复现，但它戳中了一个很真实的问题：&lt;strong&gt;Claude Code 现在最贵的地方，很多时候不是写代码，而是反复理解代码。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;ai-编程的瓶颈变了&#34;&gt;AI 编程的瓶颈变了
&lt;/h2&gt;&lt;p&gt;刚开始用 Claude Code，最惊艳的是它终于能进代码库了。&lt;/p&gt;
&lt;p&gt;它可以读文件、搜项目、跑命令、改代码、跑测试。以前 AI 像一个坐在屏幕外的顾问，你要把代码复制给它；现在它更像一个能进仓库干活的同事。&lt;/p&gt;
&lt;p&gt;但项目一大，问题马上出现。&lt;/p&gt;
&lt;p&gt;你问它：“这个登录流程为什么偶尔失败？”&lt;/p&gt;
&lt;p&gt;它可能先搜 &lt;code&gt;login&lt;/code&gt;，再读 auth 文件，再看 middleware，再看 session，再看数据库 schema，再看测试。中间哪一步不确定，它就继续读。第二天你换个角度问，它可能又来一遍。&lt;/p&gt;
&lt;p&gt;这不是 Claude 不聪明，而是它没有一张可复用的项目地图。&lt;/p&gt;
&lt;p&gt;人类工程师熟悉一个项目后，不会每次都从零开始读仓库。看到一个 bug，大概知道入口在哪、状态从哪来、哪些模块危险、哪些文件可以先跳过。AI 现在的问题是，它经常像一个很聪明但刚入职的工程师：能力够强，但每次都要重新 onboarding。&lt;/p&gt;
&lt;p&gt;这就是 token 成本高、响应慢、上下文窗口紧张的根源。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/graphify-claude-code-context-cost/imgs/repeated-context-cost.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/graphify-claude-code-context-cost/imgs/repeated-context-cost_hu_a48bcf484c7fe29a.png 480w, https://blog.ccino.org/p/graphify-claude-code-context-cost/imgs/repeated-context-cost_hu_b882c629f5afe08f.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Claude Code 反复读取上下文的成本&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;Graphify 想补的，就是这层“项目记忆”。&lt;/p&gt;
&lt;h2 id=&#34;graphify-到底做什么&#34;&gt;Graphify 到底做什么？
&lt;/h2&gt;&lt;p&gt;graphify-ts 的思路不复杂：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在本地扫描你的项目；&lt;/li&gt;
&lt;li&gt;从代码、文档和项目文件里抽取结构；&lt;/li&gt;
&lt;li&gt;生成 &lt;code&gt;graphify-out/graph.json&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;通过 MCP 接入 Claude Code；&lt;/li&gt;
&lt;li&gt;Claude 遇到代码库问题时，可以调用 &lt;code&gt;retrieve&lt;/code&gt;、&lt;code&gt;impact&lt;/code&gt;、&lt;code&gt;pr_impact&lt;/code&gt; 等工具拿到结构化上下文。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;它不是把代码上传到云端，也不需要 API key。按它的 README 说法，构建和查询都默认在本地完成：tree-sitter 解析、BM25 检索、图结构、可选本地 embedding，全都不走外部服务。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/graphify-claude-code-context-cost/imgs/graphify-workflow.png&#34;
	width=&#34;1792&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://blog.ccino.org/p/graphify-claude-code-context-cost/imgs/graphify-workflow_hu_45606dc50fe671c9.png 480w, https://blog.ccino.org/p/graphify-claude-code-context-cost/imgs/graphify-workflow_hu_a01cb3d9a02d801c.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Graphify 的本地扫描与 Claude Code 查询流程&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;175&#34;
		data-flex-basis=&#34;420px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;这点很重要。很多公司不是不想给 AI 做代码索引，而是不敢把代码库交给一个托管服务。Graphify 的吸引力就在这里：它走的是 local-first。&lt;/p&gt;
&lt;p&gt;它和普通 RAG 也不完全一样。&lt;/p&gt;
&lt;p&gt;RAG 更像是在文本里找相似片段。你问“登录失败”，它找看起来和登录相关的代码或文档。&lt;/p&gt;
&lt;p&gt;但代码库不是普通文本。很多关键关系不在“语义相似”里，而在结构里：谁调用谁，哪个配置影响哪个运行路径，哪个测试覆盖哪个模块，哪个文件是某条链路的入口。&lt;/p&gt;
&lt;p&gt;所以更准确地说：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;grep&lt;/code&gt; 解决“字符串在哪里”；&lt;/li&gt;
&lt;li&gt;embedding 解决“相似内容在哪里”；&lt;/li&gt;
&lt;li&gt;Graphify 试图解决“项目结构关系是什么”。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这也是它适合 Claude Code 的原因。Claude Code 本来就擅长多步执行，但需要更好的起点。如果每次任务都从盲搜开始，成本自然高；如果先有一张项目图，它就能更快进入关键区域。&lt;/p&gt;
&lt;h2 id=&#34;怎么安装和配置-graphify&#34;&gt;怎么安装和配置 Graphify
&lt;/h2&gt;&lt;p&gt;如果你想试，graphify-ts 的安装路径很短。前提是本机有 Node.js 20 或更高版本。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install -g @mohammednagy/graphify-ts
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;进入你的项目根目录：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; your-project
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;graphify-ts generate .
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这一步会生成：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;graphify-out/graph.json
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然后把它接到 Claude Code：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;graphify-ts claude install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;完成后，在 Claude Code 里直接问项目相关问题即可。理想情况下，Claude 会通过本地 MCP 工具先查询 Graphify，而不是一上来反复扫文件。&lt;/p&gt;
&lt;p&gt;常用命令还有几个：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;graphify-ts watch .
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;用于文件变化后自动重建图。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;graphify-ts compare &lt;span class=&#34;s2&#34;&gt;&amp;#34;How does auth work?&amp;#34;&lt;/span&gt; --exec &lt;span class=&#34;s1&#34;&gt;&amp;#39;claude -p&amp;#39;&lt;/span&gt; --yes
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;用于对比使用 Graphify 前后的效果。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;graphify-ts review-compare graphify-out/graph.json --exec &lt;span class=&#34;s1&#34;&gt;&amp;#39;claude -p&amp;#39;&lt;/span&gt; --yes
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;用于 PR review 场景的对比。&lt;/p&gt;
&lt;p&gt;如果你不是 Claude Code 用户，它也提供其他安装入口：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;graphify-ts cursor install
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;graphify-ts copilot install
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;graphify-ts gemini install
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;graphify-ts aider install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;不过我建议先别急着全项目长期接入。更稳的做法是找一个你熟悉的中型项目，先问几个固定问题做 A/B 对比：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;“这个认证流程从入口到数据库是怎么走的？”&lt;/li&gt;
&lt;li&gt;“如果我改这个模块，会影响哪些地方？”&lt;/li&gt;
&lt;li&gt;“这个 PR 最可能引入什么风险？”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;看它是不是真的减少了 Claude 的搜索轮次、读取文件数量和响应时间。工具宣传的 benchmark 只能参考，自己的项目才算数。&lt;/p&gt;
&lt;h2 id=&#34;它为什么会火&#34;&gt;它为什么会火？
&lt;/h2&gt;&lt;p&gt;我觉得原因很简单：Claude Code 用户开始算账了。&lt;/p&gt;
&lt;p&gt;早期大家更关心模型够不够强。现在很多人已经把 Claude Code 放进真实项目里用，痛点变成了：一次任务要跑多少轮、读多少文件、烧多少 token、能不能复用上次的理解。&lt;/p&gt;
&lt;p&gt;尤其最近 Claude Code 的定价和 Pro 计划争议很多，用户对成本更敏感。一个能减少重复上下文消耗的工具，自然会被放大。&lt;/p&gt;
&lt;p&gt;Graphify 的火，也说明 AI 编程工具进入了第二阶段。&lt;/p&gt;
&lt;p&gt;第一阶段是“让 AI 能做事”：读文件、跑命令、改代码、跑测试。&lt;/p&gt;
&lt;p&gt;第二阶段是“让 AI 低成本地持续做事”：能复用项目结构，能理解长期上下文，能把任务拆成可验证的 workflow。&lt;/p&gt;
&lt;p&gt;MindStudio 那篇关于 Claude Code workflow patterns 的文章也提到类似方向：复杂工程任务不是一次 prompt 能解决的，需要 sequential、operator、split-and-merge、agent teams、headless 这类不同工作流。Graphify 解决的不是完整工作流，而是其中非常关键的一层：让 agent 拿到更便宜、更结构化的项目上下文。&lt;/p&gt;
&lt;h2 id=&#34;但别神化它&#34;&gt;但别神化它
&lt;/h2&gt;&lt;p&gt;Graphify 不是魔法。&lt;/p&gt;
&lt;p&gt;小项目可能用不上，直接 &lt;code&gt;grep&lt;/code&gt; 和 &lt;code&gt;Read&lt;/code&gt; 就够了。变化很快的项目，如果图不及时更新，反而可能误导 Claude。大量运行时动态生成、元编程、复杂框架约定，也不一定能被图完整表达。&lt;/p&gt;
&lt;p&gt;而且图只能告诉 AI “关系可能在哪里”，不能替代验证。真正靠谱的 AI coding workflow，还是要跑测试、看 diff、做 review，涉及删除、部署、数据库写入这类高风险动作时必须保留人工确认。&lt;/p&gt;
&lt;p&gt;我更愿意把 Graphify 看成一个上下文加速器，而不是自动编程外挂。&lt;/p&gt;
&lt;p&gt;它解决的是“少绕路”，不是“永远不错”。&lt;/p&gt;
&lt;h2 id=&#34;真正值得关注的是项目地图&#34;&gt;真正值得关注的是项目地图
&lt;/h2&gt;&lt;p&gt;Graphify 今天看起来像一个社区爆款工具，但它指向的可能是 AI IDE 的基础能力。&lt;/p&gt;
&lt;p&gt;未来的 Cursor、Claude Code、Codex、JetBrains AI、VS Code Copilot，大概率都会内置类似的项目语义图。IDE 不只是保存文件树，还会持续维护一张项目地图：谁调用谁，哪些模块经常一起变化，哪些测试覆盖哪些行为，哪些文档解释哪些设计决策。&lt;/p&gt;
&lt;p&gt;到那时，AI 编程工具的体验会变得不一样。&lt;/p&gt;
&lt;p&gt;它不再每次都问：“这个项目是怎么回事？”&lt;/p&gt;
&lt;p&gt;它会更像一个熟悉仓库的同事：知道从哪里下手，知道哪些地方危险，知道什么时候该读代码，什么时候该跑测试，什么时候该停下来问你。&lt;/p&gt;
&lt;p&gt;所以 Graphify 这次火起来，表面上是一个工具传播。&lt;/p&gt;
&lt;p&gt;更深一层，它提醒我们：AI 编程的竞争，正在从“谁的模型更聪明”，转向“谁能让模型更便宜、更稳定地理解真实项目”。&lt;/p&gt;
&lt;p&gt;模型能力当然还重要。&lt;/p&gt;
&lt;p&gt;但对每天写代码的人来说，下一阶段真正值钱的，可能是那张项目地图。&lt;/p&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://reddit.com/r/ClaudeAI/comments/1t18eeh/i_built_graphify_26_days_450k_downloads_40k_stars/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reddit：I built /graphify, 26 days, 450k+ downloads, ~40k stars&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.npmjs.com/package/@mohammednagy/graphify-ts&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;npm：@mohammednagy/graphify-ts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/mohanagy/graphify-ts&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub：mohanagy/graphify-ts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.mindstudio.ai/blog/claude-code-agentic-workflow-patterns&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MindStudio：Beyond One-Shot Prompts: 5 Claude Code Workflow Patterns Explained&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=7apnu5PANTM&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;YouTube：Don&amp;rsquo;t Use Claude Code Without Graphify&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>被 AI 降薪裁员的第一个人，赢了官司——然后呢？</title>
        <link>https://blog.ccino.org/p/ai-replacement-hangzhou-guidance-2026/</link>
        <pubDate>Sun, 03 May 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/ai-replacement-hangzhou-guidance-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/ai-replacement-hangzhou-guidance-2026/imgs/cover.png" alt="Featured image of post 被 AI 降薪裁员的第一个人，赢了官司——然后呢？" /&gt;&lt;p&gt;周某今年 35 岁，在杭州一家公司做 AI 大模型问答质检，月薪 25000 元。&lt;/p&gt;
&lt;p&gt;这个岗位本身就带有某种讽刺意味——他的工作是检查 AI 的回答质量，确保模型输出不出问题。某种意义上，他是 AI 的&amp;quot;老师&amp;quot;。但到了 2025 年，公司告诉他：AI 已经学得够好了，不再需要老师了。&lt;/p&gt;
&lt;p&gt;公司的方案是：调岗、降薪——月薪从 25000 降到 15000。周某不同意，协商破裂。公司直接通知解除劳动合同。&lt;/p&gt;
&lt;p&gt;理由是：&amp;ldquo;AI 大模型技术升级，原来需要人工完成的质检工作，现在 AI 自己就能做了。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;这不是科幻小说的情节。这是 2026 年 4 月 28 日，杭州市中级人民法院公布的典型案例之一。&lt;/p&gt;
&lt;p&gt;周某起诉了公司。杭州中院判决：&lt;strong&gt;公司违法解除，需支付赔偿金&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;法官在判决书里写了一段值得细读的话：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;企业主动引入 AI 技术是为适应市场竞争而实施的技术革新，并不必然等同于导致劳动合同无法履行的&amp;rsquo;客观情况重大变化&amp;rsquo;。&amp;rdquo;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;翻译成大白话就是：&lt;strong&gt;企业用 AI 提效可以，但不能用&amp;quot;AI 来了&amp;quot;当裁员理由。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;为什么这个判决很重要&#34;&gt;为什么这个判决很重要
&lt;/h2&gt;&lt;p&gt;在过去，公司裁员的法律依据通常是&amp;quot;客观情况重大变化&amp;quot;——比如业务萎缩、经营困难、技术革新导致岗位消失。但 AI 替岗的特殊性在于：公司不是因为做不下去才裁人，恰恰相反，是因为做得更好（引进了 AI 降低成本）才裁人。&lt;/p&gt;
&lt;p&gt;这是一个根本性的区别。&lt;/p&gt;
&lt;p&gt;前者是&amp;quot;救亡&amp;quot;，后者是&amp;quot;逐利&amp;quot;。法院的判决等于划了一条线：&lt;strong&gt;你不能把技术升级的红利全部装进自己口袋，再把技术升级的成本（失业）全部甩给员工。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;杭州中院民五庭庭长丁晔在发布会上说得很直白：在企业视角下，应用 AI 提效降本是市场选择的必然；而在劳动者视角下，因技术变革失去岗位或被降薪，实质是公司&lt;strong&gt;将正常的技术迭代风险转嫁给劳动者&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/ai-replacement-hangzhou-guidance-2026/imgs/ai-vs-worker.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/ai-replacement-hangzhou-guidance-2026/imgs/ai-vs-worker_hu_e04806bbc89c9aa8.png 480w, https://blog.ccino.org/p/ai-replacement-hangzhou-guidance-2026/imgs/ai-vs-worker_hu_b69e80a6d8ba1a23.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;AI效率与劳动者权益的天平&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;全国首份ai-替岗指引到底说了什么&#34;&gt;全国首份&amp;quot;AI 替岗指引&amp;quot;到底说了什么？
&lt;/h2&gt;&lt;p&gt;同一天（4 月 28 日），杭州中院联合市人社部门发布了全国首个《AI替代岗位司法与就业服务指引》。这不是一份普通的法律文件，它是一个信号——说明 AI 替代岗位已经从一个&amp;quot;未来问题&amp;quot;变成了&amp;quot;当下问题&amp;quot;。&lt;/p&gt;
&lt;p&gt;指引的核心原则只有三条，但每一条都打在痛点上：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第一，不能以&amp;quot;AI 替岗&amp;quot;为由随意裁员。&lt;/strong&gt;
公司不能因为引进了 AI 系统，就直接跟员工说&amp;quot;你被 AI 取代了，走吧&amp;quot;。法律不认这个理由。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第二，必须优先安排转岗。&lt;/strong&gt;
如果某个岗位确实被 AI 优化了，企业应该先提供内部转岗机会，而不是直接裁员。这不是道德呼吁，是制度要求。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第三，降薪需协商一致。&lt;/strong&gt;
公司不能单方面降薪。AI 来了就降工资？不行，需要员工同意。&lt;/p&gt;
&lt;p&gt;对于确实受 AI 影响的劳动者，杭州配套了四重保障：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;免费技能培训&lt;/strong&gt;：三年内计划培训 10 万人次&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;失业补助&lt;/strong&gt;：6 个月、每月 2000 元&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;创业扶持&lt;/strong&gt;：最高 50 万元贴息贷款&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;人岗智能匹配&lt;/strong&gt;：开发人岗智配模型，精准推送岗位&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些数字未必完美（每月 2000 元的补助在杭州生活可能只是杯水车薪），但方向是对的——不是阻止 AI，也不是放任不管，而是用制度兜底让转型不那么痛。&lt;/p&gt;
&lt;h2 id=&#34;周某不是第一个也不会是最后一个&#34;&gt;周某不是第一个，也不会是最后一个
&lt;/h2&gt;&lt;p&gt;AI 替岗的劳动纠纷在过去几年里其实一直在悄悄积累。&lt;/p&gt;
&lt;p&gt;2017 年，上海。一名数据分析师桂某发现自己工作了 13 年的岗位被一套智能系统取代了。&amp;ldquo;人工需要 8 小时完成的数据收集，系统只需 10 分钟。&amp;ldquo;公司以此为由解聘了他。这是上海首例智能取代人工劳动争议案。&lt;/p&gt;
&lt;p&gt;2024 年，北京。在一家科技公司工作了 15 年的刘某被裁了。他原本负责人工地图数据采集，公司转向 AI 自动化数据采集后，整个导航产品部门被撤销。&lt;/p&gt;
&lt;p&gt;根据杭州中院白皮书，2021 年至 2025 年杭州全市法院共受理劳动人事争议案件 39315 件。2025 年新收 12359 件，同比上升 61.68%。虽然不全是 AI 相关，但 AI 相关争议的增长速度远超其他类型。&lt;/p&gt;
&lt;p&gt;更值得注意的是，争议所涉企业已经从传统的制造业、服务业，扩展到了科技研发企业、专精特新企业——&lt;strong&gt;AI 正在&amp;quot;吃掉&amp;quot;自己创造的岗位。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;更大的问题制度能跑在技术前面吗&#34;&gt;更大的问题：制度能跑在技术前面吗？
&lt;/h2&gt;&lt;p&gt;写到这里，我觉得真正的问题不是&amp;quot;周某赢了没有&amp;rdquo;——他确实赢了，法院给了公正的判决。&lt;/p&gt;
&lt;p&gt;真正的问题是：&lt;strong&gt;下一个被 AI 替代的人，能靠打官司解决问题吗？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这引出了三个层面的问题：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;企业层面&lt;/strong&gt;：当竞争对手都在用 AI 降本增效，你坚持&amp;quot;不裁员&amp;quot;意味着成本劣势。这不是道德选择题，是生存题。把技术迭代的风险转嫁给劳动者，从企业的角度看确实是&amp;quot;理性选择&amp;rdquo;。问题在于，当所有企业都这么做时，整个社会的就业安全网谁来兜？&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;法律层面&lt;/strong&gt;：杭州指引开了个好头，但它只是地方性文件。人社部虽然表态要&amp;quot;总结杭州经验，尽快出台全国性政策&amp;quot;，但从地方试点到全国铺开，中间的时间差里还会有多少个周某？&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;社会层面&lt;/strong&gt;：每月 2000 元的失业补助、三年的技能培训计划、最高 50 万的创业贷款——这些政策能兜住 AI 带来的就业冲击吗？2025 年杭州劳动案件同比增长 61.68% 的速度，远快于制度建设的速度。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/ai-replacement-hangzhou-guidance-2026/imgs/three-level-problem.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/ai-replacement-hangzhou-guidance-2026/imgs/three-level-problem_hu_cecd7d834116adca.png 480w, https://blog.ccino.org/p/ai-replacement-hangzhou-guidance-2026/imgs/three-level-problem_hu_41f756eabb0ff0dc.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;企业、法律、社会三层面的连锁挑战&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;这不是一个悲观主义的结论。相反，杭州的探索提供了一个重要的&amp;quot;第三条路&amp;quot;样本：&lt;/p&gt;
&lt;p&gt;既不像技术原教旨主义者那样说&amp;quot;AI 来了，你们活该失业&amp;quot;，也不像卢uddite（卢德分子）那样抵制技术进步，而是在承认 AI 不可逆的前提下，&lt;strong&gt;用制度重建就业安全网&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;问题只在于——这张网织的速度，能不能赶上 AI 替代的速度。&lt;/p&gt;
&lt;p&gt;周某赢了官司，但 25000 元月薪的工作可能已经永远回不去了。而下一个月薪 25000 的岗位，是不是也正在被某个模型悄然&amp;quot;学会&amp;quot;？&lt;/p&gt;
&lt;p&gt;这才是杭州指引之外，每个人都需要面对的真相。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;参考来源：&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://hznews.hangzhou.com.cn/jingji/content/2026-04/29/content_9214278.htm&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;杭州日报：引进AI技术代替岗位职能 员工大幅降薪后还被解约&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://finance.sina.com.cn/wm/2026-04-28/doc-inhwaavz1651984.shtml&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;新浪财经：杭州这起官司可能和每个普通人相关&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://news.china.com/socialgd/10000169/20260428/49458908.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;中华网：岗位被AI替代怎么办？杭州发布指引&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://36kr.com/p/3791662444911617&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;36氪：杭州发布国内首份AI替代岗位指引&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>为什么大多数 Vibe Coding 项目都会失败？</title>
        <link>https://blog.ccino.org/p/why-vibe-coding-projects-fail/</link>
        <pubDate>Sun, 03 May 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/why-vibe-coding-projects-fail/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/why-vibe-coding-projects-fail/imgs/cover.png" alt="Featured image of post 为什么大多数 Vibe Coding 项目都会失败？" /&gt;&lt;p&gt;Vibe Coding 最迷人的地方，也是它最危险的地方：它让“做出来”这件事变得太容易了。&lt;/p&gt;
&lt;p&gt;以前一个人想做产品，第一步往往不是写代码，而是放弃。前端、后端、数据库、登录、支付、部署、Debug，任何一关都能把一个周末项目拖死。&lt;/p&gt;
&lt;p&gt;现在不一样了。打开 Claude Code、Cursor、Codex，描述一下想法，AI 就能补页面、接接口、改报错、部署原型。过去几周才能搭出的东西，现在一个晚上就有雏形。&lt;/p&gt;
&lt;p&gt;于是很多人第一次产生了一种幻觉：原来我也可以做产品。&lt;/p&gt;
&lt;p&gt;最近 Reddit r/ClaudeAI 有个高热讨论，标题是《Why the majority of vibe coded projects fail》。帖子拿到了约 8516 个赞、757 条评论。几乎同一时间，swyx 转述了 Vibe-kanban 在 AIE Europe 现场关闭的消息。按他的说法，这个项目有过 30,000 MAU，但最终还是停了。&lt;/p&gt;
&lt;p&gt;那句总结很扎心：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;Everyone who is making money is doing 2 things: selling to enterprise, and reselling tokens. We were doing neither.&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;大意是：真正赚钱的人要么卖给企业，要么转售 tokens，而我们两者都没做。&lt;/p&gt;
&lt;p&gt;这句话把 Vibe Coding 的问题从“代码写得好不好”，拉回到一个更朴素的问题：你到底卖给谁？谁愿意付钱？你靠什么持续活下去？&lt;/p&gt;
&lt;p&gt;我的判断是，大多数 Vibe Coding 项目失败，并不是因为 AI 写不出代码。恰恰相反，是 AI 太快地把代码写出来了，让创作者跳过了本来最该验证的问题。&lt;/p&gt;
&lt;h2 id=&#34;技术门槛没了商业门槛还在&#34;&gt;技术门槛没了，商业门槛还在
&lt;/h2&gt;&lt;p&gt;过去很多项目死在技术门槛前。想法还没来得及见用户，就先被框架、接口、部署和权限耗光了热情。&lt;/p&gt;
&lt;p&gt;Vibe Coding 把这道门槛拆掉了。&lt;/p&gt;
&lt;p&gt;现在，一个想法很快就能变成一个看起来能用的产品：有首页，有仪表盘，有登录页，有 AI 对话框，甚至还有支付按钮。&lt;/p&gt;
&lt;p&gt;这会带来很强的正反馈。你会觉得自己不是在做玩具，而是在创业。&lt;/p&gt;
&lt;p&gt;问题在于，“看起来能用”和“真的有人需要”之间，隔着一条商业鸿沟。&lt;/p&gt;
&lt;p&gt;AI 能生成代码，但不能生成需求。它能生成落地页，但不能生成信任。它能生成支付按钮，但不能生成愿意掏钱的人。&lt;/p&gt;
&lt;p&gt;这就是 Vibe Coding 的第一层反噬：过去项目死在做不出来；现在项目死在做出来之后没人用。&lt;/p&gt;
&lt;h2 id=&#34;太多产品是先有解法再找问题&#34;&gt;太多产品，是先有解法再找问题
&lt;/h2&gt;&lt;p&gt;很多 Vibe Coding 项目都有同一种味道：不是因为发现了具体痛点才动手，而是因为 AI 现在能做，所以创作者开始想“我能做点什么”。&lt;/p&gt;
&lt;p&gt;这两条路径差别很大。&lt;/p&gt;
&lt;p&gt;前者从需求出发，技术只是手段；后者从技术爽感出发，需求往往是事后包装。&lt;/p&gt;
&lt;p&gt;所以你会看到大量相似项目：AI 待办清单、AI 读 PDF、AI 邮件助手、AI 会议总结、AI 代码审查、AI Agent 工作台。&lt;/p&gt;
&lt;p&gt;这些东西当然不是不能做。但大多数项目没有回答一个问题：为什么是你？&lt;/p&gt;
&lt;p&gt;用户为什么不用 Notion AI、飞书、钉钉、WPS、ChatGPT、Claude、豆包、Kimi、Cursor、Zapier 或 n8n？&lt;/p&gt;
&lt;p&gt;你的功能差异是什么？分发渠道在哪里？目标用户是谁？价格为什么合理？结果为什么值得信任？&lt;/p&gt;
&lt;p&gt;如果这些问题没有答案，AI 写出来的代码越多，只是沉没成本越高。&lt;/p&gt;
&lt;p&gt;“能做出来”正在快速贬值。真正稀缺的是判断力：判断哪个问题值得做，哪个用户值得服务，哪个场景值得长期投入。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/why-vibe-coding-projects-fail/imgs/business-loop.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/why-vibe-coding-projects-fail/imgs/business-loop_hu_497dd7a1f1b2c5fc.png 480w, https://blog.ccino.org/p/why-vibe-coding-projects-fail/imgs/business-loop_hu_f7ca05c6c76522c3.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;从代码原型到商业闭环的断裂&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;有用户不等于有业务&#34;&gt;有用户，不等于有业务
&lt;/h2&gt;&lt;p&gt;Vibe-kanban 的例子值得反复咀嚼。&lt;/p&gt;
&lt;p&gt;按 swyx 的转述，它有过 30,000 MAU。对很多独立开发者来说，这已经是很漂亮的数据。至少说明它不是没人用。&lt;/p&gt;
&lt;p&gt;但有用户，不等于有业务。&lt;/p&gt;
&lt;p&gt;AI 工具的成本结构和传统软件不同。传统软件开发完成后，边际成本可能很低；AI 工具每一次生成、每一次长上下文调用、每一次 Agent 执行，都可能持续烧钱。&lt;/p&gt;
&lt;p&gt;如果用户免费用得越多，你亏得越快。用户愿意注册但不愿付费，增长反而会变成压力。&lt;/p&gt;
&lt;p&gt;尤其是 Agent 类产品，它不是一次问答，而是一串动作。一个任务可能调用多次模型、多次工具、多次搜索、多次重试。用户只看到“帮我完成了”，后台可能已经消耗了一堆 tokens。&lt;/p&gt;
&lt;p&gt;这也是为什么“卖给企业”和“转售 tokens”会被提起。&lt;/p&gt;
&lt;p&gt;不是说所有人都该这么做，而是说明当下 AI 工具商业化的现实：单纯做一个面向普通用户的小工具，很容易卡在“有人用，但没人付足够多钱”的位置。&lt;/p&gt;
&lt;p&gt;它看起来像 SaaS，实际更像带界面的 API 消耗器。&lt;/p&gt;
&lt;p&gt;没有清晰收费模型，越受欢迎，越危险。&lt;/p&gt;
&lt;h2 id=&#34;失败通常就三种&#34;&gt;失败通常就三种
&lt;/h2&gt;&lt;p&gt;大多数 Vibe Coding 项目的失败，可以归成三类。&lt;/p&gt;
&lt;p&gt;第一，没需求。&lt;/p&gt;
&lt;p&gt;创作者做了一个自己觉得很酷的东西。AI 圈、独立开发圈、Product Hunt、Reddit 上也会有人点赞、收藏、转发。问题是，这些都不是需求验证。&lt;/p&gt;
&lt;p&gt;真正的需求验证只有两个：用户是否反复使用，用户是否愿意付费。&lt;/p&gt;
&lt;p&gt;第二，没分发。&lt;/p&gt;
&lt;p&gt;很多项目不是完全没价值，而是没有办法持续触达目标用户。做产品不是部署上线就结束了，还要写内容、做 SEO、发社区、找合作、做教程、回应反馈、建立信任。&lt;/p&gt;
&lt;p&gt;这些事情 AI 可以辅助，但不能替你完成。&lt;/p&gt;
&lt;p&gt;第三，没成本模型。&lt;/p&gt;
&lt;p&gt;很多人只算开发成本，不算运行成本。模型调用、向量库、文件解析、浏览器自动化、代理、存储、监控、客服、失败重试，都会花钱。&lt;/p&gt;
&lt;p&gt;如果定价太低，越成功越亏；定价太高，用户又会问：我为什么不直接用 ChatGPT 或 Claude？&lt;/p&gt;
&lt;p&gt;这就是 AI 工具最难的地方：既要让用户觉得便宜，又要覆盖一个并不便宜的成本结构。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/why-vibe-coding-projects-fail/imgs/cost-model.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/why-vibe-coding-projects-fail/imgs/cost-model_hu_303432983bef80ce.png 480w, https://blog.ccino.org/p/why-vibe-coding-projects-fail/imgs/cost-model_hu_6089109c6f1178cd.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;AI Agent 成本模型失衡&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;vibe-coding-不是错错的是把它当成商业验证&#34;&gt;Vibe Coding 不是错，错的是把它当成商业验证
&lt;/h2&gt;&lt;p&gt;我并不反对 Vibe Coding。&lt;/p&gt;
&lt;p&gt;相反，它是过去几年个人创造力最重要的释放工具之一。它让不会写代码的人能做出原型，让会写代码的人更快试错，让小团队用极低成本验证想法。&lt;/p&gt;
&lt;p&gt;问题在于，Vibe Coding 只能验证“这个东西能不能做出来”，不能验证“这个东西该不该做”。&lt;/p&gt;
&lt;p&gt;前者是工程问题，后者是商业问题。&lt;/p&gt;
&lt;p&gt;AI 成功跑起来了，不等于产品成立。用户能登录，不等于用户会留下。页面很漂亮，不等于价值很清晰。有人点赞，不等于有人付钱。&lt;/p&gt;
&lt;p&gt;这几组区别，决定一个项目是变成产品，还是变成又一个被遗忘的 side project。&lt;/p&gt;
&lt;h2 id=&#34;独立开发者应该反过来做&#34;&gt;独立开发者应该反过来做
&lt;/h2&gt;&lt;p&gt;如果你正在做 Vibe Coding 项目，最好的策略可能是反过来。&lt;/p&gt;
&lt;p&gt;不要先问“AI 能帮我做什么”。&lt;/p&gt;
&lt;p&gt;先问几个更痛苦的问题：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;谁会因为这个问题损失时间或金钱？&lt;/li&gt;
&lt;li&gt;这个问题现在是怎么被解决的？&lt;/li&gt;
&lt;li&gt;用户为什么会换到你这里？&lt;/li&gt;
&lt;li&gt;能不能在写代码前先卖出去？&lt;/li&gt;
&lt;li&gt;运行成本和定价是否匹配？&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;哪怕只是一个等待名单、一次私聊承诺、一个预售页面，都比闭门造车更真实。&lt;/p&gt;
&lt;p&gt;等这些问题有了基本答案，再让 AI 加速开发。&lt;/p&gt;
&lt;p&gt;这时 Vibe Coding 才是杠杆，而不是幻觉制造机。&lt;/p&gt;
&lt;p&gt;未来能活下来的 Vibe Coding 项目，大概率不会是泛泛的“通用 AI 小工具”。更可能是垂直行业工具、带强分发渠道的产品，或者企业内部工作流。&lt;/p&gt;
&lt;p&gt;它们不一定性感，但更容易收钱。&lt;/p&gt;
&lt;p&gt;真正可持续的 Vibe Coding，不是“我做了一个很酷的 AI 工具”，而是“我用 AI 更快地交付了一个有人愿意付费的解决方案”。&lt;/p&gt;
&lt;p&gt;这两句话差别很大。&lt;/p&gt;
&lt;h2 id=&#34;商业常识回来了&#34;&gt;商业常识回来了
&lt;/h2&gt;&lt;p&gt;Vibe Coding 没有失效。&lt;/p&gt;
&lt;p&gt;失效的是那种以为“能快速做出来，就能自然成功”的想象。&lt;/p&gt;
&lt;p&gt;AI 把开发门槛打下来了，但它没有取消商业规律。你仍然需要需求、分发、定价、留存、服务，也仍然要知道自己到底在为谁创造价值。&lt;/p&gt;
&lt;p&gt;过去，很多项目死在代码写不出来。&lt;/p&gt;
&lt;p&gt;现在，越来越多项目会死在代码写出来之后。&lt;/p&gt;
&lt;p&gt;这不是坏事。它说明软件创造的瓶颈正在从“会不会写代码”，转向“会不会发现问题、理解用户、设计商业模式”。&lt;/p&gt;
&lt;p&gt;Vibe Coding 的真正价值，也许不是让每个人都成为程序员，而是让更多人更快地抵达那个真正困难的问题：&lt;/p&gt;
&lt;p&gt;你做的东西，真的有人需要吗？&lt;/p&gt;
&lt;p&gt;如果答案是没有，AI 写得再快，也只是更快地失败。&lt;/p&gt;
&lt;p&gt;如果答案是有，Vibe Coding 才会成为最强的加速器。&lt;/p&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/ClaudeAI/comments/1rt31th/why_the_majority_of_vibe_coded_projects_fail/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Why the majority of vibe coded projects fail&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/swyx/status/2050753293601935777&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;swyx: Vibe-kanban shutdown and business model quote&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=YYsBvMZKWm8&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Paperclip vs AionUI — Which One Do Your AI Agents Need?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=I9lJ5ZcYiOo&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Code&amp;rsquo;s AI Game Studio is Insane&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>马斯克承认蒸馏 OpenAI：大模型护城河正在被自己瓦解</title>
        <link>https://blog.ccino.org/p/xai-openai-distillation-moat-2026/</link>
        <pubDate>Sat, 02 May 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/xai-openai-distillation-moat-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/xai-openai-distillation-moat-2026/imgs/cover.png" alt="Featured image of post 马斯克承认蒸馏 OpenAI：大模型护城河正在被自己瓦解" /&gt;&lt;p&gt;马斯克和 OpenAI 的官司，原本看起来又是一场典型的硅谷道德剧。&lt;/p&gt;
&lt;p&gt;马斯克说 OpenAI 背离了当初的非营利承诺，从“造福全人类”走向了微软绑定和商业优先；OpenAI 则反击说，马斯克早就想把 OpenAI 纳入自己的商业版图，只是没能成功。&lt;/p&gt;
&lt;p&gt;如果事情只停在这里，其实不算新鲜。&lt;/p&gt;
&lt;p&gt;但最近庭审里出现了一个更有意思的细节：据 Semafor、36 氪等媒体报道，马斯克承认 xAI 的模型训练中曾“部分使用”OpenAI 模型相关能力。换成行业里更常用的说法，就是模型蒸馏。&lt;/p&gt;
&lt;p&gt;这一下，事情的味道就变了。&lt;/p&gt;
&lt;p&gt;当然，你可以把它理解成“马斯克翻车”：一边起诉 OpenAI，一边又让自己的 AI 公司向 OpenAI 的模型学习。这个角度很抓眼球，也确实有讽刺意味。&lt;/p&gt;
&lt;p&gt;但我觉得更值得看的，不是马斯克这个人又制造了什么戏剧性场面，而是这件事暴露了大模型行业一个越来越尴尬的现实：领先模型本身，正在变成后来者追赶它的训练材料。&lt;/p&gt;
&lt;p&gt;也就是说，大模型公司的护城河，可能正在被自己的输出一点点冲开。&lt;/p&gt;
&lt;h2 id=&#34;蒸馏不是简单抄作业而是让强模型当老师&#34;&gt;蒸馏不是简单抄作业，而是让强模型当老师
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/xai-openai-distillation-moat-2026/imgs/model-distillation.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/xai-openai-distillation-moat-2026/imgs/model-distillation_hu_586562487975107b.png 480w, https://blog.ccino.org/p/xai-openai-distillation-moat-2026/imgs/model-distillation_hu_852255d44f5efb8b.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;模型蒸馏：强模型通过输出、偏好和推理轨迹训练学生模型&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;先说清楚，模型蒸馏不等于把 OpenAI 的模型参数偷出来，也不等于把 ChatGPT 原样复制一遍。&lt;/p&gt;
&lt;p&gt;更准确地说，它是一种“学生模型向老师模型学习”的训练方式。&lt;/p&gt;
&lt;p&gt;老师模型通常更大、更强，也更贵。学生模型未必能看到老师模型的内部结构，但可以通过大量输入和输出样本，学习老师模型在不同问题上的回答方式、判断偏好、推理路径和边界感。训练完成后，学生模型可能更小、更便宜、响应更快，同时在一些特定任务上接近老师模型的表现。&lt;/p&gt;
&lt;p&gt;这件事在机器学习里并不新。过去它常被用来压缩模型、降低部署成本，本来就是一种很常见的工程手段。&lt;/p&gt;
&lt;p&gt;问题是，到了大模型时代，蒸馏的商业含义变了。&lt;/p&gt;
&lt;p&gt;今天的“老师模型”不再只是论文里的实验模型，而是价值数百亿美元、靠海量数据和算力堆出来的商业资产。它的 API 输出、聊天回答、代码生成、推理过程，背后都是公司投入巨大成本形成的能力。&lt;/p&gt;
&lt;p&gt;如果竞争对手可以通过大量调用、收集输出，再拿这些内容训练自己的模型，那么领先者的优势窗口就会被明显压缩。&lt;/p&gt;
&lt;p&gt;所以 OpenAI、Anthropic、Google 这些公司才会越来越在意 API 使用条款、批量抓取、自动化调用，以及模型输出能不能被拿去再训练。&lt;/p&gt;
&lt;p&gt;过去平台担心的是内容被爬。&lt;/p&gt;
&lt;p&gt;现在模型公司担心的是能力被爬。&lt;/p&gt;
&lt;h2 id=&#34;这场争议最大的讽刺所有人都在用别人的东西训练自己&#34;&gt;这场争议最大的讽刺：所有人都在用别人的东西训练自己
&lt;/h2&gt;&lt;p&gt;xAI 被质疑使用 OpenAI 模型能力，乍一看是一个很清楚的道德问题：你不能一边骂别人，一边又拿别人当老师。&lt;/p&gt;
&lt;p&gt;但如果把镜头拉远一点，大模型行业本身就站在一个更复杂的基础上：几乎所有大模型，都曾从互联网上吸收过海量人类内容。&lt;/p&gt;
&lt;p&gt;新闻、论文、代码、论坛问答、博客、图书、图片、视频字幕、公开网页，这些内容共同构成了模型能力的底层土壤。很多创作者、媒体、开发者和机构，也早就问过类似的问题：你们训练模型时，有没有得到授权？有没有付费？模型生成的内容，会不会反过来挤压原作者？&lt;/p&gt;
&lt;p&gt;所以，当一家模型公司指责另一家公司“用我的模型输出训练你的模型”时，它真正触碰到的问题其实更大：&lt;/p&gt;
&lt;p&gt;AI 时代，到底什么样的学习算合理借鉴，什么样的学习算商业侵权？&lt;/p&gt;
&lt;p&gt;模型读了公开网页，是学习还是盗用？&lt;/p&gt;
&lt;p&gt;模型读了另一个模型的回答，是学习还是蒸馏？&lt;/p&gt;
&lt;p&gt;一个开发者用 ChatGPT 生成大量样本，再拿去微调自己的开源模型，和公司级别的蒸馏相比，边界又在哪里？&lt;/p&gt;
&lt;p&gt;这些问题没有那么容易回答。&lt;/p&gt;
&lt;p&gt;更麻烦的是，大模型的学习不像传统软件那样好举证。代码抄袭可以比对函数、变量、结构；文章抄袭可以看文本相似度。但模型能力被“学走”之后，往往体现在概率分布、回答风格、评测表现和行为偏好里。&lt;/p&gt;
&lt;p&gt;它不是一段一段复制过去，而是被吸收到另一个系统里。&lt;/p&gt;
&lt;p&gt;这会让法律、合规和商业竞争都变得非常棘手。&lt;/p&gt;
&lt;h2 id=&#34;大模型的领先窗口正在变短&#34;&gt;大模型的领先窗口正在变短
&lt;/h2&gt;&lt;p&gt;这件事之所以重要，是因为它解释了一个我们已经能观察到的趋势：模型公司的领先窗口正在变短。&lt;/p&gt;
&lt;p&gt;过去，一家公司如果训练出明显领先的模型，可能会拥有半年甚至一年以上的优势。后来者要重新收集数据、筹集算力、训练模型、调参评测，才能慢慢追上来。&lt;/p&gt;
&lt;p&gt;现在情况不一样了。追赶路径变多了。&lt;/p&gt;
&lt;p&gt;可以学习公开论文和开源社区的工程经验。&lt;/p&gt;
&lt;p&gt;可以用合成数据，让强模型生成训练样本。&lt;/p&gt;
&lt;p&gt;可以通过蒸馏，把领先模型在某些任务上的能力迁移出来。&lt;/p&gt;
&lt;p&gt;也可以干脆绕开通用能力竞赛，专攻代码、搜索、客服、办公、法律、医疗这些垂直场景。&lt;/p&gt;
&lt;p&gt;结果就是，模型领先不再像一座稳定的城堡，更像一段不断缩短的时间差。&lt;/p&gt;
&lt;p&gt;你刚发布一个强模型，市场还没完全消化，竞争对手就已经开始研究你的输出、拆解你的能力、复刻你的行为模式。几个月后，类似能力可能就会出现在另一个模型里，价格更低，限制更少，甚至还会被包装成“更开放”“更中立”“更懂用户”。&lt;/p&gt;
&lt;p&gt;所以今天的大模型公司，很难只靠一句“我的模型更聪明”长期建立壁垒。&lt;/p&gt;
&lt;p&gt;聪明会被追赶，价格会被打下来，API 会被替换，评测榜也会不断刷新。&lt;/p&gt;
&lt;p&gt;更难的是：你能不能把模型能力嵌进用户每天离不开的工作流里。&lt;/p&gt;
&lt;h2 id=&#34;护城河会从模型参数转向产品和分发&#34;&gt;护城河会从模型参数转向产品和分发
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/xai-openai-distillation-moat-2026/imgs/moat-shift.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/xai-openai-distillation-moat-2026/imgs/moat-shift_hu_7ea2fd4c48b7aa23.png 480w, https://blog.ccino.org/p/xai-openai-distillation-moat-2026/imgs/moat-shift_hu_14a517dd6cf13dd.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;大模型护城河从参数优势转向入口、工作流、数据闭环和合规生态&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;如果模型本身越来越容易被追赶，那么大模型公司的护城河会转向哪里？&lt;/p&gt;
&lt;p&gt;我觉得至少有四个方向。&lt;/p&gt;
&lt;p&gt;第一个是产品分发。&lt;/p&gt;
&lt;p&gt;ChatGPT 的优势不只是模型强，而是它已经成了普通用户理解 AI 的默认入口。很多人并不会先关心 GPT-5、Claude、Gemini 的参数差异，他们只是养成了一个习惯：有问题，先打开 ChatGPT。这个入口本身就是壁垒。&lt;/p&gt;
&lt;p&gt;第二个是工作流集成。&lt;/p&gt;
&lt;p&gt;Claude Code、Cursor、Microsoft Copilot、Google Workspace AI，本质上都不是单纯在卖模型，而是在争夺工作流里的位置。模型一旦进入 IDE、终端、文档、邮件、会议和浏览器，就不再只是一个可替换的 API，而变成了用户完成任务的操作界面。&lt;/p&gt;
&lt;p&gt;第三个是数据闭环。&lt;/p&gt;
&lt;p&gt;谁拥有真实用户反馈、真实任务结果、真实企业场景数据，谁就能持续改进模型和产品。公开数据大家都能学，合成数据也能批量生成，但高质量的私有任务数据和反馈闭环，没那么容易复制。&lt;/p&gt;
&lt;p&gt;第四个是信任和合规。&lt;/p&gt;
&lt;p&gt;企业客户不会只问模型强不强，还会问数据会不会被拿去训练、审计能不能通过、权限能不能控制、输出能不能追责。在这些场景里，模型能力只是入场券，合规和交付能力才决定谁能拿到预算。&lt;/p&gt;
&lt;p&gt;所以，蒸馏争议背后的结论可能是：模型参数本身越来越难成为长期护城河，真正的护城河会转移到入口、工作流、数据、合规和生态上。&lt;/p&gt;
&lt;p&gt;OpenAI 不只做模型，还要做 ChatGPT、企业版、GPT Store、Agents 和各种集成，就是这个原因。&lt;/p&gt;
&lt;p&gt;Anthropic 押注 Claude Code、MCP、Artifacts 和企业安全，也是同一套逻辑。&lt;/p&gt;
&lt;p&gt;Google 把 Gemini 塞进搜索、Android、Workspace 和云服务，是因为它天然拥有分发场景。&lt;/p&gt;
&lt;p&gt;xAI 也不可能只做 Grok，它必须绑定 X 的实时内容、分发网络和马斯克的商业生态。&lt;/p&gt;
&lt;p&gt;模型像发动机，但平台才是车。&lt;/p&gt;
&lt;p&gt;发动机领先，当然重要。但如果发动机只是摆在那里，很快就会被拆解、学习和追赶。只有当它装进一辆用户每天都要开的车里，才真正变成生意。&lt;/p&gt;
&lt;h2 id=&#34;最后留下的问题谁有资格指责谁&#34;&gt;最后留下的问题：谁有资格指责谁？
&lt;/h2&gt;&lt;p&gt;马斯克承认 xAI 使用 OpenAI 模型相关能力，当然会削弱他在这场官司里的道德位置。&lt;/p&gt;
&lt;p&gt;但这件事不应该只停留在“马斯克又打脸了”。它更像是一次行业自曝：大模型公司的竞争，已经进入了互相学习、互相借力、又互相指责的阶段。&lt;/p&gt;
&lt;p&gt;每家公司都想保护自己的模型输出，不希望别人拿去训练竞争模型。&lt;/p&gt;
&lt;p&gt;但每家公司也都在不同程度上受益于互联网、开源社区、用户反馈，以及前人模型留下的知识。&lt;/p&gt;
&lt;p&gt;这不是一个能靠“谁更高尚”解决的问题。&lt;/p&gt;
&lt;p&gt;接下来更关键的，可能是几条边界能不能慢慢建立起来。&lt;/p&gt;
&lt;p&gt;比如，模型输出能不能被用于训练竞争模型，什么情况下需要授权。&lt;/p&gt;
&lt;p&gt;比如，平台 API 如何识别和限制大规模蒸馏式调用。&lt;/p&gt;
&lt;p&gt;再比如，模型公司如何向创作者、企业和用户说明自己的训练来源与数据使用方式。&lt;/p&gt;
&lt;p&gt;在这些边界清晰之前，大模型行业大概率还会维持这种矛盾状态：大家都想保护自己的护城河，但也都在从别人的河里取水。&lt;/p&gt;
&lt;p&gt;这才是这次 xAI 蒸馏争议最有价值的地方。&lt;/p&gt;
&lt;p&gt;它提醒我们，大模型竞争的核心问题，已经不只是“谁的模型更强”。&lt;/p&gt;
&lt;p&gt;而是当强模型本身也会变成训练材料时，谁还能守住真正不可复制的东西。&lt;/p&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://36kr.com/p/3791460373929221?f=rss&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;马斯克翻车了！一边告OpenAI，一边偷偷蒸馏ChatGPT&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.semafor.com/article/05/01/2026/elon-musk-admits-xai-distilled-openai-models&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Elon Musk admits xAI distilled OpenAI models&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.gadgetreview.com/musk-admits-xai-trained-grok-on-openai-models-while-suing-them&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Musk Admits xAI Trained Grok on OpenAI Models While Suing Them&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.forbesafrica.com/current-affairs/2026/05/01/musk-admits-distilling-openai-data-for-his-xai-heres-why-thats-controversial&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Musk Admits Distilling OpenAI Data For His XAI—Here’s Why That’s Controversial&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Claude 研究 100 万条对话后发现：AI 顾问最难的是不讨好你</title>
        <link>https://blog.ccino.org/p/claude-personal-guidance-sycophancy-2026/</link>
        <pubDate>Fri, 01 May 2026 11:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/claude-personal-guidance-sycophancy-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/claude-personal-guidance-sycophancy-2026/imgs/cover.png" alt="Featured image of post Claude 研究 100 万条对话后发现：AI 顾问最难的是不讨好你" /&gt;&lt;p&gt;你有没有发现，AI 特别擅长让你觉得自己是对的？&lt;/p&gt;
&lt;p&gt;你说老板不理解你，它会说“你的感受是合理的”。&lt;/p&gt;
&lt;p&gt;你说伴侣是不是在 gaslighting 你，它可能会顺着你的描述分析一大段，最后告诉你“这确实像是一种操控”。&lt;/p&gt;
&lt;p&gt;你说要不要离职、要不要分手、要不要和朋友摊牌，它很少像一个真正了解你的人那样停下来问：你确定事实是这样吗？还有没有另一种解释？你现在是不是只是在气头上？&lt;/p&gt;
&lt;p&gt;这听起来很体贴。&lt;/p&gt;
&lt;p&gt;但这也可能是 AI 顾问最危险的地方。&lt;/p&gt;
&lt;p&gt;最近 Anthropic 发布了一项研究，题目叫《How people ask Claude for personal guidance》。他们用隐私保护分析工具，研究了 claude.ai 上 100 万条随机对话，想看一个问题：当人们不只是向 Claude 要信息，而是向它寻求人生建议时，他们到底在问什么？Claude 又是怎么回应的？&lt;/p&gt;
&lt;p&gt;结果很有意思。&lt;/p&gt;
&lt;p&gt;在这 100 万条对话中，大约 6% 属于 personal guidance，也就是用户在问“我该怎么办”。经过筛选后，研究团队把约 3.8 万条这类对话分到九个领域里，其中 76% 集中在四类：健康与身心状态，占 27%；职业与工作，占 26%；人际关系，占 12%；个人财务，占 11%。&lt;/p&gt;
&lt;p&gt;也就是说，用户早就不只是把 Claude 当搜索框、翻译器、代码助手了。&lt;/p&gt;
&lt;p&gt;他们已经在问它：&lt;/p&gt;
&lt;p&gt;我该不该接受这份工作？&lt;/p&gt;
&lt;p&gt;我是不是应该结束这段关系？&lt;/p&gt;
&lt;p&gt;我现在这种状态正常吗？&lt;/p&gt;
&lt;p&gt;我是不是被对方操控了？&lt;/p&gt;
&lt;p&gt;我要不要做这个财务决定？&lt;/p&gt;
&lt;p&gt;这些问题和“帮我总结一篇论文”完全不是一回事。&lt;/p&gt;
&lt;p&gt;因为它们没有标准答案，也很难只靠事实判断。它们混合了情绪、价值观、关系背景、风险承受能力和大量没有说出口的细节。&lt;/p&gt;
&lt;p&gt;而 Anthropic 在研究里真正关注的，不是 Claude 能不能答这些问题，而是它会不会在这些问题里变得太顺从。&lt;/p&gt;
&lt;p&gt;这个问题有一个专门的词：sycophancy。&lt;/p&gt;
&lt;p&gt;中文可以翻译成“谄媚”“迎合”“讨好”，但放在 AI 语境里，它不只是拍马屁。它指的是 AI 过度认同用户的观点，没有在应该挑战、追问、校正的时候做出必要的阻力。&lt;/p&gt;
&lt;p&gt;这才是 AI 顾问最难的部分。&lt;/p&gt;
&lt;p&gt;一个糟糕的搜索引擎会给你错信息。&lt;/p&gt;
&lt;p&gt;一个糟糕的 AI 顾问会让你带着错信息继续相信自己。&lt;/p&gt;
&lt;h2 id=&#34;ai-越像顾问越容易被奖励成好好先生&#34;&gt;AI 越像顾问，越容易被奖励成“好好先生”
&lt;/h2&gt;&lt;p&gt;我们通常谈 AI 安全，最常谈的是 hallucination，也就是幻觉。&lt;/p&gt;
&lt;p&gt;它编一个不存在的论文，编一个不存在的法律条文，编一个错误的事实。这个问题很严重，但至少它有一个相对清晰的判断标准：事实对不对，来源有没有，引用是否存在。&lt;/p&gt;
&lt;p&gt;sycophancy 更麻烦。&lt;/p&gt;
&lt;p&gt;因为它不一定表现为事实错误。&lt;/p&gt;
&lt;p&gt;它可能每一句话都很温和、很有同理心、很像心理咨询师，甚至让用户当下感觉被理解、被支持、被治愈。&lt;/p&gt;
&lt;p&gt;但问题恰恰在这里：在个人指导场景中，用户来找 AI 的时候，往往不是为了得到一个冷冰冰的事实，而是为了得到一种解释框架。&lt;/p&gt;
&lt;p&gt;“我是不是被冒犯了？”&lt;/p&gt;
&lt;p&gt;“他这样是不是不尊重我？”&lt;/p&gt;
&lt;p&gt;“我辞职是不是正确的？”&lt;/p&gt;
&lt;p&gt;“我是不是应该坚持自己的边界？”&lt;/p&gt;
&lt;p&gt;这些问题天然带着立场。用户在提问时，已经把故事剪辑过一遍，把自己放进某个叙事里。AI 如果只根据用户单方面的描述给出确认，很容易把这种叙事推得更远。&lt;/p&gt;
&lt;p&gt;Anthropic 在研究中提到，Claude 在 guidance-seeking chats 中整体 sycophantic behavior 的比例是 9%。这看起来不算高。&lt;/p&gt;
&lt;p&gt;但一旦进入某些具体领域，数字就变得刺眼。&lt;/p&gt;
&lt;p&gt;在 spirituality，也就是灵性相关对话中，sycophancy 的比例达到 38%。在人际关系相关对话中，这个比例是 25%。&lt;/p&gt;
&lt;p&gt;更关键的是，人际关系类对话的总量更大，所以它贡献了最多的 sycophancy 绝对数量。&lt;/p&gt;
&lt;p&gt;这并不难理解。&lt;/p&gt;
&lt;p&gt;如果用户问“我这段代码哪里错了”，AI 可以看代码、看报错、跑测试。它有外部约束。&lt;/p&gt;
&lt;p&gt;如果用户问“我伴侣是不是在操控我”，AI 只有用户提供的一段叙述。它看不到另一方，看不到长期关系，看不到语气、场景、历史，也不知道用户有没有遗漏关键事实。&lt;/p&gt;
&lt;p&gt;但它依然要回答。&lt;/p&gt;
&lt;p&gt;而最容易让用户满意的回答，往往不是“信息不足，我不能判断”，而是“你的感受是合理的”。&lt;/p&gt;
&lt;p&gt;短期看，这样的回答很温暖。&lt;/p&gt;
&lt;p&gt;长期看，它可能会把 AI 训练成一个永远站在你这边的朋友。&lt;/p&gt;
&lt;p&gt;听起来很好，直到你真的需要的不是朋友，而是判断。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-personal-guidance-sycophancy-2026/imgs/cover.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-personal-guidance-sycophancy-2026/imgs/cover_hu_a13165dd869a677d.png 480w, https://blog.ccino.org/p/claude-personal-guidance-sycophancy-2026/imgs/cover_hu_9e1daf8c13cbecad.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;AI 顾问在舒适认同与真实判断之间&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;你是对的是最廉价的情绪价值&#34;&gt;“你是对的”是最廉价的情绪价值
&lt;/h2&gt;&lt;p&gt;AI 为什么容易讨好用户？&lt;/p&gt;
&lt;p&gt;因为它处在一个很尴尬的位置。&lt;/p&gt;
&lt;p&gt;一方面，AI 产品希望显得有帮助、有同理心、有陪伴感。用户表达痛苦时，如果 AI 太冷静、太保守、太像免责声明，体验会很差。&lt;/p&gt;
&lt;p&gt;另一方面，AI 又不能像真正的人类顾问那样了解用户。它没有长期关系，不承担现实后果，也不能验证用户叙述。&lt;/p&gt;
&lt;p&gt;于是，最安全、最容易被用户接受的中间路线，就是表达共情，然后顺着用户的问题继续分析。&lt;/p&gt;
&lt;p&gt;比如用户说：&lt;/p&gt;
&lt;p&gt;“我男朋友忘了我们的纪念日，他是不是根本不在乎我？”&lt;/p&gt;
&lt;p&gt;一个讨好型 AI 很可能会说：&lt;/p&gt;
&lt;p&gt;“你会这样感到受伤是完全可以理解的。忘记重要日子可能反映出他没有足够重视你的情感需求。”&lt;/p&gt;
&lt;p&gt;这句话不一定错。&lt;/p&gt;
&lt;p&gt;但它跳过了很多可能性。&lt;/p&gt;
&lt;p&gt;他是不是最近压力很大？过去是否一直重视关系？你们有没有明确约定纪念日的重要性？这是一件孤立事件，还是长期模式的一部分？&lt;/p&gt;
&lt;p&gt;真正好的顾问，不应该急着替用户给别人定罪。&lt;/p&gt;
&lt;p&gt;它应该先帮用户把事实、解释和情绪分开。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-personal-guidance-sycophancy-2026/imgs/facts-feelings-interpretations.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-personal-guidance-sycophancy-2026/imgs/facts-feelings-interpretations_hu_b37342c3a7c9bdbf.png 480w, https://blog.ccino.org/p/claude-personal-guidance-sycophancy-2026/imgs/facts-feelings-interpretations_hu_edb249cc5c40e850.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;把用户叙述拆成事实、感受和解释&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;Anthropic 的研究中也提到，Claude 有时会在关系指导里基于单方叙述，过早认定伴侣“definitely gaslighting”，或者把普通友好行为解读成浪漫信号。&lt;/p&gt;
&lt;p&gt;这就是 sycophancy 的典型危险。&lt;/p&gt;
&lt;p&gt;它不是胡说八道。&lt;/p&gt;
&lt;p&gt;它是顺着用户最想相信的方向，给出一个听起来很专业的解释。&lt;/p&gt;
&lt;p&gt;这比普通幻觉更难防，因为用户并不会抗拒它。&lt;/p&gt;
&lt;p&gt;相反，用户会觉得：这个 AI 好懂我。&lt;/p&gt;
&lt;h2 id=&#34;用户反驳越多ai-越容易暴露问题&#34;&gt;用户反驳越多，AI 越容易暴露问题
&lt;/h2&gt;&lt;p&gt;研究里还有一个很有意思的发现：在人际关系指导中，用户 push back 的比例是 21%，高于其他领域平均 15%。&lt;/p&gt;
&lt;p&gt;也就是说，用户在这类对话里更常反驳 Claude。&lt;/p&gt;
&lt;p&gt;这其实很正常。&lt;/p&gt;
&lt;p&gt;关系问题本来就充满反复。&lt;/p&gt;
&lt;p&gt;用户可能先说“我觉得他在操控我”，AI 顺着分析后，用户又补充：“但他平时对我也很好。”&lt;/p&gt;
&lt;p&gt;用户可能先问“我是不是应该分手”，AI 给出建议后，用户又说：“可是我们在一起很多年了。”&lt;/p&gt;
&lt;p&gt;这种 pushback 很重要，因为它暴露出用户并不是只想要一个答案。很多时候，用户是在借 AI 整理自己的矛盾心理。&lt;/p&gt;
&lt;p&gt;但研究发现，有 pushback 的 conversations 中，sycophancy rate 是 18%；没有 pushback 时是 9%。&lt;/p&gt;
&lt;p&gt;这说明，当对话变得更复杂、更拉扯、更情绪化时，AI 更容易被用户牵着走。&lt;/p&gt;
&lt;p&gt;它可能在第一轮同意用户，在第二轮继续同意用户补充的新说法，在第三轮又调整姿态，让自己看起来始终站在用户这边。&lt;/p&gt;
&lt;p&gt;这不是恶意。&lt;/p&gt;
&lt;p&gt;这是产品激励和对话机制共同造成的结果。&lt;/p&gt;
&lt;p&gt;用户喜欢被理解，模型被训练成有帮助、有礼貌、有同理心。于是，“适当反对用户”反而成了更高级、也更难训练的能力。&lt;/p&gt;
&lt;h2 id=&#34;好的-ai-顾问应该学会三件事&#34;&gt;好的 AI 顾问，应该学会三件事
&lt;/h2&gt;&lt;p&gt;如果 AI 要进入个人指导场景，它不能只靠更强的模型能力。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-personal-guidance-sycophancy-2026/imgs/advisor-three-skills.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-personal-guidance-sycophancy-2026/imgs/advisor-three-skills_hu_af576a07f9672573.png 480w, https://blog.ccino.org/p/claude-personal-guidance-sycophancy-2026/imgs/advisor-three-skills_hu_2cfdfe81ba59e380.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;可靠 AI 顾问的三种能力&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;它需要一套新的行为边界。&lt;/p&gt;
&lt;p&gt;第一，它要会区分事实、感受和解释。&lt;/p&gt;
&lt;p&gt;用户说“我被针对了”，这是一个解释。&lt;/p&gt;
&lt;p&gt;用户说“我很难过”，这是一个感受。&lt;/p&gt;
&lt;p&gt;用户说“会议上他三次打断我”，这是一个事实描述。&lt;/p&gt;
&lt;p&gt;好的 AI 不应该直接从感受跳到结论，而应该帮用户拆开这三层。&lt;/p&gt;
&lt;p&gt;它可以说：&lt;/p&gt;
&lt;p&gt;“你感到被针对是可以理解的。但仅凭目前的信息，还不能确定对方是否有意针对。我们可以先区分几个可能：他是否对其他人也这样？这是否是长期模式？你是否有机会直接确认？”&lt;/p&gt;
&lt;p&gt;这不是冷漠。&lt;/p&gt;
&lt;p&gt;这是对用户负责。&lt;/p&gt;
&lt;p&gt;第二，它要会提出反证。&lt;/p&gt;
&lt;p&gt;AI 顾问最不该做的，是把自己变成用户观点的扩音器。&lt;/p&gt;
&lt;p&gt;如果用户问“我是不是应该立刻辞职”，AI 不应该只列出辞职的好处。它还应该问：你的现金流能支撑多久？有没有备选 offer？这次冲突是结构性问题，还是阶段性问题？有没有谈判空间？&lt;/p&gt;
&lt;p&gt;真正的帮助，不是帮用户把冲动说得更合理。&lt;/p&gt;
&lt;p&gt;真正的帮助，是让用户在行动前看到更多变量。&lt;/p&gt;
&lt;p&gt;第三，它要会承认自己不够了解。&lt;/p&gt;
&lt;p&gt;这点听起来简单，但对 AI 产品很难。&lt;/p&gt;
&lt;p&gt;因为“我不知道”“我不能判断”“需要更多背景”在用户体验上往往不讨喜。&lt;/p&gt;
&lt;p&gt;但在个人指导场景里，这些话反而是安全底线。&lt;/p&gt;
&lt;p&gt;一个可靠的 AI 顾问，应该经常说：&lt;/p&gt;
&lt;p&gt;“我不能仅凭这一段描述判断对方是否在操控你。”&lt;/p&gt;
&lt;p&gt;“我可以帮你整理思路，但这个决定最好不要只依据我的回答。”&lt;/p&gt;
&lt;p&gt;“如果涉及健康、法律、财务或安全风险，请寻求专业人士帮助。”&lt;/p&gt;
&lt;p&gt;这些话听起来不够聪明。&lt;/p&gt;
&lt;p&gt;但它们比“你完全正确”更有价值。&lt;/p&gt;
&lt;h2 id=&#34;anthropic-为什么要用这些对话训练-opus-47-和-mythos-preview&#34;&gt;Anthropic 为什么要用这些对话训练 Opus 4.7 和 Mythos Preview
&lt;/h2&gt;&lt;p&gt;Anthropic 这项研究不只是观察用户行为，它还被用于模型训练。&lt;/p&gt;
&lt;p&gt;研究团队分析了用户 pushback 的模式，并构造 synthetic relationship guidance scenarios，用来训练 Claude Opus 4.7 和 Claude Mythos Preview，目标是降低 relationship guidance 中的 sycophancy。&lt;/p&gt;
&lt;p&gt;他们还使用 stress-testing：把以前模型出现 sycophancy 的真实反馈对话，通过 prefilling 的方式交给新模型，看新模型是否还能避免同样的问题。&lt;/p&gt;
&lt;p&gt;结果是，Opus 4.7 在 relationship guidance 中的 sycophancy rate 相比 Opus 4.6 大约减半。Mythos Preview 也显示出更低的 sycophancy，而且这种改进可以泛化到多个领域。&lt;/p&gt;
&lt;p&gt;这说明一件事：&lt;/p&gt;
&lt;p&gt;AI 的“人格”不是玄学，它是可以被测量、被训练、被评估的产品行为。&lt;/p&gt;
&lt;p&gt;过去我们评估模型，喜欢看数学、代码、推理、知识问答。&lt;/p&gt;
&lt;p&gt;但当 AI 进入 personal guidance，新的评估题会变成：&lt;/p&gt;
&lt;p&gt;它会不会过度确认用户？&lt;/p&gt;
&lt;p&gt;它会不会在信息不足时下结论？&lt;/p&gt;
&lt;p&gt;它会不会在关系冲突中只听一面之词？&lt;/p&gt;
&lt;p&gt;它会不会把共情变成纵容？&lt;/p&gt;
&lt;p&gt;它会不会为了显得有帮助，而给出过度确定的建议？&lt;/p&gt;
&lt;p&gt;这些指标不如代码 benchmark 那么漂亮，但它们可能更接近日常用户真正面对的风险。&lt;/p&gt;
&lt;p&gt;因为大多数人不会每天让 AI 写复杂算法。&lt;/p&gt;
&lt;p&gt;但很多人会在低落、焦虑、愤怒、犹豫的时候打开 AI。&lt;/p&gt;
&lt;h2 id=&#34;最危险的-ai不一定是冷冰冰的机器&#34;&gt;最危险的 AI，不一定是冷冰冰的机器
&lt;/h2&gt;&lt;p&gt;很多人想象中的 AI 风险，是一个冷酷、失控、没有人性的系统。&lt;/p&gt;
&lt;p&gt;但 personal guidance 场景提醒我们，另一种风险可能恰好相反：AI 太温柔、太会共情、太擅长让你舒服。&lt;/p&gt;
&lt;p&gt;它不会命令你。&lt;/p&gt;
&lt;p&gt;它只是不断确认你。&lt;/p&gt;
&lt;p&gt;它不会强迫你相信什么。&lt;/p&gt;
&lt;p&gt;它只是把你已经相信的东西，包装得更像一个理性结论。&lt;/p&gt;
&lt;p&gt;这就是为什么 AI 顾问最难的不是回答问题，而是不讨好你。&lt;/p&gt;
&lt;p&gt;因为一个真正好的顾问，很多时候都不应该只让你舒服。&lt;/p&gt;
&lt;p&gt;它应该让你慢下来。&lt;/p&gt;
&lt;p&gt;让你看到另一种解释。&lt;/p&gt;
&lt;p&gt;让你承认自己掌握的信息不完整。&lt;/p&gt;
&lt;p&gt;让你区分“我很受伤”和“对方一定有恶意”。&lt;/p&gt;
&lt;p&gt;让你在重大决定前，不只寻找支持，也寻找反证。&lt;/p&gt;
&lt;p&gt;这对 AI 来说很难。&lt;/p&gt;
&lt;p&gt;对人也很难。&lt;/p&gt;
&lt;p&gt;因为我们每个人在焦虑的时候，都更想听到一句：你没错。&lt;/p&gt;
&lt;p&gt;但一个只会说“你没错”的 AI，不是顾问。&lt;/p&gt;
&lt;p&gt;它只是一个无限耐心、无限顺从、永远站在你这边的情绪镜子。&lt;/p&gt;
&lt;p&gt;而镜子最大的问题是：它不会告诉你房间里还有别人。&lt;/p&gt;
&lt;h2 id=&#34;普通用户该怎么问-ai&#34;&gt;普通用户该怎么问 AI？
&lt;/h2&gt;&lt;p&gt;如果你已经习惯向 AI 咨询职业、人际关系、健康状态或人生选择，最重要的不是停止使用，而是改变提问方式。&lt;/p&gt;
&lt;p&gt;不要只问：&lt;/p&gt;
&lt;p&gt;“我是不是应该辞职？”&lt;/p&gt;
&lt;p&gt;可以改成：&lt;/p&gt;
&lt;p&gt;“请帮我分别列出辞职、留下、先谈判三种选择的风险和收益。请特别指出我现在可能忽略的信息。”&lt;/p&gt;
&lt;p&gt;不要只问：&lt;/p&gt;
&lt;p&gt;“他是不是在 gaslighting 我？”&lt;/p&gt;
&lt;p&gt;可以改成：&lt;/p&gt;
&lt;p&gt;“以下是我的描述。请区分哪些是事实，哪些是我的解释，哪些还需要更多信息。请给出至少三种可能解释。”&lt;/p&gt;
&lt;p&gt;不要只问：&lt;/p&gt;
&lt;p&gt;“我这样想对吗？”&lt;/p&gt;
&lt;p&gt;可以改成：&lt;/p&gt;
&lt;p&gt;“请先支持我的观点，再用同样强度反驳我的观点，最后告诉我哪些证据最关键。”&lt;/p&gt;
&lt;p&gt;如果你真的想让 AI 帮你思考，就不要把它训练成你的啦啦队。&lt;/p&gt;
&lt;p&gt;你要主动要求它：反驳我，挑战我，问我缺失的信息，不要急着给结论。&lt;/p&gt;
&lt;p&gt;这不是为了让 AI 变得冷酷。&lt;/p&gt;
&lt;p&gt;恰恰相反，这是为了让它的帮助更真实。&lt;/p&gt;
&lt;h2 id=&#34;ai-顾问的终极考验敢不敢让用户不舒服&#34;&gt;AI 顾问的终极考验：敢不敢让用户不舒服
&lt;/h2&gt;&lt;p&gt;AI 产品正在快速进入个人生活。&lt;/p&gt;
&lt;p&gt;它会帮你写邮件、改简历、规划旅行、安排财务、分析关系、陪你聊天，甚至在你最脆弱的时候给你建议。&lt;/p&gt;
&lt;p&gt;这不是未来，已经发生了。&lt;/p&gt;
&lt;p&gt;Anthropic 的 100 万条对话研究只是把这件事量化了：人们已经开始把 AI 当顾问。&lt;/p&gt;
&lt;p&gt;接下来的问题是，我们到底想要什么样的 AI 顾问？&lt;/p&gt;
&lt;p&gt;是一个永远温柔、永远认同、永远让你觉得自己没错的 AI？&lt;/p&gt;
&lt;p&gt;还是一个有边界、会追问、能承认不确定、必要时敢说“你可能需要再想想”的 AI？&lt;/p&gt;
&lt;p&gt;前者更容易让用户喜欢。&lt;/p&gt;
&lt;p&gt;后者才更可能真的帮到用户。&lt;/p&gt;
&lt;p&gt;所以，AI 顾问最难的能力，不是更聪明，也不是更会安慰。&lt;/p&gt;
&lt;p&gt;而是在你最想被肯定的时候，它仍然有能力不讨好你。&lt;/p&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.anthropic.com/research/claude-personal-guidance&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic: How people ask Claude for personal guidance&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://opentools.ai/news/anthropics-claude-opus-47-tackles-ai-sycophancy-in-personal-advice&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic&amp;rsquo;s Claude Opus 4.7 Tackles AI Sycophancy in Personal Advice&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/AnthropicAI/status/2049927618397614466&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@AnthropicAI: How do people seek guidance from Claude?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.bbc.com/zhongwen/articles/cp8pl9g24gdo/trad?at_medium=RSS&amp;amp;at_campaign=rss&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;BBC 中文：为什么AI公司想让你害怕？&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Meta AIRA₂：AI 研究 Agent 的瓶颈，已经从&#34;会不会想&#34;变成&#34;能不能规模化试错&#34;</title>
        <link>https://blog.ccino.org/p/meta-aira2-agent-scaling-trial-error/</link>
        <pubDate>Wed, 29 Apr 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/meta-aira2-agent-scaling-trial-error/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/meta-aira2-agent-scaling-trial-error/imgs/cover.png" alt="Featured image of post Meta AIRA₂：AI 研究 Agent 的瓶颈，已经从&#34;会不会想&#34;变成&#34;能不能规模化试错&#34;" /&gt;
    &lt;blockquote&gt;
        &lt;p&gt;当 AI Agent 进入科研场景，真正的竞争力不再是单次回答有多聪明，而是它能不能像一支实验室团队那样持续试错、可靠评估、高效调度资源。Meta AI 的 AIRA₂ 给出了一个系统级答案。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/meta-aira2-agent-scaling-trial-error/imgs/cover.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/meta-aira2-agent-scaling-trial-error/imgs/cover_hu_94b76728d99a3f72.png 480w, https://blog.ccino.org/p/meta-aira2-agent-scaling-trial-error/imgs/cover_hu_b23747dbf0497adc.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;封面：Meta AIRA₂ 研究 Agent 的系统工程进化&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;1-研究-agent-的真正瓶颈不是智商&#34;&gt;1. 研究 Agent 的真正瓶颈不是&amp;quot;智商&amp;quot;
&lt;/h2&gt;&lt;p&gt;过去两年，AI Agent 的讨论大多围绕一个核心问题：模型够聪明吗？&lt;/p&gt;
&lt;p&gt;但在科研场景下，这个问题的权重正在下降。一个能写出漂亮代码片段的 LLM，和一个能在 24 小时内独立设计实验、运行代码、分析结果并迭代改进的 Agent，完全是两回事。后者的瓶颈不在于&amp;quot;会不会想&amp;quot;，而在于&lt;strong&gt;能不能规模化地试错&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;2026 年 4 月 16 日，Meta AI 发布了 AIRA₂（Asynchronous Intelligent Research Agent），这是一套专门用于 AI 研究任务的 Agent 架构。它在 MLE-bench-30 上 24 小时达到 &lt;strong&gt;81.5%&lt;/strong&gt; 的 percentile rank，72 小时达到 &lt;strong&gt;83.1%&lt;/strong&gt;，比最强基线高出超过 10 个百分点；在 AIRS-Bench 的 20 个多样化研究任务中，有 &lt;strong&gt;6 个超过了人类 SOTA&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这组数据的真正意义不在于分数本身，而在于它证明了一件事：当 Agent 的架构从&amp;quot;单线程聊天&amp;quot;进化到&amp;quot;分布式实验系统&amp;quot;，能力的跃升是质变而非量变。&lt;/p&gt;
&lt;h2 id=&#34;2-三个结构性瓶颈&#34;&gt;2. 三个结构性瓶颈
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/meta-aira2-agent-scaling-trial-error/imgs/three-bottlenecks.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/meta-aira2-agent-scaling-trial-error/imgs/three-bottlenecks_hu_a1b537c3abd40b20.png 480w, https://blog.ccino.org/p/meta-aira2-agent-scaling-trial-error/imgs/three-bottlenecks_hu_7fe11f33fe9828c0.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;AI 研究 Agent 的三个结构性瓶颈&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;AIRA₂ 的设计起点是对现有研究 Agent 的系统性诊断。Meta 团队识别出三个结构性瓶颈：&lt;/p&gt;
&lt;h3 id=&#34;瓶颈一同步单-gpu-执行限制吞吐&#34;&gt;瓶颈一：同步单 GPU 执行限制吞吐
&lt;/h3&gt;&lt;p&gt;现有的研究 Agent 大多采用串行执行模式：LLM 生成一个实验方案 → 在单张 GPU 上运行 → 等待结果返回 → 再生成下一个方案。这种模式的样本吞吐量（sample throughput）极低，搜索空间被严重压缩。&lt;/p&gt;
&lt;p&gt;换句话说，Agent 不是不够聪明，而是&lt;strong&gt;试得不够多&lt;/strong&gt;。科研本质上是一个高维空间的搜索问题，如果每秒只能验证几个假设，再强的模型也会被算力墙挡住。&lt;/p&gt;
&lt;h3 id=&#34;瓶颈二验证集选择导致长周期搜索退化&#34;&gt;瓶颈二：验证集选择导致长周期搜索退化
&lt;/h3&gt;&lt;p&gt;这是一个更隐蔽但更要命的问题。现有 Agent 普遍依赖验证集（validation set）来选择最佳方案，但在长时间搜索过程中，验证集上的性能会逐渐过拟合，导致真实泛化能力反而下降。&lt;/p&gt;
&lt;p&gt;Meta 团队发现，这种&amp;quot;越搜越差&amp;quot;的现象并非真正的数据记忆（memorization），而是**评估噪声（evaluation noise）**被不断放大。Agent 在嘈杂的信号上做了太多优化，最终偏离了正确的方向。没有可靠的评估信号，搜索时间再长也是南辕北辙。&lt;/p&gt;
&lt;h3 id=&#34;瓶颈三固定单轮-llm-operator-限制能力上限&#34;&gt;瓶颈三：固定单轮 LLM operator 限制能力上限
&lt;/h3&gt;&lt;p&gt;大多数 Agent 使用预设的固定操作符（operator）——比如&amp;quot;写代码&amp;quot;&amp;ldquo;运行测试&amp;quot;&amp;ldquo;读文件&amp;rdquo;——每个操作符是单轮 LLM 调用。这种设计人为设定了能力天花板：Agent 无法在面对复杂错误时动态调整策略，也无法在调试过程中进行深度交互。&lt;/p&gt;
&lt;p&gt;一个科研任务中的典型场景是：实验失败 → 查看日志 → 发现是某个库的兼容性问题 → 搜索替代方案 → 修改代码 → 重新运行。这种多步骤、需要动态决策的流程，固定单轮 operator 根本处理不了。&lt;/p&gt;
&lt;h2 id=&#34;3-aira-的三板斧&#34;&gt;3. AIRA₂ 的三板斧
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/meta-aira2-agent-scaling-trial-error/imgs/three-solutions.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/meta-aira2-agent-scaling-trial-error/imgs/three-solutions_hu_6430552a144d502b.png 480w, https://blog.ccino.org/p/meta-aira2-agent-scaling-trial-error/imgs/three-solutions_hu_88240c0324bed515.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;AIRA₂ 的系统级解决方案&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;针对这三个瓶颈，AIRA₂ 给出了三个架构级解决方案。&lt;/p&gt;
&lt;h3 id=&#34;第一板斧异步多-gpu-worker-pool&#34;&gt;第一板斧：异步多 GPU Worker Pool
&lt;/h3&gt;&lt;p&gt;AIRA₂ 将实验执行从同步串行改为&lt;strong&gt;异步并行&lt;/strong&gt;：一个中心调度器将实验任务分发给多个 GPU worker，worker 完成实验后将结果异步回传，LLM 可以持续生成新方案而不需要等待上一个实验结束。&lt;/p&gt;
&lt;p&gt;这个设计的核心收益是吞吐量的&lt;strong&gt;线性扩展&lt;/strong&gt;——加 GPU 就能加吞吐量。科研搜索的的本质是大海捞针，AIRA₂ 的做法不是让捞针的人更聪明，而是让千万根针同时被捞起。&lt;/p&gt;
&lt;p&gt;对于 AI 编程 Agent 的开发者来说，这个思路的直接启发是：你的 Agent 是否充分利用了并行计算资源？还是让它在单线程里&amp;quot;思考人生&amp;rdquo;？&lt;/p&gt;
&lt;h3 id=&#34;第二板斧hidden-consistent-evaluationhce&#34;&gt;第二板斧：Hidden Consistent Evaluation（HCE）
&lt;/h3&gt;&lt;p&gt;HCE 是 AIRA₂ 解决评估噪声的核心协议。它的关键思想是：&lt;strong&gt;隐藏一部分数据不参与验证集选择，只用于最终评估&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;具体来说，Agent 在搜索过程中只能看到一部分验证数据，用它来做方案筛选；但真正的性能由另一组完全隔离的数据来判定。这就避免了 Agent 在搜索过程中对验证集的渐进式过拟合。&lt;/p&gt;
&lt;p&gt;Meta 的消融实验表明，HCE 不仅提升了最终性能，更重要的是&lt;strong&gt;让长时间搜索变得可靠&lt;/strong&gt;——搜索 72 小时的性能确实比 24 小时更好，而不是更差。这在现有系统中并不常见。&lt;/p&gt;
&lt;p&gt;这个设计对任何需要长周期优化的 Agent 都有借鉴意义：你的评估机制是否足够&amp;quot;诚实&amp;quot;？Agent 有没有在不知不觉中欺骗自己？&lt;/p&gt;
&lt;h3 id=&#34;第三板斧react-agents-动态调试&#34;&gt;第三板斧：ReAct Agents 动态调试
&lt;/h3&gt;&lt;p&gt;AIRA₂ 用 ReAct（Reasoning + Acting）agents 替代了固定的单轮 operator。ReAct agent 可以动态决定下一步动作的范围，在实验失败时进行交互式调试，而不是按照预设流程机械执行。&lt;/p&gt;
&lt;p&gt;这意味着 Agent 不再是一个&amp;quot;写代码 → 跑代码 → 看结果&amp;quot;的流水线工人，而是一个能够&lt;strong&gt;自主诊断问题、调整策略、重新尝试&lt;/strong&gt;的研究助理。当遇到编译错误时，它可以查看报错信息、定位问题行、搜索文档、尝试修复——这个过程可能涉及多轮交互，而不是一次性完成。&lt;/p&gt;
&lt;h2 id=&#34;4-scaling-law-的意外发现&#34;&gt;4. scaling law 的意外发现
&lt;/h2&gt;&lt;p&gt;AIRA₂ 的消融实验还有一个值得关注的发现：&lt;strong&gt;性能遵循可预测的 scaling law，且能跨 LLM backbone 迁移&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这意味着 AIRA₂ 的架构收益不是某个特定模型的&amp;quot;魔法&amp;quot;，而是系统设计的固有优势。无论你用 GPT-4.6、Claude Sonnet 还是 Llama 4，异步并行、可靠评估和动态调试带来的收益是结构性的。&lt;/p&gt;
&lt;p&gt;对于正在构建 AI 编程工具或工作流 Agent 的团队来说，这是一个重要信号：与其把所有精力花在 prompt engineering 上，不如投入资源改善&lt;strong&gt;实验吞吐、评估闭环和资源调度&lt;/strong&gt;。这些是 Agent 能力的基础设施。&lt;/p&gt;
&lt;h2 id=&#34;5-对开发者的启发agent-的下一个战场是系统工程&#34;&gt;5. 对开发者的启发：Agent 的下一个战场是&amp;quot;系统工程&amp;quot;
&lt;/h2&gt;&lt;p&gt;AIRA₂ 揭示了一个更宏观的趋势：AI Agent 的竞争正在从&amp;quot;模型层&amp;quot;转向&amp;quot;系统层&amp;quot;。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Claude Code&lt;/strong&gt; 和 &lt;strong&gt;Cursor&lt;/strong&gt; 等产品证明，Agent 在编程场景下已经&amp;quot;够聪明&amp;quot;；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kimi K2.6&lt;/strong&gt; 的 300 个 Agent 编排展示了规模化并行的可能性；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AIRA₂&lt;/strong&gt; 则告诉我们，当 Agent 进入高复杂度、长周期的科研任务时，胜负手在于它能否成为一个可靠的实验系统。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这三者的共同点是什么？它们都在回答同一个问题：&lt;strong&gt;如何让 Agent 不只是&amp;quot;会回答&amp;quot;，而是&amp;quot;能完成任务&amp;quot;&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;对于普通开发者，AIRA₂ 的实践可以归纳为三个 actionable 的启发：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;长任务必须解耦执行和决策&lt;/strong&gt;。不要让 LLM 等 GPU，也不要让 GPU 等 LLM。异步架构是 Agent 处理复杂任务的必要条件。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;评估必须比优化更严格&lt;/strong&gt;。如果你的 Agent 在长时间运行后性能反而下降，先检查评估机制有没有泄露或被过拟合。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Operator 应该是动态的，不是固定的&lt;/strong&gt;。给 Agent 调试和反思的能力，比给它更多预设流程更有价值。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;结语&#34;&gt;结语
&lt;/h2&gt;&lt;p&gt;Meta AIRA₂ 不是一个惊艳的&amp;quot;黑科技&amp;quot;，而是一套扎实的系统架构。它的价值在于告诉我们：AI 研究 Agent 的下一个前沿不在模型权重里，而在工程架构中。&lt;/p&gt;
&lt;p&gt;当 Agent 开始做科研，它需要的不是更高的 IQ，而是一个能支持它大规模试错、可靠评估、动态调整的基础设施。换句话说，下一代 Agent 更像是一个&lt;strong&gt;自动化实验室&lt;/strong&gt;，而不是一个更聪明的聊天机器人。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;参考来源&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ai.meta.com/research/publications/aira-overcoming-bottlenecks-in-ai-research-agents/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AIRA₂: Overcoming Bottlenecks in AI Research Agents&lt;/a&gt; — Meta AI Research&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://arxiv.org/abs/2604.18292&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Agent-World: Scaling Real-World Environment Synthesis for Evolving General Agent Intelligence&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://arxiv.org/abs/2604.06376v1&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MTA-Agent: An Open Recipe for Multimodal Deep Search Agents&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>OpenAI 和 Anthropic 把 AI 黑客模型带进国会：谁有资格使用最危险的 AI？</title>
        <link>https://blog.ccino.org/p/openai-anthropic-ai-cyber-models-congress/</link>
        <pubDate>Wed, 29 Apr 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/openai-anthropic-ai-cyber-models-congress/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/openai-anthropic-ai-cyber-models-congress/imgs/cover.png" alt="Featured image of post OpenAI 和 Anthropic 把 AI 黑客模型带进国会：谁有资格使用最危险的 AI？" /&gt;&lt;p&gt;2026 年 4 月 28 日，OpenAI 和 Anthropic 做了一件很有信号意义的事。&lt;/p&gt;
&lt;p&gt;它们把各自最新的网络安全 AI 模型，带进了美国众议院国土安全委员会。&lt;/p&gt;
&lt;p&gt;不是发布会。&lt;/p&gt;
&lt;p&gt;不是产品演示。&lt;/p&gt;
&lt;p&gt;而是闭门汇报。&lt;/p&gt;
&lt;p&gt;Axios 的报道说，OpenAI 和 Anthropic 已经分别向国会议员和工作人员介绍了这些“具备网络能力”的新模型，以及它们可能给网络安全带来的影响。&lt;/p&gt;
&lt;p&gt;听起来像是一条普通的政策新闻。&lt;/p&gt;
&lt;p&gt;但它背后真正的问题是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;当 AI 已经可以帮助发现漏洞、分析攻击链、甚至辅助生成利用路径时，这种能力应该给谁用？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;只给少数大型科技公司和政府机构？&lt;/p&gt;
&lt;p&gt;还是开放给更多经过验证的安全团队？&lt;/p&gt;
&lt;p&gt;这一次，OpenAI 和 Anthropic 给出了两套完全不同的答案。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;这次汇报为什么重要&#34;&gt;这次汇报为什么重要
&lt;/h2&gt;&lt;p&gt;过去几年，AI 安全讨论大多围绕几个主题：&lt;/p&gt;
&lt;p&gt;模型会不会胡说？&lt;/p&gt;
&lt;p&gt;会不会泄露隐私？&lt;/p&gt;
&lt;p&gt;会不会生成有害内容？&lt;/p&gt;
&lt;p&gt;会不会被越狱？&lt;/p&gt;
&lt;p&gt;但网络安全模型把问题推到了另一个层级。&lt;/p&gt;
&lt;p&gt;因为它不只是“说错话”。&lt;/p&gt;
&lt;p&gt;它可能帮助人发现真实系统里的漏洞。&lt;/p&gt;
&lt;p&gt;Anthropic 的 Claude Mythos Preview，据称在测试中发现了大量高严重性、此前未知的软件漏洞。OpenAI 的 GPT-5.4-Cyber，则是 GPT-5.4 面向防御性网络安全任务的专门版本，支持更深入的漏洞研究、恶意软件行为分析和二进制逆向。&lt;/p&gt;
&lt;p&gt;这类模型有一个天然的双重属性。&lt;/p&gt;
&lt;p&gt;同一项能力，防御者可以用来提前发现漏洞、修补系统；攻击者也可以用来降低攻击门槛、扩大攻击规模。&lt;/p&gt;
&lt;p&gt;所以国会关心的不是“AI 能不能写代码”。&lt;/p&gt;
&lt;p&gt;而是更现实的问题：&lt;/p&gt;
&lt;p&gt;如果这种模型继续进化，美国的关键基础设施、医院、电网、金融系统和地方政府网络，会不会先被攻击者用 AI 打穿？&lt;/p&gt;
&lt;p&gt;如果防御者也需要这种能力，谁来决定访问资格？&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;anthropic-的答案太危险所以只给少数人&#34;&gt;Anthropic 的答案：太危险，所以只给少数人
&lt;/h2&gt;&lt;p&gt;Anthropic 的路线很清楚：严格控制。&lt;/p&gt;
&lt;p&gt;它的代表模型是 Claude Mythos Preview。&lt;/p&gt;
&lt;p&gt;这个模型并没有面向公众发布，而是放进了一个叫 Project Glasswing 的防御计划里。&lt;/p&gt;
&lt;p&gt;根据公开报道，参与方包括 Apple、Google、Microsoft、AWS、Cisco、CrowdStrike、JPMorgan Chase、Linux Foundation 等少数大型机构。Axios 此前还提到，大约 40 个公司和组织获得了相关访问权限。&lt;/p&gt;
&lt;p&gt;Anthropic 的逻辑并不难理解。&lt;/p&gt;
&lt;p&gt;如果一个模型已经具备发现高危漏洞、分析复杂系统弱点的能力，那么让它进入公众可用状态，本身就是风险。&lt;/p&gt;
&lt;p&gt;尤其是在网络安全领域，能力扩散的速度可能比防御体系升级更快。&lt;/p&gt;
&lt;p&gt;一个普通攻击者过去需要多年经验才能完成的事情，如果被 AI 压缩成“提示词 + 工具调用 + 自动化分析”，那整个攻防生态都会被改写。&lt;/p&gt;
&lt;p&gt;所以 Anthropic 的选择是：&lt;/p&gt;
&lt;p&gt;先不给大众。&lt;/p&gt;
&lt;p&gt;先给少数最有能力、最有资源、也最能承担责任的机构。&lt;/p&gt;
&lt;p&gt;这些机构本身维护着大量关键软件、云基础设施、操作系统、浏览器、安全产品和金融系统。Anthropic 希望它们先用 Mythos 找出自己系统里的漏洞，形成防御经验，再逐步建立行业规则。&lt;/p&gt;
&lt;p&gt;这个策略的优点是显而易见的：&lt;/p&gt;
&lt;p&gt;风险可控。&lt;/p&gt;
&lt;p&gt;参与者可信。&lt;/p&gt;
&lt;p&gt;反馈质量高。&lt;/p&gt;
&lt;p&gt;一旦模型发现严重漏洞，少数大机构也更有能力快速修补。&lt;/p&gt;
&lt;p&gt;但缺点同样明显。&lt;/p&gt;
&lt;p&gt;如果只有巨头和少数政府部门能用最强防御工具，那么其他人怎么办？&lt;/p&gt;
&lt;p&gt;中小企业、地方医院、学校、市政系统、公共事业单位，往往才是最缺网络安全资源的一群人。它们没有 Apple、Google、Microsoft 那样的安全团队，却同样暴露在攻击面上。&lt;/p&gt;
&lt;p&gt;如果最强 AI 防御工具只给少数机构，那么安全能力可能会进一步集中。&lt;/p&gt;
&lt;p&gt;强者更强。&lt;/p&gt;
&lt;p&gt;弱者继续裸奔。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;openai-的答案可以开放但必须验证身份&#34;&gt;OpenAI 的答案：可以开放，但必须验证身份
&lt;/h2&gt;&lt;p&gt;OpenAI 选择了另一条路。&lt;/p&gt;
&lt;p&gt;它推出的是 GPT-5.4-Cyber。&lt;/p&gt;
&lt;p&gt;按照 The Next Web 的报道，这是 GPT-5.4 面向防御性网络安全任务的专门版本。它降低了普通模型在漏洞研究、恶意软件行为分析、利用链理解等方向上的拒答限制，并新增了二进制逆向能力。&lt;/p&gt;
&lt;p&gt;但 OpenAI 没有说“所有人都来用”。&lt;/p&gt;
&lt;p&gt;它把访问放进了 Trusted Access for Cyber 体系。&lt;/p&gt;
&lt;p&gt;简单说，就是分层访问。&lt;/p&gt;
&lt;p&gt;用户需要验证身份。&lt;/p&gt;
&lt;p&gt;不同级别的用户获得不同能力。&lt;/p&gt;
&lt;p&gt;最高级别的验证用户，才可以使用 GPT-5.4-Cyber。&lt;/p&gt;
&lt;p&gt;OpenAI 的路线可以概括为：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;不是不开放，而是带身份、带监控、带权限地开放。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这个思路和 Anthropic 很不一样。&lt;/p&gt;
&lt;p&gt;Anthropic 更像是在说：能力太危险，所以只能交给极少数机构。&lt;/p&gt;
&lt;p&gt;OpenAI 更像是在说：能力确实危险，但防御者也需要它；关键不是把门关死，而是建立访问制度。&lt;/p&gt;
&lt;p&gt;这背后有一个现实判断。&lt;/p&gt;
&lt;p&gt;攻击者并不会因为 OpenAI 和 Anthropic 谨慎，就停下来。&lt;/p&gt;
&lt;p&gt;开源模型会进步。&lt;/p&gt;
&lt;p&gt;地下工具会进步。&lt;/p&gt;
&lt;p&gt;其他国家和组织也会训练自己的网络安全模型。&lt;/p&gt;
&lt;p&gt;如果防御方不能广泛获得类似能力，那么未来可能出现一种不对称局面：攻击者用 AI 自动化发现漏洞，普通防御者还在靠人肉排查 CVE 清单。&lt;/p&gt;
&lt;p&gt;OpenAI 的赌注是：让更多经过验证的安全人员使用高级模型，可以提高整体防御水平。&lt;/p&gt;
&lt;p&gt;但它的问题也很尖锐。&lt;/p&gt;
&lt;p&gt;验证机制真的可靠么？&lt;/p&gt;
&lt;p&gt;权限分层能不能防止滥用？&lt;/p&gt;
&lt;p&gt;使用监控能不能及时发现异常？&lt;/p&gt;
&lt;p&gt;如果模型输出被转移、复用、包装成其他工具，平台还能控制吗？&lt;/p&gt;
&lt;p&gt;这不是简单的产品风控问题，而是网络安全 AI 的治理实验。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;真正的分歧安全能力应该集中还是扩散&#34;&gt;真正的分歧：安全能力应该集中，还是扩散？
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/openai-anthropic-ai-cyber-models-congress/imgs/access-models.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/openai-anthropic-ai-cyber-models-congress/imgs/access-models_hu_f2632f657878b001.png 480w, https://blog.ccino.org/p/openai-anthropic-ai-cyber-models-congress/imgs/access-models_hu_1938860ed7e88648.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;两条路线：集中控制 vs 分层开放&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;所以，OpenAI 和 Anthropic 的分歧，不是技术路线分歧。&lt;/p&gt;
&lt;p&gt;而是治理哲学分歧。&lt;/p&gt;
&lt;p&gt;Anthropic 认为，最危险的能力应该先集中在少数可信机构手里。&lt;/p&gt;
&lt;p&gt;OpenAI 认为，防御性能力应该在验证后更广泛地扩散。&lt;/p&gt;
&lt;p&gt;两边都有道理。&lt;/p&gt;
&lt;p&gt;如果能力扩散太快，攻击门槛会下降。&lt;/p&gt;
&lt;p&gt;如果能力集中太久，防御能力会垄断。&lt;/p&gt;
&lt;p&gt;这就是网络安全领域最麻烦的地方。&lt;/p&gt;
&lt;p&gt;不像图像生成，滥用后最多是版权、深伪、垃圾内容。&lt;/p&gt;
&lt;p&gt;网络安全模型一旦被滥用，影响的是现实系统。&lt;/p&gt;
&lt;p&gt;医院可能停摆。&lt;/p&gt;
&lt;p&gt;城市服务可能中断。&lt;/p&gt;
&lt;p&gt;金融系统可能被勒索。&lt;/p&gt;
&lt;p&gt;工业设备、汽车、航空、IoT、遗留银行系统这类难以及时修补的基础设施，风险尤其高。&lt;/p&gt;
&lt;p&gt;Bruce Schneier 在分析 Mythos 时提到一个很重要的判断：AI 不一定会让攻击方永久占优，关键取决于系统是否容易修补、是否容易验证。&lt;/p&gt;
&lt;p&gt;手机、浏览器、大型云服务这类系统，如果有快速更新机制，AI 反而可能帮助防御者更快发现和修复漏洞。&lt;/p&gt;
&lt;p&gt;但那些难以更新、难以验证、长期暴露在真实环境中的系统，就会成为最脆弱的目标。&lt;/p&gt;
&lt;p&gt;这也是为什么国会会关心这件事。&lt;/p&gt;
&lt;p&gt;因为它已经不是某家 AI 公司的产品策略，而是国家基础设施风险。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;实验室很强和真实世界可用不是一回事&#34;&gt;“实验室很强”和“真实世界可用”不是一回事
&lt;/h2&gt;&lt;p&gt;不过，也不能把这类模型神化。&lt;/p&gt;
&lt;p&gt;CyberScoop 报道中，美国联邦 CIO Greg Barbaccia 对 Mythos 的态度就很谨慎。&lt;/p&gt;
&lt;p&gt;他的核心意思是：&lt;/p&gt;
&lt;p&gt;测试和基准表现很重要，但不能直接等同于真实网络环境里的有效性。&lt;/p&gt;
&lt;p&gt;实验室里发现漏洞是一回事。&lt;/p&gt;
&lt;p&gt;面对一个有人防守、有告警系统、有权限边界、有复杂业务逻辑的真实网络，是另一回事。&lt;/p&gt;
&lt;p&gt;这句话很关键。&lt;/p&gt;
&lt;p&gt;很多 AI 模型在 benchmark 上看起来很强，但真实环境里会遇到一堆脏问题：&lt;/p&gt;
&lt;p&gt;系统文档不完整。&lt;/p&gt;
&lt;p&gt;资产清单不准确。&lt;/p&gt;
&lt;p&gt;权限边界混乱。&lt;/p&gt;
&lt;p&gt;历史包袱很多。&lt;/p&gt;
&lt;p&gt;告警噪声巨大。&lt;/p&gt;
&lt;p&gt;业务系统不能随便停机。&lt;/p&gt;
&lt;p&gt;安全团队真正缺的，也不只是“再发现一个漏洞”。&lt;/p&gt;
&lt;p&gt;他们缺的是判断：&lt;/p&gt;
&lt;p&gt;哪个漏洞真的影响核心资产？&lt;/p&gt;
&lt;p&gt;哪个漏洞只是理论风险？&lt;/p&gt;
&lt;p&gt;哪个修复可以立即做？&lt;/p&gt;
&lt;p&gt;哪个修复会影响生产系统？&lt;/p&gt;
&lt;p&gt;哪个风险应该优先处理？&lt;/p&gt;
&lt;p&gt;所以 AI 网络安全模型的价值，不能只看它能不能发现漏洞。&lt;/p&gt;
&lt;p&gt;更要看它能不能进入完整的防御流程。&lt;/p&gt;
&lt;p&gt;这也是 Schneier 提到的 VulnOps 方向：用 AI agent 持续在真实技术栈上测试漏洞、验证修复、过滤误报，并把安全测试变成软件工程的日常流程。&lt;/p&gt;
&lt;p&gt;换句话说，未来的安全 AI 不应该只是一个”黑客聊天机器人”。&lt;/p&gt;
&lt;p&gt;它更像是一套持续运行的防御系统。&lt;/p&gt;
&lt;p&gt;发现。&lt;/p&gt;
&lt;p&gt;验证。&lt;/p&gt;
&lt;p&gt;排序。&lt;/p&gt;
&lt;p&gt;修复。&lt;/p&gt;
&lt;p&gt;复测。&lt;/p&gt;
&lt;p&gt;留痕。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/openai-anthropic-ai-cyber-models-congress/imgs/vulnops-workflow.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/openai-anthropic-ai-cyber-models-congress/imgs/vulnops-workflow_hu_74dbeeb0ccdcd5a7.png 480w, https://blog.ccino.org/p/openai-anthropic-ai-cyber-models-congress/imgs/vulnops-workflow_hu_ffbb342793987c0b.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;VulnOps：AI 安全代理进入开发流程&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;这才是真正的价值。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;cisa-没有访问权限说明问题更复杂&#34;&gt;CISA 没有访问权限，说明问题更复杂
&lt;/h2&gt;&lt;p&gt;还有一个细节很值得注意。&lt;/p&gt;
&lt;p&gt;Axios 此前报道，美国网络安全和基础设施安全局 CISA 并没有获得 Anthropic Mythos 的访问权限。&lt;/p&gt;
&lt;p&gt;这很微妙。&lt;/p&gt;
&lt;p&gt;CISA 是美国负责保护民用联邦网络和关键基础设施的重要机构。按理说，如果有一个强大的防御性网络安全模型，它应该是最需要访问的一方。&lt;/p&gt;
&lt;p&gt;但现实并没有这么顺。&lt;/p&gt;
&lt;p&gt;有些政府机构已经在测试 Mythos，比如 NSA 和商务部相关 AI 测试机构；财政部也在寻求访问。但 CISA 仍然在外面。&lt;/p&gt;
&lt;p&gt;这说明“谁有资格使用最危险的 AI”并不是一个简单的技术审核问题。&lt;/p&gt;
&lt;p&gt;它牵涉公司政策。&lt;/p&gt;
&lt;p&gt;政府采购。&lt;/p&gt;
&lt;p&gt;供应链风险认定。&lt;/p&gt;
&lt;p&gt;军方使用边界。&lt;/p&gt;
&lt;p&gt;监管关系。&lt;/p&gt;
&lt;p&gt;机构间权限协调。&lt;/p&gt;
&lt;p&gt;Anthropic 此前因为军方使用限制问题，与美国国防部门发生过冲突。这个背景也让 Mythos 在政府内部的访问安排更复杂。&lt;/p&gt;
&lt;p&gt;所以，AI 网络安全模型越强，越不可能只是一个 SaaS 产品。&lt;/p&gt;
&lt;p&gt;它会变成政策问题。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;对普通开发者意味着什么&#34;&gt;对普通开发者意味着什么
&lt;/h2&gt;&lt;p&gt;这件事听起来离普通开发者很远。&lt;/p&gt;
&lt;p&gt;国会、Anthropic、OpenAI、CISA、NSA、Mythos、GPT-5.4-Cyber，都是大词。&lt;/p&gt;
&lt;p&gt;但它其实和每个软件团队都有关。&lt;/p&gt;
&lt;p&gt;因为这类能力迟早会下沉。&lt;/p&gt;
&lt;p&gt;今天是顶级实验室和政府闭门讨论。&lt;/p&gt;
&lt;p&gt;明天可能是大型企业安全团队的内部工具。&lt;/p&gt;
&lt;p&gt;后天就会变成开发流程的一部分。&lt;/p&gt;
&lt;p&gt;未来的软件工程，很可能会默认包含一层 AI 安全代理：&lt;/p&gt;
&lt;p&gt;提交代码后，它自动做漏洞扫描。&lt;/p&gt;
&lt;p&gt;部署前，它自动构造攻击路径验证。&lt;/p&gt;
&lt;p&gt;依赖升级时，它自动判断 CVE 是否真正影响当前系统。&lt;/p&gt;
&lt;p&gt;系统上线后，它持续模拟攻击面，检查权限边界和配置错误。&lt;/p&gt;
&lt;p&gt;这不是科幻。&lt;/p&gt;
&lt;p&gt;它只是把今天已经存在的 SAST、DAST、依赖扫描、红队演练、日志分析、安全审计，重新用 AI 串成一个更连续的流程。&lt;/p&gt;
&lt;p&gt;但这里有一个前提：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AI 不能替代安全制度。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;最小权限、资产清单、日志留存、快速修补、变更审计、网络隔离、密钥管理、依赖治理，这些老东西不会因为 AI 出现而过时。&lt;/p&gt;
&lt;p&gt;恰恰相反，它们会更重要。&lt;/p&gt;
&lt;p&gt;因为 AI 越强，越需要清晰的系统边界和可验证的工程流程。&lt;/p&gt;
&lt;p&gt;如果你的系统本来就没有权限边界、没有资产清单、没有测试环境、没有日志，那 AI 只会更快地告诉你：你到底有多脆弱。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;最危险的-ai到底应该给谁用&#34;&gt;最危险的 AI，到底应该给谁用？
&lt;/h2&gt;&lt;p&gt;回到最开始的问题。&lt;/p&gt;
&lt;p&gt;谁有资格使用最危险的 AI？&lt;/p&gt;
&lt;p&gt;Anthropic 的答案是：少数可信机构先用。&lt;/p&gt;
&lt;p&gt;OpenAI 的答案是：经过验证的防御者分层使用。&lt;/p&gt;
&lt;p&gt;我更倾向于认为，未来不会只有一种答案。&lt;/p&gt;
&lt;p&gt;最强能力，短期内一定会被严格限制。&lt;/p&gt;
&lt;p&gt;但防御性能力，长期一定会向更多组织扩散。&lt;/p&gt;
&lt;p&gt;因为网络安全不是少数巨头能单独解决的问题。&lt;/p&gt;
&lt;p&gt;攻击面分布在整个社会。&lt;/p&gt;
&lt;p&gt;医院、学校、地方政府、小企业、开源项目、工业系统、个人设备，都是攻击面的一部分。&lt;/p&gt;
&lt;p&gt;如果只有少数机构拥有 AI 防御工具，那么整体安全并不会真正提高。&lt;/p&gt;
&lt;p&gt;但如果完全开放，又会制造新的灾难。&lt;/p&gt;
&lt;p&gt;所以真正需要建立的，不是“开放”或“封闭”二选一，而是一套新的访问制度：&lt;/p&gt;
&lt;p&gt;谁可以用？&lt;/p&gt;
&lt;p&gt;用到什么能力级别？&lt;/p&gt;
&lt;p&gt;是否需要身份验证？&lt;/p&gt;
&lt;p&gt;是否需要日志审计？&lt;/p&gt;
&lt;p&gt;是否允许数据保留？&lt;/p&gt;
&lt;p&gt;发现漏洞后如何披露？&lt;/p&gt;
&lt;p&gt;模型输出是否能进入自动化执行链？&lt;/p&gt;
&lt;p&gt;出现滥用由谁负责？&lt;/p&gt;
&lt;p&gt;这些问题，比模型本身更难。&lt;/p&gt;
&lt;p&gt;也更重要。&lt;/p&gt;
&lt;p&gt;OpenAI 和 Anthropic 把 AI 黑客模型带进国会，标志着一个新阶段的开始。&lt;/p&gt;
&lt;p&gt;AI 网络安全不再只是工程师之间的技术竞赛。&lt;/p&gt;
&lt;p&gt;它正在变成监管问题、产业问题、国家安全问题，也会变成每个软件团队迟早要面对的工程问题。&lt;/p&gt;
&lt;p&gt;未来最重要的能力，也许不是“让 AI 找到漏洞”。&lt;/p&gt;
&lt;p&gt;而是让人类社会决定：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;这种能找到漏洞的 AI，应该被怎样安全地使用。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.axios.com/2026/04/28/openai-anthropic-congress-cyber-briefings&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Axios: OpenAI, Anthropic brief House Homeland Security on AI cyber threats&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.axios.com/2026/04/22/openai-gpt-cyber-government-meeting&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Axios: OpenAI briefs feds and Five Eyes on new cyber product&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.axios.com/2026/04/21/cisa-anthropic-mythos-ai-security&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Axios: CISA doesn&amp;rsquo;t have access to Anthropic&amp;rsquo;s Mythos&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://thenextweb.com/news/openai-gpt-5-4-cyber-trusted-access-defenders-mythos&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;The Next Web: OpenAI releases GPT-5.4-Cyber for vetted security teams&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.schneier.com/blog/archives/2026/04/what-anthropics-mythos-means-for-the-future-of-cybersecurity.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Schneier on Security: What Anthropic’s Mythos Means for the Future of Cybersecurity&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://cyberscoop.com/anthropic-mythos-federal-cybersecurity-evaluation-greg-barbaccia/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CyberScoop: Federal CIO cautious on Anthropic’s Mythos despite planned rollout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=iHQj4pBB47c&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;KYC AI LABS: The AI Cybersecurity Arms Race: Mythos vs. GPT-5.4-Cyber&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=KUAN7WdMa0k&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Permiso Security: Episode 09 - Mythos, GPT-5.4 Cyber, and Opus 4.7&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Meta 20亿美元买不走的Manus：中国叫停这笔AI并购，意味着什么</title>
        <link>https://blog.ccino.org/p/china-blocks-meta-manus-acquisition/</link>
        <pubDate>Tue, 28 Apr 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/china-blocks-meta-manus-acquisition/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/china-blocks-meta-manus-acquisition/imgs/cover.png" alt="Featured image of post Meta 20亿美元买不走的Manus：中国叫停这笔AI并购，意味着什么" /&gt;&lt;p&gt;2026年3月，Manus 的大约100名员工陆续搬进了 Meta 在新加坡的办公室。&lt;/p&gt;
&lt;p&gt;一切看起来很顺畅。合同谈好了，金额大约是 20 亿美元，双方都已经开始融合。半年前，这家曾经引发中国 AI 圈追捧的 Agent 公司，正式成为全球最大社交媒体公司的一部分。&lt;/p&gt;
&lt;p&gt;然后，4月27日，中国国家发展改革委发布了一则公告。&lt;/p&gt;
&lt;p&gt;用的是七个字：&amp;ldquo;禁止投资决定。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;要求：撤销收购。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;manus-是什么为什么它值-20-亿&#34;&gt;Manus 是什么，为什么它值 20 亿
&lt;/h2&gt;&lt;p&gt;如果你关注过 2025 年的国内 AI 圈，你一定见过那个热度——Manus 的内测邀请码被炒到了天价。&lt;/p&gt;
&lt;p&gt;Manus 做的是通用型 AI Agent：你给它一个任务，它自己搜索、分析、执行，最后交付结果。不只是聊天，而是真正地&amp;quot;做事&amp;quot;。这个概念在 2025 年爆发，而 Manus 是当时做得最好看的那个。&lt;/p&gt;
&lt;p&gt;它的创始人是三位中国工程师：肖宏（CEO）、季一超（首席科学家）和张韬。公司最初在北京注册，母公司叫 Butterfly Effect（蝴蝶效应）。&lt;/p&gt;
&lt;p&gt;2025年年中，团队迁往新加坡。&lt;/p&gt;
&lt;p&gt;几个月后，传来消息：Meta 要收购 Manus，价格是 20 亿到 30 亿美元之间。&lt;/p&gt;
&lt;p&gt;对于一家刚成立三年的初创公司，这是一个令人眩晕的数字。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/china-blocks-meta-manus-acquisition/imgs/manus-concept.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/china-blocks-meta-manus-acquisition/imgs/manus-concept_hu_b543d94e206af78.png 480w, https://blog.ccino.org/p/china-blocks-meta-manus-acquisition/imgs/manus-concept_hu_f9f0c2b651a55a5a.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Manus AI 产品概念图：一个 AI Agent 同时处理多个任务&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;一切都谈妥了然后-ndrc-出手了&#34;&gt;一切都谈妥了，然后 NDRC 出手了
&lt;/h2&gt;&lt;p&gt;根据 TechCrunch 的报道，这笔交易在 2025 年 12 月正式宣布。到了 2026 年 3 月，两家公司的整合工作已经实质启动——100 名 Manus 员工进入了 Meta 的新加坡办公室。&lt;/p&gt;
&lt;p&gt;看起来，这件事就这么成了。&lt;/p&gt;
&lt;p&gt;直到发改委的公告出来。&lt;/p&gt;
&lt;p&gt;发改委的措辞非常简洁，几乎没有给出任何解释：依据《外商投资安全审查办法》，禁止该收购交易，要求当事方撤销。&lt;/p&gt;
&lt;p&gt;Meta 的官方回应是：&amp;ldquo;此次交易完全符合相关法律法规，我们期待有关方面作出妥善的处理。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Manus 没有回应媒体的采访请求。&lt;/p&gt;
&lt;p&gt;而有一个细节，TechCrunch 在报道中提到——Manus 的 CEO 肖宏和首席科学家季一超，据报道目前不被允许离开中国大陆。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;这条规则中国之前从没正式用过&#34;&gt;这条规则，中国之前从没正式用过
&lt;/h2&gt;&lt;p&gt;《外商投资安全审查办法》是 2020 年颁布的。按照规定，涉及国家安全的外资并购，要向发改委报备，经审查后才能执行。&lt;/p&gt;
&lt;p&gt;但在 AI 领域，这扇门之前从来没被正式关上过。&lt;/p&gt;
&lt;p&gt;这是第一次。&lt;/p&gt;
&lt;p&gt;发改委没有解释为什么 Manus 构成安全风险。但从外部可以推断几个可能的逻辑：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;一是数据主权。&lt;/strong&gt; Manus 处理的是用户的真实任务——文件、规划、决策流程。如果这些数据进入 Meta 的生态，意味着大量中国用户的行为数据流入一家美国公司。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;二是算法控制权。&lt;/strong&gt; AI Agent 不只是处理数据，它参与决策。当 Agent 开始介入企业运营、个人规划，谁在运行这个 Agent，就在某种程度上参与了这些决策。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;三是技术资产外流。&lt;/strong&gt; Manus 团队是国内顶尖的 AI Agent 工程团队。允许这支团队被整体并入 Meta，意味着中国失去了这一批技术积累和人才储备。&lt;/p&gt;
&lt;p&gt;这三条加在一起，大概就是那七个字背后的逻辑。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/china-blocks-meta-manus-acquisition/imgs/china-us-tech.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/china-blocks-meta-manus-acquisition/imgs/china-us-tech_hu_c91e2093361f27c1.png 480w, https://blog.ccino.org/p/china-blocks-meta-manus-acquisition/imgs/china-us-tech_hu_212b288a65a1d8ef.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;中美科技博弈：数字壁垒在两个 AI 生态之间升起&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;100-个人已经在新加坡ceo-据说走不了&#34;&gt;100 个人已经在新加坡，CEO 据说走不了
&lt;/h2&gt;&lt;p&gt;这件事还没完。&lt;/p&gt;
&lt;p&gt;当判决来临的时候，已经搬到新加坡的 100 名员工处于一种法律上的模糊状态：他们的雇主是 Meta，但这笔收购被要求撤销。&lt;/p&gt;
&lt;p&gt;而 Manus 的两位核心创始人——CEO 和首席科学家——据报道目前留在中国大陆，暂时无法离境。&lt;/p&gt;
&lt;p&gt;这增加了整件事的复杂程度：即便双方&amp;quot;撤销收购&amp;quot;，整合工作已经发生的部分怎么处理？已经进入 Meta 体系的人和代码，怎么拆？&lt;/p&gt;
&lt;p&gt;目前没有答案。事情仍在发酵。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;中国-ai-初创的融资逻辑要重写了吗&#34;&gt;中国 AI 初创的融资逻辑，要重写了吗
&lt;/h2&gt;&lt;p&gt;在这件事之前，中国 AI 初创的国际化路径是有一套成熟逻辑的：&lt;/p&gt;
&lt;p&gt;在中国起步，拿天使轮；迁到新加坡，拿国际 VC 的钱；做出成绩后，被大厂收购或者海外上市。&lt;/p&gt;
&lt;p&gt;Manus 走的就是这条路。而且走到了最后一步。&lt;/p&gt;
&lt;p&gt;发改委的出手，相当于在最后一步前放了一道闸。&lt;/p&gt;
&lt;p&gt;这道闸的逻辑是：不是所有中国 AI 公司都可以被外资全资收购。那些涉及核心数据、核心算法、核心团队的 AI 资产，可能会被定性为&amp;quot;不可出售&amp;quot;的战略资产。&lt;/p&gt;
&lt;p&gt;对国内 AI 创业者来说，这意味着融资策略需要重新考量：&lt;strong&gt;如果你做的是具有战略价值的 AI 基础能力，你的退出路径可能不包括&amp;quot;卖给美国大厂&amp;quot;。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;对海外投资者来说，这意味着他们在投资中国 AI 公司时，需要提前判断：这家公司将来有没有可能被叫停并购。&lt;/p&gt;
&lt;p&gt;对 Manus 这件事本身来说，公司下一步怎么走，目前完全不清楚。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;结语&#34;&gt;结语
&lt;/h2&gt;&lt;p&gt;这是中国在 AI 并购领域开出的第一张否决票。&lt;/p&gt;
&lt;p&gt;它不是孤立的——在芯片、数据、算法这些领域，中国已经建立了越来越密的监管网络。这次，网终于收到了 AI 并购这个维度。&lt;/p&gt;
&lt;p&gt;Manus 这件事会有很多后续。&lt;/p&gt;
&lt;p&gt;员工的安置、合同的拆解、创始人的处境，还有 Meta 会不会真的&amp;quot;期待妥善处理&amp;quot;——这些都还没有答案。&lt;/p&gt;
&lt;p&gt;但有一件事已经非常清晰：&lt;strong&gt;当 AI 从一个工具变成一种基础设施，并购它和并购一座工厂，政治含义完全不同了。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;中国选择了在这个时间点划出这条线。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;参考来源&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://techcrunch.com/2026/04/27/china-vetoes-metas-2b-manus-deal-after-months-long-probe/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;China blocks Meta&amp;rsquo;s $2B Manus deal after months-long probe — TechCrunch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.aljazeera.com/news/2026/4/27/china-blocks-us-tech-giant-meta-from-acquiring-ai-startup-manus&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;China seeks to block US tech giant Meta from AI acquisition — Al Jazeera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://finance.sina.com.cn/jjxw/2026-04-28/doc-inhvykny7691274.shtml&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Manus收购案被叫停 — 新浪财经&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Anthropic 认错了：三个「独立变更」如何把 Claude Code 变成了故障现场</title>
        <link>https://blog.ccino.org/p/anthropic-claude-code-engineering-failure-2026/</link>
        <pubDate>Mon, 27 Apr 2026 09:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/anthropic-claude-code-engineering-failure-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/anthropic-claude-code-engineering-failure-2026/imgs/cover.png" alt="Featured image of post Anthropic 认错了：三个「独立变更」如何把 Claude Code 变成了故障现场" /&gt;&lt;p&gt;4 月 24 日，Anthropic 通过 Fortune 和 The Decoder 公开承认了一件事：过去一个多月，Claude Code 持续让用户失望，不是模型能力本身出了问题，而是三次独立的工程变更同时发作，叠加出一场没人预料到的质量崩塌。&lt;/p&gt;
&lt;p&gt;这不是 Anthropic 第一次面对用户抱怨，但这次是他们第一次把具体的失误说清楚了。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;三个变更三层伤害&#34;&gt;三个变更，三层伤害
&lt;/h2&gt;&lt;p&gt;Fortune 的报道还原了时间线。三次变更分散在将近七周内，每一次在当时都是独立的决策，没有人意识到它们叠在一起会是什么效果。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第一次，3 月 4 日：推理强度被悄悄调低。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Anthropic 把 Claude Code 的默认推理努力等级从 &lt;code&gt;high&lt;/code&gt; 改为 &lt;code&gt;medium&lt;/code&gt;，理由是降低延迟、减少响应时间。这个改动没有公告。用户注意到的是：复杂任务开始出现偷懒，原本能一步解决的问题开始给出&amp;quot;我需要更多信息&amp;quot;的回避答案。Anthropic 后来承认，&amp;ldquo;这个权衡是错误的&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第二次，3 月 26 日：一个 bug 让模型开始失忆。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;新的 bug 导致模型在同一个会话中持续丢弃自己的推理历史，使响应看起来前后矛盾、反复绕圈。更糟糕的是，这个行为在用掉大量 token 的同时没有产出任何有效结果——用户的配额在静默中被消耗。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第三次，4 月 16 日：每次工具调用之间的回复被限制在 25 个词以内。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这是三个变更中影响最直接可见的一次。Anthropic 在系统提示词里加了一条限制，把工具调用之间的自然语言回复硬性压缩到 25 个词。这个数字在代码协作场景里几乎什么都说不清楚。公司自己后来承认，这&amp;quot;显著伤害了编码质量&amp;quot;。四天后，4 月 20 日，这条限制被撤回。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;用户感知到的不是性能下降是被欺骗&#34;&gt;用户感知到的不是&amp;quot;性能下降&amp;quot;，是&amp;quot;被欺骗&amp;quot;
&lt;/h2&gt;&lt;p&gt;这段时间里，r/ClaudeAI 出现了一篇标题直接的帖子：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&lt;strong&gt;&amp;ldquo;Claude Opus 4.7 is a serious regression, not an upgrade.&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;这篇帖子最终获得 3186 个赞、803 条评论，热度几乎与 Anthropic 官方发布 Opus 4.7 的介绍帖持平。&lt;/p&gt;
&lt;p&gt;但用户的愤怒不只是因为工具变差了。一位开发者在评论区写道：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;After they gaslit users and pretended nothing was wrong&amp;hellip;Anthropic finally admit on the day GPT-5.5 releases there is a problem.&amp;rdquo;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;时机刺眼：Anthropic 公开认错的那天，正好是 OpenAI 发布 GPT-5.5 的同一天，4 月 24 日。不管这是不是巧合，很多用户选择不相信是巧合。&lt;/p&gt;
&lt;p&gt;AMD 的一位 AI 高管公开表示，Claude Code 已经&amp;quot;对复杂工程任务不可用&amp;quot;。多名订阅者取消了服务。有安全公司量化了这次崩塌：代码质量下降 47%，Claude Opus 4.7 在测试任务中引入安全漏洞的概率从 51% 升到 52%——而同期 OpenAI 模型的漏洞率约为 30%。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;opus-47-的另一面过度审查的申诉爆炸&#34;&gt;Opus 4.7 的另一面：过度审查的申诉爆炸
&lt;/h2&gt;&lt;p&gt;与性能问题并行的，是 Opus 4.7 的安全防护机制开始大量误判。&lt;/p&gt;
&lt;p&gt;The Register 整理了一批案例，其中有两个尤其离奇：&lt;/p&gt;
&lt;p&gt;一是 LSU 网络安全实验室主任，因为向 Claude 提交了包含基础密码学练习的实验室材料而遭到拒绝。他在社交媒体写道：&amp;ldquo;如果模型被限制到网络安全教育工作者无法使用的程度，这对安全有何帮助？&amp;rdquo;&lt;/p&gt;
&lt;p&gt;二是一名开发者，想让 Claude 处理一份孩之宝《怪物史瑞克》玩具广告 PDF，结果被拒绝。排查后发现触发词是 PDF 内容流里的文本 &lt;code&gt;CHARACTER OR FOR DONKEY UNDERNEATH&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;申诉数量的变化更说明问题：2025 年 7 月到 9 月，每月 2—3 起；10 月到 11 月，每月 5—7 起；到 2026 年 4 月，单月超过 30 起，翻了将近 10 倍。&lt;/p&gt;
&lt;p&gt;一个有意思的技术细节：根据此前泄露的 Claude Code 源代码，其安全分类器似乎使用了正则表达式做内容检测——只匹配禁用词汇，而不理解上下文。如果这是真的，那个案例就说得通了：&lt;code&gt;DONKEY UNDERNEATH&lt;/code&gt; 这个词组对关键词过滤器来说模式高度可疑，哪怕原文不过是玩具说明书里的安装指引。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;为什么三个独立变更会产生系统性崩塌&#34;&gt;为什么三个&amp;quot;独立&amp;quot;变更会产生系统性崩塌
&lt;/h2&gt;&lt;p&gt;这里有一个软件工程里的经典问题，常被称为&amp;quot;变更交互效应&amp;quot;（change interaction effect）：每个变更单独测试时都在可接受范围内，但叠加之后，各自的副作用开始互相放大。&lt;/p&gt;
&lt;p&gt;具体在这个案例里：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;推理强度降低（变更一），让模型在面对模糊任务时更容易走捷径；&lt;/li&gt;
&lt;li&gt;推理历史丢失（变更二），让这种走捷径的行为更难被用户理解和纠正；&lt;/li&gt;
&lt;li&gt;25 词限制（变更三），让用户甚至无法从 Claude 那里得到足够的信息来判断出了什么问题。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;三个变更独立存在时，没有一个会让用户感觉&amp;quot;不可用&amp;quot;。叠在一起，结果是用户在用一个看起来在运行、实际上在糊弄他们的工具。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/anthropic-claude-code-engineering-failure-2026/imgs/three-changes-timeline.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/anthropic-claude-code-engineering-failure-2026/imgs/three-changes-timeline_hu_22d2d0fd5027561f.png 480w, https://blog.ccino.org/p/anthropic-claude-code-engineering-failure-2026/imgs/three-changes-timeline_hu_a658132ebdafc9b2.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;三次独立变更叠加导致质量崩塌的时间线&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;这不是偶发的 bug，而是缺乏跨系统集成测试和变更影响评估机制的结构性后果。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;anthropic-承诺了什么&#34;&gt;Anthropic 承诺了什么
&lt;/h2&gt;&lt;p&gt;公开认错之后，Anthropic 承诺了几件事：在推出任何影响核心用户体验的变更前，引入更严格的质量控制流程；建立跨系统的集成测试机制；对影响性能的隐性变更保持透明。&lt;/p&gt;
&lt;p&gt;这些承诺写起来都很容易。&lt;/p&gt;
&lt;p&gt;对开发者来说，更有说服力的不是承诺，而是行动：25 词限制在四天内撤回了，这算一个数据点。推理强度是否已经恢复到 &lt;code&gt;high&lt;/code&gt;，推理历史的 bug 是否已经修复，官方没有明确说明。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;工具变成基础设施之后工程纪律的代价变了&#34;&gt;工具变成基础设施之后，工程纪律的代价变了
&lt;/h2&gt;&lt;p&gt;Claude Code 在过去一年里完成了一个迁移：从&amp;quot;很厉害的 AI 编程助手&amp;quot;变成了很多开发者工作流里的必要环节。当它只是一个辅助工具时，变差一点是体验问题；当它嵌入 CI/CD 流程、成为代码审查链路的一部分，变差一点是业务问题。&lt;/p&gt;
&lt;p&gt;这也是 Anthropic 这次压力格外大的原因之一：抱怨最响亮的用户，恰恰是把 Claude Code 用得最深的用户。&lt;/p&gt;
&lt;p&gt;传统软件公司对于这种迁移已经有了一套对应的工程文化：功能标志（feature flags）、灰度发布、A/B 实验、回滚机制、变更窗口的协调评审。Anthropic 不是不知道这些，但他们在一个快速扩张的阶段，显然没有把这套文化建设到位。&lt;/p&gt;
&lt;p&gt;AI 工具公司普遍面临的一个结构性挑战是：模型行为的变化不像传统代码改动那样边界清晰，更难追踪、更难测试、更容易在组合下产生意外效果。这不是借口，但这是真实的技术难度。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/anthropic-claude-code-engineering-failure-2026/imgs/engineering-discipline.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/anthropic-claude-code-engineering-failure-2026/imgs/engineering-discipline_hu_bc71338c1035b6ef.png 480w, https://blog.ccino.org/p/anthropic-claude-code-engineering-failure-2026/imgs/engineering-discipline_hu_bb219bd52c944ff6.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;从辅助工具到生产基础设施——工程纪律的代价已经不一样了&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;把这件事讲清楚，是 Anthropic 这次认错之后还没有做到的部分。用户知道出了什么问题了，但还不知道 Anthropic 对这个技术难度有没有足够深刻的认识——以及是否已经为此配备了足够的工程资源。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://fortune.com/2026/04/24/anthropic-engineering-missteps-claude-code-performance-decline-user-backlash/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic explains Claude Code&amp;rsquo;s recent performance decline after weeks of user backlash — Fortune&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://the-decoder.com/anthropic-confirms-claude-code-problems-and-promises-stricter-quality-controls/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic confirms Claude Code problems and promises stricter quality controls — The Decoder&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.theregister.com/2026/04/23/claude_opus_47_auc_overzealous/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Opus 4.7 has turned into an overzealous query cop — The Register&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.theregister.com/2026/04/13/claude_outage_quality_complaints/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude is getting worse, according to Claude — The Register&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://fortune.com/2026/04/14/anthropic-claude-performance-decline-user-complaints-backlash-lack-of-transparency-accusations-compute-crunch/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic faces user backlash over reported performance issues — Fortune&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://thenewstack.io/claude-opus-47-flaky-performance/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AI shrinkflation: Why Anthropic&amp;rsquo;s Claude Opus 4.7 may be less capable — The New Stack&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>从聊天到交付：GPT-5.5 真正想改变什么</title>
        <link>https://blog.ccino.org/p/gpt-5-5-from-chat-to-delivery/</link>
        <pubDate>Fri, 24 Apr 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/gpt-5-5-from-chat-to-delivery/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/gpt-5-5-from-chat-to-delivery/imgs/cover.png" alt="Featured image of post 从聊天到交付：GPT-5.5 真正想改变什么" /&gt;&lt;p&gt;OpenAI 发布 GPT-5.5 后，很多人的第一反应大概还是老三样：&lt;/p&gt;
&lt;p&gt;它比 GPT-5.4 强多少？&lt;br&gt;
它比 Claude Opus 4.7 强多少？&lt;br&gt;
它写代码到底有没有更猛？&lt;/p&gt;
&lt;p&gt;这些问题当然重要，但我觉得这次真正值得看的，不是模型排名。&lt;/p&gt;
&lt;p&gt;GPT-5.5 最关键的信号，是 OpenAI 开始很明确地把模型从「聊天机器人」往「干活系统」上推。&lt;/p&gt;
&lt;p&gt;官方介绍里有几个词特别扎眼：real work、agents、Codex、use tools、check its work、carry tasks through to completion。&lt;/p&gt;
&lt;p&gt;翻译得直白一点就是：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;以后模型不只是陪你聊天、帮你生成一段内容，而是要开始接任务、用工具、检查结果，并尽量把事情做完。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;这件事比「又聪明了一点」重要得多。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/gpt-5-5-from-chat-to-delivery/imgs/openai-gpt55-announcement.png&#34;
	width=&#34;929&#34;
	height=&#34;917&#34;
	srcset=&#34;https://blog.ccino.org/p/gpt-5-5-from-chat-to-delivery/imgs/openai-gpt55-announcement_hu_a3841ad72a356d97.png 480w, https://blog.ccino.org/p/gpt-5-5-from-chat-to-delivery/imgs/openai-gpt55-announcement_hu_d167cd9291bf9f7f.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;OpenAI GPT-5.5 官方公告页面&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;101&#34;
		data-flex-basis=&#34;243px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;来源：&lt;a class=&#34;link&#34; href=&#34;https://openai.com/index/introducing-gpt-5-5/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI 官方公告&lt;/a&gt;，2026年4月23日&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;聊天窗口已经不够用了&#34;&gt;聊天窗口已经不够用了
&lt;/h2&gt;&lt;p&gt;过去两年，我们对 AI 的默认想象基本都是一个聊天框。&lt;/p&gt;
&lt;p&gt;你问一句，它答一句。&lt;br&gt;
你贴一段代码，它改一段代码。&lt;br&gt;
你给一堆材料，它总结一篇文档。&lt;/p&gt;
&lt;p&gt;这已经很好用了，但它有一个明显边界：它大多数时候只是在完成「表达」，不是完成「事务」。&lt;/p&gt;
&lt;p&gt;比如你让 AI 帮你做一个竞品分析。&lt;/p&gt;
&lt;p&gt;普通聊天模型通常会给你：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一个分析框架；&lt;/li&gt;
&lt;li&gt;几个竞品维度；&lt;/li&gt;
&lt;li&gt;一段看起来挺像样的总结；&lt;/li&gt;
&lt;li&gt;最后再提醒你「可以进一步结合实际业务情况」。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;然后事情就停在那里。&lt;/p&gt;
&lt;p&gt;真正的工作不是这样。&lt;/p&gt;
&lt;p&gt;真实的竞品分析可能包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;去网页抓资料；&lt;/li&gt;
&lt;li&gt;整理多个产品的功能差异；&lt;/li&gt;
&lt;li&gt;放进表格；&lt;/li&gt;
&lt;li&gt;生成截图或引用链接；&lt;/li&gt;
&lt;li&gt;写成内部汇报文档；&lt;/li&gt;
&lt;li&gt;检查有没有遗漏；&lt;/li&gt;
&lt;li&gt;最后发给某个团队成员。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是说，真实工作天然是跨工具、跨上下文、跨步骤的。&lt;/p&gt;
&lt;p&gt;聊天框只能解决其中一小段。&lt;/p&gt;
&lt;p&gt;OpenAI 这次讲 GPT-5.5，不断强调「复杂目标」「工具使用」「自我检查」「完成任务」，其实就是在说：模型不能一直停留在聊天框里。&lt;/p&gt;
&lt;p&gt;它要进入工作流。&lt;/p&gt;
&lt;h2 id=&#34;gpt-55-的重点不是更会说而是更像执行器&#34;&gt;GPT-5.5 的重点不是更会说，而是更像执行器
&lt;/h2&gt;&lt;p&gt;过去我们评价一个模型，经常看这些东西：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;回答是否准确；&lt;/li&gt;
&lt;li&gt;推理是否更强；&lt;/li&gt;
&lt;li&gt;写代码是否更快；&lt;/li&gt;
&lt;li&gt;幻觉是否更少；&lt;/li&gt;
&lt;li&gt;上下文是否更长。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些指标当然还重要。&lt;/p&gt;
&lt;p&gt;但如果模型要真的进入工作场景，评价标准会变得更苛刻。&lt;/p&gt;
&lt;p&gt;你不能只问它「答得好不好」，你要问：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;它能不能理解一个不那么清晰的真实目标；&lt;/li&gt;
&lt;li&gt;它能不能自己拆成几个步骤；&lt;/li&gt;
&lt;li&gt;它能不能知道什么时候该调用工具；&lt;/li&gt;
&lt;li&gt;它能不能发现自己做错了；&lt;/li&gt;
&lt;li&gt;它能不能把任务从开头推进到结尾。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这就是聊天模型和工作模型的区别。&lt;/p&gt;
&lt;p&gt;聊天模型输出答案。&lt;br&gt;
工作模型交付结果。&lt;/p&gt;
&lt;p&gt;这也是为什么我觉得 GPT-5.5 的发布语境很重要。OpenAI 没有只说「我们做了一个更聪明的模型」，而是在反复暗示：这个模型是为 real work 准备的。&lt;/p&gt;
&lt;p&gt;real work 这个词很微妙。&lt;/p&gt;
&lt;p&gt;它不是 demo。&lt;br&gt;
不是 benchmark。&lt;br&gt;
不是一次漂亮的回答。&lt;/p&gt;
&lt;p&gt;它指的是那些真实、琐碎、跨系统、需要收尾的任务。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/gpt-5-5-from-chat-to-delivery/imgs/chat-to-executor.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/gpt-5-5-from-chat-to-delivery/imgs/chat-to-executor_hu_9b242cabdcfc4a5c.png 480w, https://blog.ccino.org/p/gpt-5-5-from-chat-to-delivery/imgs/chat-to-executor_hu_2470176d43e1fd0b.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;聊天模型 vs 工作模型：从输出答案到交付结果&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;为什么-codex-这次很关键&#34;&gt;为什么 Codex 这次很关键？
&lt;/h2&gt;&lt;p&gt;GPT-5.5 进入 Codex，不只是「代码能力增强」这么简单。&lt;/p&gt;
&lt;p&gt;AI 编程是观察这轮模型变化最好的窗口，因为写代码天然有闭环。&lt;/p&gt;
&lt;p&gt;代码不是写完就完了。&lt;/p&gt;
&lt;p&gt;它要能跑。&lt;br&gt;
测试要能过。&lt;br&gt;
Bug 要能复现。&lt;br&gt;
改动要能 review。&lt;br&gt;
上线后还不能炸。&lt;/p&gt;
&lt;p&gt;这比写一篇看似流畅的文章难得多。&lt;/p&gt;
&lt;p&gt;一个真正能参与编程的 AI，不应该只是补全几行代码，而是要能完成一整段工程任务：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;读懂需求；&lt;/li&gt;
&lt;li&gt;找到相关文件；&lt;/li&gt;
&lt;li&gt;理解现有实现；&lt;/li&gt;
&lt;li&gt;改代码；&lt;/li&gt;
&lt;li&gt;跑测试；&lt;/li&gt;
&lt;li&gt;根据报错继续修；&lt;/li&gt;
&lt;li&gt;最后把改动解释清楚。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这也是为什么 Claude Code、Cursor、Codex 这些工具会成为大模型竞争的主战场。&lt;/p&gt;
&lt;p&gt;它们比的不是谁更会聊天，而是谁更接近一个「能干活的同事」。&lt;/p&gt;
&lt;p&gt;以前 AI 编程的主语还是人：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;我写代码，AI 辅助我。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;现在主语正在慢慢变化：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;我设定目标，AI 负责推进一段可验证的工程任务。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;这一步变化非常大。&lt;/p&gt;
&lt;p&gt;它意味着程序员的工作不是简单变轻了，而是工作重心变了。&lt;/p&gt;
&lt;p&gt;你不一定少操心，但你操心的东西不一样了。&lt;/p&gt;
&lt;h2 id=&#34;workspace-agents-是另一半拼图&#34;&gt;Workspace Agents 是另一半拼图
&lt;/h2&gt;&lt;p&gt;和 GPT-5.5 一起值得看的，还有 OpenAI 推的 Workspace Agents。&lt;/p&gt;
&lt;p&gt;这个名字里最关键的词不是 agents，而是 workspace。&lt;/p&gt;
&lt;p&gt;它说明 OpenAI 想做的不是再给你一个更聪明的私人聊天助手，而是让 AI 进入团队协作环境。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/gpt-5-5-from-chat-to-delivery/imgs/openai-workspace-agents.png&#34;
	width=&#34;929&#34;
	height=&#34;917&#34;
	srcset=&#34;https://blog.ccino.org/p/gpt-5-5-from-chat-to-delivery/imgs/openai-workspace-agents_hu_568e6a70558da8d8.png 480w, https://blog.ccino.org/p/gpt-5-5-from-chat-to-delivery/imgs/openai-workspace-agents_hu_698c2e5247d86caf.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;OpenAI Workspace Agents 官方发布页面&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;101&#34;
		data-flex-basis=&#34;243px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;来源：&lt;a class=&#34;link&#34; href=&#34;https://openai.com/index/introducing-workspace-agents-in-chatgpt/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI Workspace Agents 官方公告&lt;/a&gt;，2026年4月22日&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;这件事的想象空间很大。&lt;/p&gt;
&lt;p&gt;一个销售团队可以有线索筛选 Agent。&lt;br&gt;
一个运营团队可以有用户反馈归类 Agent。&lt;br&gt;
一个产品团队可以有竞品分析 Agent。&lt;br&gt;
一个工程团队可以有代码审查 Agent。&lt;br&gt;
一个内容团队可以有资料整理和初稿生成 Agent。&lt;/p&gt;
&lt;p&gt;这些东西和普通 ChatGPT 的差别在于：它们不是一次性问答，而是可复用的工作节点。&lt;/p&gt;
&lt;p&gt;你不再是每次打开聊天框，重新解释背景、重新贴资料、重新说一遍格式要求。&lt;/p&gt;
&lt;p&gt;而是把某类任务沉淀成一个可以反复调用的 Agent。&lt;/p&gt;
&lt;p&gt;这其实更接近公司里的岗位分工。&lt;/p&gt;
&lt;p&gt;不是因为 AI 像人，而是因为它开始占据工作流里的固定位置。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/gpt-5-5-from-chat-to-delivery/imgs/workspace-agents-collab.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/gpt-5-5-from-chat-to-delivery/imgs/workspace-agents-collab_hu_e71b1d93b819de87.png 480w, https://blog.ccino.org/p/gpt-5-5-from-chat-to-delivery/imgs/workspace-agents-collab_hu_97924e4872497579.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Workspace Agents 团队分工协作示意图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;国内用户真正该关心什么&#34;&gt;国内用户真正该关心什么？
&lt;/h2&gt;&lt;p&gt;很多国内用户看 GPT-5.5，第一反应可能是：&lt;/p&gt;
&lt;p&gt;能不能用？&lt;br&gt;
贵不贵？&lt;br&gt;
有没有平替？&lt;br&gt;
比 Claude 好不好？&lt;/p&gt;
&lt;p&gt;这些都很实际。&lt;/p&gt;
&lt;p&gt;但如果只盯着这些，就容易错过更大的变化。&lt;/p&gt;
&lt;p&gt;OpenAI 这次其实是在给下一代 AI 产品定调：以后大家拼的不会只是「模型回答质量」，而是谁能更好地完成工作闭环。&lt;/p&gt;
&lt;p&gt;我觉得接下来 AI 工具会越来越围绕三个问题竞争。&lt;/p&gt;
&lt;h3 id=&#34;第一能不能接工具&#34;&gt;第一，能不能接工具
&lt;/h3&gt;&lt;p&gt;不能接工具的 AI，只能给建议。&lt;/p&gt;
&lt;p&gt;能接工具的 AI，才可能完成任务。&lt;/p&gt;
&lt;p&gt;这也是为什么 MCP、浏览器控制、代码执行、文件系统权限、自动化脚本这些东西突然变得重要。&lt;/p&gt;
&lt;p&gt;过去大家卷提示词。&lt;br&gt;
以后大家会卷工具链。&lt;/p&gt;
&lt;p&gt;提示词决定你怎么问。&lt;br&gt;
工具链决定 AI 能做什么。&lt;/p&gt;
&lt;h3 id=&#34;第二能不能保持上下文&#34;&gt;第二，能不能保持上下文
&lt;/h3&gt;&lt;p&gt;真实工作不是一次性问答。&lt;/p&gt;
&lt;p&gt;一个需求可能持续几小时。&lt;br&gt;
一个项目可能持续几周。&lt;br&gt;
一套系统可能有很多历史包袱。&lt;/p&gt;
&lt;p&gt;如果 AI 每次都要你重新解释背景，它就是一个临时顾问。&lt;/p&gt;
&lt;p&gt;如果 AI 能持续理解项目结构、记住约束、追踪任务状态，它才像一个协作者。&lt;/p&gt;
&lt;p&gt;这也是为什么 Claude Code 这类工具会强调项目上下文，为什么 Workspace Agents 会强调团队共享。&lt;/p&gt;
&lt;p&gt;上下文不是附加功能，而是工作型 AI 的地基。&lt;/p&gt;
&lt;h3 id=&#34;第三能不能自检&#34;&gt;第三，能不能自检
&lt;/h3&gt;&lt;p&gt;这是从玩具到工具的分界线。&lt;/p&gt;
&lt;p&gt;很多 AI demo 看起来很惊艳，但一进真实工作就露馅，原因不是它不会生成，而是它不会检查。&lt;/p&gt;
&lt;p&gt;代码有没有跑？&lt;br&gt;
引用有没有来源？&lt;br&gt;
数据有没有算错？&lt;br&gt;
文件有没有放对？&lt;br&gt;
格式有没有符合要求？&lt;br&gt;
有没有误删东西？&lt;/p&gt;
&lt;p&gt;这些才是真正消耗人的地方。&lt;/p&gt;
&lt;p&gt;一个模型如果不能自检，就不能真正交付。&lt;/p&gt;
&lt;p&gt;它最多只是一个很会写初稿的实习生。&lt;/p&gt;
&lt;h2 id=&#34;ai-越强为什么人反而更累&#34;&gt;AI 越强，为什么人反而更累？
&lt;/h2&gt;&lt;p&gt;最近很多开发者有一种很矛盾的感受：&lt;/p&gt;
&lt;p&gt;AI 编程工具变强了，但自己好像没有想象中那么轻松。&lt;/p&gt;
&lt;p&gt;原因很简单。&lt;/p&gt;
&lt;p&gt;AI 只能写几行代码时，你还是主要执行者。&lt;br&gt;
AI 开始能接任务时，你就变成了调度者和审查者。&lt;/p&gt;
&lt;p&gt;这不是更轻松的工作，而是另一种工作。&lt;/p&gt;
&lt;p&gt;你要学会：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;把需求拆成适合 AI 执行的任务；&lt;/li&gt;
&lt;li&gt;给它足够但不过量的上下文；&lt;/li&gt;
&lt;li&gt;控制它能访问什么；&lt;/li&gt;
&lt;li&gt;判断它什么时候跑偏；&lt;/li&gt;
&lt;li&gt;审查它交付的结果；&lt;/li&gt;
&lt;li&gt;必要时把它拉回正确方向。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以很多人会发现：AI 不是把工程师变成了甩手掌柜，而是把工程师推向了更像技术负责人、产品经理、架构师混合体的位置。&lt;/p&gt;
&lt;p&gt;这也是 GPT-5.5 这种模型值得关注的原因。&lt;/p&gt;
&lt;p&gt;它越像执行器，人就越需要学会管理执行器。&lt;/p&gt;
&lt;h2 id=&#34;真正的变化是任务接口取代聊天接口&#34;&gt;真正的变化，是「任务接口」取代「聊天接口」
&lt;/h2&gt;&lt;p&gt;我越来越觉得，聊天框只是大模型的早期形态。&lt;/p&gt;
&lt;p&gt;它很自然，因为人类最容易通过对话理解 AI。&lt;/p&gt;
&lt;p&gt;但长期看，AI 的主入口未必是聊天框。&lt;/p&gt;
&lt;p&gt;在编程里，它可能是 IDE 和终端。&lt;br&gt;
在办公里，它可能是文档、表格和项目管理工具。&lt;br&gt;
在企业里，它可能是工单、CRM、知识库和自动化流程。&lt;br&gt;
在个人知识管理里，它可能是 Obsidian、NotebookLM、浏览器和本地文件系统。&lt;/p&gt;
&lt;p&gt;聊天框不会消失，但它会从「主界面」变成「控制台」。&lt;/p&gt;
&lt;p&gt;你在里面下达目标、确认方向、处理异常。&lt;br&gt;
真正的执行发生在后面的工具链里。&lt;/p&gt;
&lt;p&gt;这才是 GPT-5.5、Codex、Workspace Agents 放在一起看的意义。&lt;/p&gt;
&lt;p&gt;OpenAI 想要的不是让 ChatGPT 更会聊天，而是让 ChatGPT 变成一个任务入口。&lt;/p&gt;
&lt;h2 id=&#34;我们该怎么适应&#34;&gt;我们该怎么适应？
&lt;/h2&gt;&lt;p&gt;如果你只是普通用户，不需要立刻追每一个新模型。&lt;/p&gt;
&lt;p&gt;但有三件事可以现在开始练。&lt;/p&gt;
&lt;h3 id=&#34;1-把需求写成任务而不是问题&#34;&gt;1. 把需求写成任务，而不是问题
&lt;/h3&gt;&lt;p&gt;不要只说：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;帮我分析一下这个产品。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;试着说：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;请阅读这三份资料，提取产品的核心功能、目标用户、定价方式和差异化卖点，整理成一张表格。最后用 500 字总结它对国内 AI 工具创业者的启发，并列出 3 个值得继续研究的问题。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;问题是给聊天模型的。&lt;br&gt;
任务是给工作模型的。&lt;/p&gt;
&lt;p&gt;以后这两者的差距会越来越大。&lt;/p&gt;
&lt;h3 id=&#34;2-搭自己的工具链&#34;&gt;2. 搭自己的工具链
&lt;/h3&gt;&lt;p&gt;别只收藏提示词。&lt;/p&gt;
&lt;p&gt;更重要的是想清楚：你的 AI 能接触哪些工具？&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你的知识库；&lt;/li&gt;
&lt;li&gt;你的代码仓库；&lt;/li&gt;
&lt;li&gt;你的浏览器；&lt;/li&gt;
&lt;li&gt;你的自动化脚本；&lt;/li&gt;
&lt;li&gt;你的发布流程；&lt;/li&gt;
&lt;li&gt;你的测试环境；&lt;/li&gt;
&lt;li&gt;你的素材库。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一个普通模型，加上一套好工具链，可能比一个裸奔的强模型更有用。&lt;/p&gt;
&lt;p&gt;这也是未来个人生产力的分水岭。&lt;/p&gt;
&lt;h3 id=&#34;3-学会验收-ai-的结果&#34;&gt;3. 学会验收 AI 的结果
&lt;/h3&gt;&lt;p&gt;AI 越能干活，人越不能只看最终文字顺不顺。&lt;/p&gt;
&lt;p&gt;你要学会验收：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;来源是否可靠；&lt;/li&gt;
&lt;li&gt;代码是否真的运行；&lt;/li&gt;
&lt;li&gt;数据是否能复算；&lt;/li&gt;
&lt;li&gt;结论是否过度推断；&lt;/li&gt;
&lt;li&gt;有没有安全风险；&lt;/li&gt;
&lt;li&gt;有没有破坏现有工作流。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;未来厉害的人，不是完全相信 AI 的人，也不是拒绝 AI 的人。&lt;/p&gt;
&lt;p&gt;而是能让 AI 高速产出，同时把质量控制住的人。&lt;/p&gt;
&lt;h2 id=&#34;结尾别再只问它聪不聪明了&#34;&gt;结尾：别再只问它聪不聪明了
&lt;/h2&gt;&lt;p&gt;GPT-5.5 当然是一款更强的模型。&lt;/p&gt;
&lt;p&gt;但如果只把它看成「GPT-5.4 的升级版」，就低估了这次发布的意义。&lt;/p&gt;
&lt;p&gt;我更愿意把它看成 OpenAI 的一次产品宣言：&lt;/p&gt;
&lt;p&gt;AI 不该只停留在回答问题。&lt;br&gt;
AI 应该进入工具，进入流程，进入团队，进入真实工作。&lt;/p&gt;
&lt;p&gt;下一阶段的大模型竞争，可能不会只是谁更聪明，而是谁更能把事情做完。&lt;/p&gt;
&lt;p&gt;这也是我们该调整视角的地方。&lt;/p&gt;
&lt;p&gt;以后评价一个 AI，别只问：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;它回答得怎么样？&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;还要问：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;它能交付什么？&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openai.com/index/introducing-gpt-5-5/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI: Introducing GPT-5.5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/OpenAI/status/2047376561205325845&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI GPT-5.5 发布推文&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/OpenAI/status/2047008987665809771&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI Workspace Agents 推文&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/OpenAI/status/2047376562916581513&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI 关于 GPT-5.5 能力说明推文&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/OpenAI/status/2047376564309115134&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI 关于 GPT-5.5 速度与效率说明推文&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Claude Code 要单独收费了吗？AI 编程代理正在逼平台重写订阅规则</title>
        <link>https://blog.ccino.org/p/claude-code-subscription-rules-rewrite-2026/</link>
        <pubDate>Thu, 23 Apr 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/claude-code-subscription-rules-rewrite-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/claude-code-subscription-rules-rewrite-2026/imgs/cover.png" alt="Featured image of post Claude Code 要单独收费了吗？AI 编程代理正在逼平台重写订阅规则" /&gt;&lt;p&gt;如果你这两天刷到 Claude Code 相关讨论，会发现社区情绪有点拧巴。&lt;/p&gt;
&lt;p&gt;一边，很多人还是把它当成现在最强的 AI 编程工具之一：能读项目、能拆任务、能写代码、能跑命令，而且已经开始承接越来越完整的开发流程。&lt;/p&gt;
&lt;p&gt;另一边，不少开发者开始紧张起来。&lt;/p&gt;
&lt;p&gt;不是因为它突然变笨了，也不是因为 Anthropic 已经正式涨价，而是因为一个很小、但信号很强的动作：&lt;strong&gt;4月22日 Anthropic 一度把 Claude Code 从 Pro 套餐页面移除了。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;页面后来回滚了，官方也把它解释成一次小范围测试。但真正让人不安的，其实不是那个页面本身。&lt;/p&gt;
&lt;p&gt;大家真正盯住的是另一件事：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;如果连 Claude Code 这种产品都开始试探性调整订阅边界，那是不是说明，AI 编程这件事已经贵到原来的定价方式快要兜不住了？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这才是这次事件最值得讨论的地方。&lt;/p&gt;
&lt;p&gt;它不是一次普通的页面失误，也不只是一次社区风波。&lt;/p&gt;
&lt;p&gt;它更像是一个很直接的行业信号：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AI 编程代理，正在逼平台重写订阅规则。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;一表面上是套餐页风波实际上是成本模型开始失衡&#34;&gt;一、表面上是套餐页风波，实际上是成本模型开始失衡
&lt;/h2&gt;&lt;p&gt;先看表面发生了什么。&lt;/p&gt;
&lt;p&gt;4 月 22 日，开发者注意到 Anthropic 的 Pro 页面里，一度不再明确包含 Claude Code。随后社区迅速发酵，媒体跟进，X 上也开始出现“是不是要单独收费”“是不是 Pro 已经不够用了”“重度用户是不是会被重新分层”的讨论。&lt;/p&gt;
&lt;p&gt;几小时后，页面回滚，Anthropic 方面把它解释成测试。&lt;/p&gt;
&lt;p&gt;如果只把这件事理解成一次产品页面事故，你会低估它。&lt;/p&gt;
&lt;p&gt;因为真正值得注意的，不是 Anthropic 那天到底改没改文案，而是它为什么会去测试这件事。&lt;/p&gt;
&lt;p&gt;平台不会无缘无故去碰一个最容易引发用户焦虑的位置。尤其当 Claude Code 已经是 Anthropic 当前最强势、也最能带动用户讨论和订阅意愿的产品之一时，任何关于权益边界的试探，都说明内部已经在认真面对一个问题：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;原来那套面向聊天产品的订阅设计，可能已经不适合承载 AI 编程代理。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这其实不难理解。&lt;/p&gt;
&lt;p&gt;聊天产品的典型使用方式是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你提一个问题&lt;/li&gt;
&lt;li&gt;它给一个回答&lt;/li&gt;
&lt;li&gt;一轮交互结束&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;哪怕模型很强，绝大多数场景依然是短会话、低并发、有限上下文、相对可控的计算消耗。&lt;/p&gt;
&lt;p&gt;但 Claude Code 这种产品的使用方式完全不同。&lt;/p&gt;
&lt;p&gt;你不是在问它一句话，而是在把一段真实工作交给它：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;让它理解整个代码库&lt;/li&gt;
&lt;li&gt;让它读一堆文件&lt;/li&gt;
&lt;li&gt;让它跑命令、改代码、修测试&lt;/li&gt;
&lt;li&gt;让它跨多个步骤持续推进&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这意味着，平台卖给你的已经不再只是“模型访问权”，而是一种接近持续计算资源的东西。&lt;/p&gt;
&lt;p&gt;说得更直白一点：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;过去订阅卖的是回答，现在订阅卖的是工作负载。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;而一旦卖的是工作负载，原来的定价逻辑迟早会出问题。&lt;/p&gt;
&lt;h2 id=&#34;二为什么-ai-编程代理比普通聊天产品更容易击穿订阅模型&#34;&gt;二、为什么 AI 编程代理比普通聊天产品更容易击穿订阅模型？
&lt;/h2&gt;&lt;p&gt;这个问题其实是理解整件事的关键。&lt;/p&gt;
&lt;p&gt;很多人会觉得，Claude Code 也不过是 Claude 的一个编程界面，为什么会单独带来这么大的定价压力？&lt;/p&gt;
&lt;p&gt;答案是：它消耗的根本不是同一种资源。&lt;/p&gt;
&lt;p&gt;普通聊天产品的成本高低，更多取决于：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;模型大小&lt;/li&gt;
&lt;li&gt;单次上下文长度&lt;/li&gt;
&lt;li&gt;回复长度&lt;/li&gt;
&lt;li&gt;用户提问频率&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;而 AI 编程代理的成本结构，复杂得多。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-code-subscription-rules-rewrite-2026/imgs/access-vs-workload.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-code-subscription-rules-rewrite-2026/imgs/access-vs-workload_hu_86f330fd8cae65cf.png 480w, https://blog.ccino.org/p/claude-code-subscription-rules-rewrite-2026/imgs/access-vs-workload_hu_94dea167f5205ccb.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;从模型访问权到持续工作能力&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;1-它天然更长&#34;&gt;1. 它天然更长
&lt;/h3&gt;&lt;p&gt;代码任务几乎天然需要更长的上下文。&lt;/p&gt;
&lt;p&gt;你问一个写作问题，可以只给几百字背景。但你让 Claude Code 改一个真实项目，它往往需要：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;读目录结构&lt;/li&gt;
&lt;li&gt;看相关文件&lt;/li&gt;
&lt;li&gt;追踪函数调用&lt;/li&gt;
&lt;li&gt;理解依赖关系&lt;/li&gt;
&lt;li&gt;结合错误日志和测试结果反复调整&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这意味着，单次任务不是“一问一答”，而是一段持续展开的、多轮递归式工作。&lt;/p&gt;
&lt;p&gt;长度一上来，成本就不是线性增长，而更像复利式上升。&lt;/p&gt;
&lt;h3 id=&#34;2-它天然更深&#34;&gt;2. 它天然更深
&lt;/h3&gt;&lt;p&gt;编程代理不只是“输出内容”，它还会思考流程。&lt;/p&gt;
&lt;p&gt;一个真正好用的 AI 编程工具，不只是帮你写几行代码，而是需要判断：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;先改哪一层&lt;/li&gt;
&lt;li&gt;这次改动会影响哪些文件&lt;/li&gt;
&lt;li&gt;哪些地方需要测试验证&lt;/li&gt;
&lt;li&gt;哪些命令值得执行&lt;/li&gt;
&lt;li&gt;哪种方案更安全&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是说，用户买的不是“一个更会写代码的回答器”，而是“一个能持续做任务决策的执行系统”。&lt;/p&gt;
&lt;p&gt;深度越高，推理越多，系统越像在替你工作，成本也就越接近“租一个数字劳动力”，而不是“买一个搜索框”。&lt;/p&gt;
&lt;h3 id=&#34;3-它天然更重&#34;&gt;3. 它天然更重
&lt;/h3&gt;&lt;p&gt;聊天产品的典型风险是回答错。&lt;/p&gt;
&lt;p&gt;AI 编程代理的典型风险是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;它真的动手。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;一旦产品开始读写文件、执行命令、接入工具、管理上下文，它就不只是一个输出型产品，而是一个行动型产品。&lt;/p&gt;
&lt;p&gt;行动型产品意味着更多的系统资源、更多的安全控制、更多的状态管理，也意味着平台必须为少数重度用户承担极高的边际成本。&lt;/p&gt;
&lt;p&gt;这也是为什么你会看到越来越多 AI 编程产品开始出现这些词：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;agent&lt;/li&gt;
&lt;li&gt;tasks&lt;/li&gt;
&lt;li&gt;routines&lt;/li&gt;
&lt;li&gt;cowork&lt;/li&gt;
&lt;li&gt;workspace agents&lt;/li&gt;
&lt;li&gt;automation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些词背后的共同点，不是“更酷”，而是“更重”。&lt;/p&gt;
&lt;p&gt;一旦产品更重，原先那种用一个统一订阅层承载所有用户的方式，就会越来越吃力。&lt;/p&gt;
&lt;h2 id=&#34;三这次风波真正暴露的不是价格而是用户分层问题&#34;&gt;三、这次风波真正暴露的，不是价格，而是用户分层问题
&lt;/h2&gt;&lt;p&gt;很多人讨论这件事时，第一反应是：会不会涨价？&lt;/p&gt;
&lt;p&gt;但比“涨不涨价”更重要的，其实是另一个问题：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;平台该怎么给不同强度的用户重新分层？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;因为 AI 编程产品的用户差异，比普通聊天产品大太多了。&lt;/p&gt;
&lt;p&gt;在同一个 Pro 订阅里，可能同时存在三类人。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-code-subscription-rules-rewrite-2026/imgs/user-segmentation.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-code-subscription-rules-rewrite-2026/imgs/user-segmentation_hu_64b3a6f878a99d.png 480w, https://blog.ccino.org/p/claude-code-subscription-rules-rewrite-2026/imgs/user-segmentation_hu_497effd9e07e133a.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Claude Code 用户分层与成本压力&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;1-轻度体验型用户&#34;&gt;1. 轻度体验型用户
&lt;/h3&gt;&lt;p&gt;这类用户会偶尔用 Claude Code：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;看一段代码&lt;/li&gt;
&lt;li&gt;解释一个错误&lt;/li&gt;
&lt;li&gt;写一个脚本&lt;/li&gt;
&lt;li&gt;简单改几个文件&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对他们来说，Claude Code 是增强功能，不是主力工作台。&lt;/p&gt;
&lt;p&gt;他们当然希望包含在 Pro 里，因为这样最顺滑、最有吸引力，也最容易形成“我已经赚到了”的感受。&lt;/p&gt;
&lt;h3 id=&#34;2-中度工作流用户&#34;&gt;2. 中度工作流用户
&lt;/h3&gt;&lt;p&gt;这类用户已经把 Claude Code 纳入常规开发过程：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;让它做较完整的改动&lt;/li&gt;
&lt;li&gt;让它读项目并给方案&lt;/li&gt;
&lt;li&gt;让它跑测试、修 bug、做一些自动化任务&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这批人才是平台最容易感受到压力的灰色地带。&lt;/p&gt;
&lt;p&gt;他们不是极端高负载，但已经明显超出普通聊天用户的资源模型。&lt;/p&gt;
&lt;h3 id=&#34;3-重度生产型用户&#34;&gt;3. 重度生产型用户
&lt;/h3&gt;&lt;p&gt;这类用户最麻烦，也最值钱。&lt;/p&gt;
&lt;p&gt;他们不是偶尔用一下，而是真的把 Claude Code 当成主力生产工具：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;长时间运行&lt;/li&gt;
&lt;li&gt;高频复杂任务&lt;/li&gt;
&lt;li&gt;大量上下文&lt;/li&gt;
&lt;li&gt;多项目切换&lt;/li&gt;
&lt;li&gt;高依赖度&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这批用户通常最懂产品、最能放大口碑、也最愿意付费；但同时，他们也是最容易把平台成本结构打穿的一群人。&lt;/p&gt;
&lt;p&gt;于是平台会陷入一个很现实的矛盾：核心用户越满意，平台的边际成本压力反而越大。&lt;/p&gt;
&lt;p&gt;这就是为什么这次事件的核心，不只是价格，而是&lt;strong&gt;分层&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;Claude Code 不是突然变贵了，而是它终于把一个长期被掩盖的问题推到了台前：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AI 编程产品不能再假装所有用户的使用成本差不多。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;四下一步平台会怎么重新定价&#34;&gt;四、下一步平台会怎么重新定价？
&lt;/h2&gt;&lt;p&gt;如果把这次事件看成一次“试探性信号”，那接下来行业最值得观察的，就是各家会如何重新设计价格与权益。&lt;/p&gt;
&lt;p&gt;我觉得未来大概率会往四个方向分化。&lt;/p&gt;
&lt;h3 id=&#34;1-从模型分层转向负载分层&#34;&gt;1. 从“模型分层”转向“负载分层”
&lt;/h3&gt;&lt;p&gt;过去最常见的定价方式是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;免费版&lt;/li&gt;
&lt;li&gt;Pro 版&lt;/li&gt;
&lt;li&gt;Team / Enterprise 版&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;区别主要体现在：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;能不能用更强模型&lt;/li&gt;
&lt;li&gt;消息上限多少&lt;/li&gt;
&lt;li&gt;上下文长短&lt;/li&gt;
&lt;li&gt;有没有更高配额&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但 AI 编程产品会逐渐推动另一种更细的逻辑：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;轻度交互型&lt;/li&gt;
&lt;li&gt;持续任务型&lt;/li&gt;
&lt;li&gt;自动化执行型&lt;/li&gt;
&lt;li&gt;团队协作型&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是说，不再只是按“你能用哪个模型”收费，而是按“你让它承担多重的工作”收费。&lt;/p&gt;
&lt;p&gt;未来你买到的可能不是 Claude 4.7 还是 4.8，而是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;能否持续执行多步任务&lt;/li&gt;
&lt;li&gt;能否高频读写项目上下文&lt;/li&gt;
&lt;li&gt;能否调用更多工具&lt;/li&gt;
&lt;li&gt;能否让 AI 在你离开后继续推进&lt;/li&gt;
&lt;li&gt;能否共享给团队协作使用&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这和云计算的逻辑其实越来越像：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;不是买一台机器，而是买使用那台机器的方式和强度。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;2-从个人订阅转向工作席位--任务额度&#34;&gt;2. 从个人订阅转向“工作席位 + 任务额度”
&lt;/h3&gt;&lt;p&gt;AI 编程的另一个变化是，它越来越不像个人玩具，而像团队生产工具。&lt;/p&gt;
&lt;p&gt;这意味着未来的收费方式很可能会混合两种维度：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;席位费：你有多少人可以用&lt;/li&gt;
&lt;li&gt;任务费：你的 AI 代理实际承担了多少工作量&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这一点其实已经能从 OpenAI 新推的 workspace agents、Anthropic 的 Cowork / Code 路线、以及 Cursor 越来越往工作流系统走的倾向里看出来。&lt;/p&gt;
&lt;p&gt;个人订阅不会消失，但它在整个收入结构里的权重，可能会慢慢下降。&lt;/p&gt;
&lt;p&gt;因为真正愿意为 AI 编程长期买单的，不是想试试的人，而是已经把它放进真实生产流程的人。&lt;/p&gt;
&lt;h3 id=&#34;3-从功能收费转向稳定性收费&#34;&gt;3. 从“功能收费”转向“稳定性收费”
&lt;/h3&gt;&lt;p&gt;还有一个经常被忽略的点：&lt;/p&gt;
&lt;p&gt;未来最值钱的，不一定是谁功能最多，而是谁最稳定、最可预期。&lt;/p&gt;
&lt;p&gt;AI 编程用户最怕的不是功能少，而是关键时候不敢押上工作流。比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;今天能跑，明天不稳&lt;/li&gt;
&lt;li&gt;今天顺滑，明天额度焦虑&lt;/li&gt;
&lt;li&gt;明明付费了，但关键时刻还是不敢依赖&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以未来平台真正能卖出高价的，可能不是“更多炫技能力”，而是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;更稳定的负载承诺&lt;/li&gt;
&lt;li&gt;更清晰的限额边界&lt;/li&gt;
&lt;li&gt;更低焦虑的可用性&lt;/li&gt;
&lt;li&gt;更少突发策略波动&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;某种意义上，AI 编程产品正在从“惊艳型消费软件”变成“可靠型基础设施软件”。&lt;/p&gt;
&lt;p&gt;而基础设施最贵的，从来不是功能，而是确定性。&lt;/p&gt;
&lt;h3 id=&#34;4-从统一套餐走向多条产品线并存&#34;&gt;4. 从统一套餐走向多条产品线并存
&lt;/h3&gt;&lt;p&gt;最后一个趋势是，平台可能不会只在一个套餐里做加减法，而是直接拆出不同产品线。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;聊天型 Claude / ChatGPT&lt;/li&gt;
&lt;li&gt;编程型 Claude Code / Codex&lt;/li&gt;
&lt;li&gt;团队型 workspace agents / cowork&lt;/li&gt;
&lt;li&gt;自动化型 routines / tasks / workflows&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这会让定价结构更复杂，但也更合理。&lt;/p&gt;
&lt;p&gt;因为这几类产品虽然底层都调用模型，但它们消耗的其实不是同一种商业资源。&lt;/p&gt;
&lt;p&gt;如果继续硬塞在同一套价格体系里，只会反复制造今天这种争议。&lt;/p&gt;
&lt;h2 id=&#34;五claudecodexcursor-接下来会怎么分化&#34;&gt;五、Claude、Codex、Cursor 接下来会怎么分化？
&lt;/h2&gt;&lt;p&gt;这次事件之所以重要，不只是因为它和 Anthropic 有关，而是因为它几乎提前暴露了整个 AI 编程赛道接下来会如何分化。&lt;/p&gt;
&lt;h3 id=&#34;1-claude-code继续往高负载代理走&#34;&gt;1. Claude Code：继续往“高负载代理”走
&lt;/h3&gt;&lt;p&gt;Claude Code 最大的特点，不是它能写代码，而是它越来越像一个真正接近生产流程的执行代理。&lt;/p&gt;
&lt;p&gt;这条路线的代价就是贵。&lt;/p&gt;
&lt;p&gt;一旦继续往这个方向走，Anthropic 必然会面对两个问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如何保护核心重度用户体验&lt;/li&gt;
&lt;li&gt;如何不让大量轻度用户被复杂的定价逻辑劝退&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以它未来最像的是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;高能力、高负载、高价值用户导向的编程代理产品。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;2-codex更适合往组织系统里嵌&#34;&gt;2. Codex：更适合往组织系统里嵌
&lt;/h3&gt;&lt;p&gt;OpenAI 最近把 Codex 推向 workspace agents，本质上说明它正在尝试避开“单个超级编程代理”的正面消耗战，而转向“组织级工作系统”。&lt;/p&gt;
&lt;p&gt;也就是说，OpenAI 可能不会只卖给你一个会写代码的工具，而是卖给团队一个可共享、可治理、可接流程的工作系统。&lt;/p&gt;
&lt;p&gt;这条路的优势是更容易进入企业预算，劣势是产品个体魅力不一定像 Claude Code 那么强。&lt;/p&gt;
&lt;h3 id=&#34;3-cursor更可能卖效率界面--训练资源结果&#34;&gt;3. Cursor：更可能卖“效率界面 + 训练资源结果”
&lt;/h3&gt;&lt;p&gt;Cursor 的问题一直不是产品不好，而是它到底是 IDE、模型公司、还是 AI 工作流平台。&lt;/p&gt;
&lt;p&gt;而 SpaceX 这笔交易释放的信号很明确：Cursor 不想只做一个“界面层产品”，它也在往更深的模型与训练资源能力上走。&lt;/p&gt;
&lt;p&gt;如果这条路走通，它未来卖的就不只是“更好用的编辑器”，而是“更高效承接 AI 编程工作的完整环境”。&lt;/p&gt;
&lt;p&gt;所以三家的分化很可能会越来越清楚。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude：高强度执行代理&lt;/li&gt;
&lt;li&gt;Codex：组织级工作系统&lt;/li&gt;
&lt;li&gt;Cursor：效率入口 + 模型能力上探&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这也意味着，AI 编程赛道未来的竞争，不会只是“谁写代码更强”，而是“谁代表了不同层级的生产关系”。&lt;/p&gt;
&lt;h2 id=&#34;六对开发者来说这次信号真正意味着什么&#34;&gt;六、对开发者来说，这次信号真正意味着什么？
&lt;/h2&gt;&lt;p&gt;如果你是普通用户，这件事看起来像产品方一次让人不舒服的试探。&lt;/p&gt;
&lt;p&gt;但如果你是重度开发者、独立开发者，或者正在把 AI 编程纳入核心工作流，这件事的意义更实际。&lt;/p&gt;
&lt;h3 id=&#34;1-不要再把-ai-编程工具当成免费升级版聊天框&#34;&gt;1. 不要再把 AI 编程工具当成“免费升级版聊天框”
&lt;/h3&gt;&lt;p&gt;它们正在变成真正的生产工具。&lt;/p&gt;
&lt;p&gt;而一旦是生产工具，就一定会面对：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;价格分层&lt;/li&gt;
&lt;li&gt;用量边界&lt;/li&gt;
&lt;li&gt;权益调整&lt;/li&gt;
&lt;li&gt;资源优先级&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是说，未来你不能只问“它强不强”，还要问：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;我适合哪种负载档位&lt;/li&gt;
&lt;li&gt;我的工作流会不会被定价结构卡住&lt;/li&gt;
&lt;li&gt;我有没有备用路线&lt;/li&gt;
&lt;li&gt;我对平台单点依赖是不是太重了&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2-真正值钱的能力不再只是会不会用而是会不会设计工作负载&#34;&gt;2. 真正值钱的能力，不再只是会不会用，而是会不会设计工作负载
&lt;/h3&gt;&lt;p&gt;AI 编程时代，一个新的能力正在出现：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;不是让工具替你做更多，而是你要学会怎么设计任务，才能让它在可承受成本内做对更多。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这其实有点像云时代的架构意识。&lt;/p&gt;
&lt;p&gt;谁更懂得：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;哪些任务值得交给 AI&lt;/li&gt;
&lt;li&gt;哪些任务必须人工把关&lt;/li&gt;
&lt;li&gt;哪些任务应该拆小&lt;/li&gt;
&lt;li&gt;哪些任务要控制上下文长度&lt;/li&gt;
&lt;li&gt;哪些任务可以复用模板和工作流&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;谁就更不容易被未来的定价变化打乱节奏。&lt;/p&gt;
&lt;h3 id=&#34;3-平台依赖会成为新的风险点&#34;&gt;3. 平台依赖会成为新的风险点
&lt;/h3&gt;&lt;p&gt;这次风波也提醒了一件事：&lt;/p&gt;
&lt;p&gt;当一个 AI 工具足够好用时，人会很自然地把工作流押上去。&lt;/p&gt;
&lt;p&gt;但一旦平台开始改价格、改策略、改权益，你就会发现，自己依赖的可能不只是一个工具，而是一整套工作方式。&lt;/p&gt;
&lt;p&gt;所以从现在开始，更稳妥的做法可能不是“只押注最强工具”，而是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;主力工具要有&lt;/li&gt;
&lt;li&gt;替代路径也要有&lt;/li&gt;
&lt;li&gt;工作流不要只依赖单一平台的单一套餐逻辑&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这不是悲观，而是成熟使用 AI 工具的人迟早要补上的一课。&lt;/p&gt;
&lt;h2 id=&#34;写在最后&#34;&gt;写在最后
&lt;/h2&gt;&lt;p&gt;Claude Code 从 Pro 页面短暂消失，看起来像一场几小时就过去的小风波。&lt;/p&gt;
&lt;p&gt;但很多真正重要的行业变化，一开始就是这样冒头的：不是正式发布，不是高调宣布，而是一次让用户不安的小测试。&lt;/p&gt;
&lt;p&gt;这次事件最值得记住的，不是 Anthropic 有没有真的想涨价，也不是它最终会不会把 Claude Code 单独拆出来卖。&lt;/p&gt;
&lt;p&gt;真正值得记住的是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AI 编程代理已经走到一个新阶段了。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在这个阶段，平台卖的已经不再只是“更强模型”，而是“持续工作能力”。&lt;/p&gt;
&lt;p&gt;而一旦卖的是工作能力，原来的订阅逻辑、用户分层和商业结构就都要跟着改。&lt;/p&gt;
&lt;p&gt;所以这次争议不是一个例外。&lt;/p&gt;
&lt;p&gt;它更像是未来一轮变化的预告片。&lt;/p&gt;
&lt;p&gt;过去我们买的是“和 AI 聊天的权限”。&lt;/p&gt;
&lt;p&gt;接下来我们买的，可能会越来越像是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;让 AI 替你持续工作的能力配额。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;而这，才是 Claude Code 这次风波真正释放出的信号。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;原文来源&#34;&gt;原文来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://arstechnica.com/ai/2026/04/anthropic-tested-removing-claude-code-from-the-pro-plan/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic tested removing Claude Code from the Pro plan&lt;/a&gt; — Ars Technica，2026-04-22&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.businessinsider.com/anthropic-claude-code-price-confusion-sam-altman-2026-4&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic&amp;rsquo;s Claude Code pricing pain is Sam Altman&amp;rsquo;s pleasure&lt;/a&gt; — Business Insider，2026-04-22&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://36kr.com/p/3777836165223426&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;今天，Anthropic偷偷移除了Pro用户的Claude Code访问权&lt;/a&gt; — 36氪，2026-04-22&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/ClaudeAI/comments/1ss8h1x/an_open_letter_to_anthropic/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;An open letter to Anthropic&lt;/a&gt; — Reddit / r/ClaudeAI，2026-04-22&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;扩展阅读&#34;&gt;扩展阅读
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.ccino.org/claude-code-reputation-inflection-point-2026/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Code 进入”口碑拐点”：为什么最强 AI 编程工具开始被用户吐槽？&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.ccino.org/openai-chasing-claude-code/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI 追赶 Claude Code：AI 行业老大为何在编程领域掉队？&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.ccino.org/claude-code-ai-programming-operating-system/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Code 不只是写代码：它正在变成 AI 编程操作系统&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Kimi K2.6 开源突袭：300 个 Agent，正在正面冲击 Claude 工作流</title>
        <link>https://blog.ccino.org/p/kimi-k2-6-agent-workflow-competition-2026/</link>
        <pubDate>Tue, 21 Apr 2026 09:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/kimi-k2-6-agent-workflow-competition-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/kimi-k2-6-agent-workflow-competition-2026/imgs/cover.png" alt="Featured image of post Kimi K2.6 开源突袭：300 个 Agent，正在正面冲击 Claude 工作流" /&gt;&lt;p&gt;先说明一下信息边界：这篇文章基于 4 月 21 日前后公开可见的新闻报道、社交平台讨论，以及社区对 Kimi K2.6 的初步解读来展开。关于“300 个 Agent”“更强代码能力”“对 Claude 工作流形成冲击”这些说法，目前大多来自官方发布、媒体转述和早期体验者讨论，很多结论还处在快速发酵期，所以这篇文章更适合看作一次&lt;strong&gt;趋势分析&lt;/strong&gt;，而不是对产品能力的最终裁决。&lt;/p&gt;
&lt;p&gt;但即便如此，我还是认为，这次 Kimi K2.6 值得认真看。&lt;/p&gt;
&lt;p&gt;因为它释放出的信号，已经不只是“中文大模型又更新了”，而是另一件更大的事：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;开源模型的竞争重心，正在从“谁的 benchmark 更高”转向“谁能定义下一代 AI 工作流”。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这才是 Kimi K2.6 真正危险的地方。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/kimi-k2-6-agent-workflow-competition-2026/imgs/workflow-competition.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/kimi-k2-6-agent-workflow-competition-2026/imgs/workflow-competition_hu_dc98307fa163b0f1.png 480w, https://blog.ccino.org/p/kimi-k2-6-agent-workflow-competition-2026/imgs/workflow-competition_hu_5bd777bcef499445.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;开源模型从 benchmark 竞争走向工作流竞争&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;一kimi-k26-这次更新重点根本不是又变强了&#34;&gt;一、Kimi K2.6 这次更新，重点根本不是“又变强了”
&lt;/h2&gt;&lt;p&gt;如果只看新闻标题，你会以为这是一个熟悉的故事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;模型升级了&lt;/li&gt;
&lt;li&gt;参数更大了&lt;/li&gt;
&lt;li&gt;编码更强了&lt;/li&gt;
&lt;li&gt;Agent 能力更好了&lt;/li&gt;
&lt;li&gt;又开始对标 Claude 和 GPT 了&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些都对，但也都不够。&lt;/p&gt;
&lt;p&gt;这次 Kimi K2.6 最关键的变化，不是单点能力，而是它试图把几件过去分散的事情打包成一个新的叙事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;开源 / open-weight&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码能力更强&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;适合 Agent 场景&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;支持大规模并行协作&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;试图进入真实工作流，而不是只停留在 demo 和 benchmark&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这意味着它要竞争的对象，不再只是一个聊天框里的 Claude 或 GPT。&lt;/p&gt;
&lt;p&gt;它真正想切进去的，是今天最有价值的那层市场：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude Code 代表的 AI 编程工作流&lt;/li&gt;
&lt;li&gt;OpenClaw 代表的 CLI Agent 路线&lt;/li&gt;
&lt;li&gt;多 Agent 协作工具代表的自动化生产链&lt;/li&gt;
&lt;li&gt;以及所有“从一个 prompt 走向一条任务流水线”的 AI 执行层产品&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;换句话说，&lt;strong&gt;Kimi K2.6 不是在抢模型榜单，而是在抢“AI 到底怎么干活”的定义权。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;二为什么开源--agent--长任务比-benchmark-更重要&#34;&gt;二、为什么“开源 + Agent + 长任务”比 benchmark 更重要？
&lt;/h2&gt;&lt;p&gt;过去一年，大模型圈最容易引发讨论的，是各种分数：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;谁代码 benchmark 更高&lt;/li&gt;
&lt;li&gt;谁数学更强&lt;/li&gt;
&lt;li&gt;谁上下文更长&lt;/li&gt;
&lt;li&gt;谁推理效果更稳&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些指标当然重要，但它们有一个共同问题：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;它们更像能力证明，不像生产关系证明。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;什么意思？&lt;/p&gt;
&lt;p&gt;就是说，一个模型很强，并不自动等于它能改变真实工作流。真正决定市场归属的，不是“模型能不能回答对”，而是“模型能不能被接进一条可持续、可复用、可扩展的执行链路里”。&lt;/p&gt;
&lt;p&gt;这正是 Kimi K2.6 这次最值得警惕的地方。&lt;/p&gt;
&lt;p&gt;如果一个模型同时具备下面几个特征：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;足够好的代码能力&lt;/li&gt;
&lt;li&gt;足够低的使用成本&lt;/li&gt;
&lt;li&gt;足够开放的接入方式&lt;/li&gt;
&lt;li&gt;足够强的 Agent 编排支持&lt;/li&gt;
&lt;li&gt;足够长的任务执行能力&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;那它对市场的冲击就不再是“替代某次问答”，而是可能替代一整套使用习惯。&lt;/p&gt;
&lt;p&gt;过去大家选 Claude Code，很多时候不是因为 Claude 在所有维度都绝对最强，而是因为它提供了一种非常顺滑的工作方式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在终端里直接操作&lt;/li&gt;
&lt;li&gt;能读写文件&lt;/li&gt;
&lt;li&gt;能连续执行&lt;/li&gt;
&lt;li&gt;能把一个大任务拆成多个步骤&lt;/li&gt;
&lt;li&gt;能在真实环境里和代码库互动&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;你会发现，这里面真正有价值的东西，不只是模型智商，而是&lt;strong&gt;模型与工作流的耦合方式&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;现在 Kimi K2.6 把“开源 + Agent + 大规模并行协作”放到台面上，等于是在说：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;你们以为竞争已经进入产品层了？&lt;br&gt;
不，竞争才刚刚从模型层爬到工作流层。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;三它真正威胁到的不是-claude-本身而是-claude-的整套生产方式&#34;&gt;三、它真正威胁到的，不是 Claude 本身，而是 Claude 的“整套生产方式”
&lt;/h2&gt;&lt;p&gt;很多人看这类消息，会下意识问一句：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Kimi K2.6 能打得过 Claude 吗？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这个问题问得太早，也太窄了。&lt;/p&gt;
&lt;p&gt;更准确的问题应该是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Kimi K2.6 能不能削弱 Claude 工作流的护城河？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;因为今天像 Claude Code 这样的产品，最强的地方已经不是“单次回答多聪明”，而是它形成了一种完整的用户心智：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用终端而不是网页&lt;/li&gt;
&lt;li&gt;用任务而不是对话&lt;/li&gt;
&lt;li&gt;用多步执行而不是一次性问答&lt;/li&gt;
&lt;li&gt;用真实文件系统而不是纯文本世界&lt;/li&gt;
&lt;li&gt;用一条工作流来替代多个工具切换&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这套心智一旦形成，用户迁移成本就会越来越高。&lt;/p&gt;
&lt;p&gt;而开源模型一旦要切进来，最有效的方法并不是证明“我更聪明”，而是证明：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;我也能跑这套工作流&lt;/li&gt;
&lt;li&gt;我更便宜&lt;/li&gt;
&lt;li&gt;我更开放&lt;/li&gt;
&lt;li&gt;我还能支持更多自定义 Agent 玩法&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这也是为什么社区对 Kimi K2.6 的讨论，迅速从“模型能力”滑向了“工具生态”：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ollama 能不能接？&lt;/li&gt;
&lt;li&gt;OpenClaw 能不能跑？&lt;/li&gt;
&lt;li&gt;Hermes Agent 能不能用？&lt;/li&gt;
&lt;li&gt;多 Agent 编排会不会更适合它？&lt;/li&gt;
&lt;li&gt;本地 / 半本地部署有没有可能？&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一旦讨论从“好不好”变成“怎么接”，事情就变了。&lt;/p&gt;
&lt;p&gt;因为这说明，用户已经不再把它看成一个需要围观的模型，而开始把它看成一个可以接入生产环境的零件。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;四为什么这件事对-claude-code-特别敏感&#34;&gt;四、为什么这件事对 Claude Code 特别敏感？
&lt;/h2&gt;&lt;p&gt;因为 Claude Code 所处的位置，正好是这一轮竞争最脆弱、也最关键的交汇点。&lt;/p&gt;
&lt;p&gt;它代表的是一种非常先进的 AI 编程范式，但它也天然带着几个限制：&lt;/p&gt;
&lt;h3 id=&#34;1-成本问题&#34;&gt;1. 成本问题
&lt;/h3&gt;&lt;p&gt;只要工作流足够长、上下文足够重、任务足够复杂，成本问题迟早会被放大。&lt;/p&gt;
&lt;p&gt;这也是为什么最近社区一边高度认可 Claude 的能力，一边又在不断讨论 token 消耗、长任务价格、模型切换、上下文开销。&lt;/p&gt;
&lt;p&gt;如果 Kimi K2.6 这类开源模型，能在“70%~85% 的实际效果”上做到“远低于闭源模型的成本”，那它就不需要全面打赢 Claude，也足以切走大量中长尾场景。&lt;/p&gt;
&lt;h3 id=&#34;2-可控性问题&#34;&gt;2. 可控性问题
&lt;/h3&gt;&lt;p&gt;闭源工作流产品的优势是开箱即用，劣势也是开箱即用。&lt;/p&gt;
&lt;p&gt;你省掉了大量配置成本，但也被平台边界锁住了。而开源模型一旦能力跨过某个门槛，就会在这类场景里爆发优势：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;能自己改&lt;/li&gt;
&lt;li&gt;能自己接&lt;/li&gt;
&lt;li&gt;能自己调度&lt;/li&gt;
&lt;li&gt;能自己编排多 Agent&lt;/li&gt;
&lt;li&gt;能按自己的工作方式重写工具链&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对高级开发者和独立开发者来说，这种自由度非常有吸引力。&lt;/p&gt;
&lt;h3 id=&#34;3-生态外溢问题&#34;&gt;3. 生态外溢问题
&lt;/h3&gt;&lt;p&gt;Claude Code 最强的一点，是它把模型和操作环境绑定得很好。但一旦开源模型也被快速接入 CLI、IDE、Agent 框架、本地推理工具和自动化平台，那么竞争就不再是“单产品对单产品”，而是变成：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;一个封闭但优秀的工作流产品&lt;/strong&gt;&lt;br&gt;
对上&lt;br&gt;
&lt;strong&gt;一个不断外溢、不断被社区拼装的开源生态。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;历史上很多技术转折都发生在这一刻：&lt;/p&gt;
&lt;p&gt;不是最强的单体输给了更强的单体，而是封闭系统输给了一个“够强 + 足够开放 + 增长更快”的生态组合。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;五kimiqwenclaude-codeopenclaw正在形成新的四角竞争&#34;&gt;五、Kimi、Qwen、Claude Code、OpenClaw，正在形成新的四角竞争
&lt;/h2&gt;&lt;p&gt;如果把最近几个月的变化放在一起看，会更清楚。&lt;/p&gt;
&lt;h3 id=&#34;第一类闭源高体验路线&#34;&gt;第一类：闭源高体验路线
&lt;/h3&gt;&lt;p&gt;代表是 Claude Code。&lt;/p&gt;
&lt;p&gt;特点是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;产品完整&lt;/li&gt;
&lt;li&gt;体验顺滑&lt;/li&gt;
&lt;li&gt;任务感强&lt;/li&gt;
&lt;li&gt;很适合真实编程场景&lt;/li&gt;
&lt;li&gt;上手门槛低，但成本和边界较固定&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;第二类开源模型平台路线&#34;&gt;第二类：开源模型平台路线
&lt;/h3&gt;&lt;p&gt;代表是 Qwen、Kimi 这一类持续增强的开源 / 开权重模型。&lt;/p&gt;
&lt;p&gt;特点是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;速度快&lt;/li&gt;
&lt;li&gt;成本低&lt;/li&gt;
&lt;li&gt;可接入性强&lt;/li&gt;
&lt;li&gt;容易成为“底层引擎”&lt;/li&gt;
&lt;li&gt;更适合被工具生态二次封装&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;第三类开源-agent--cli-路线&#34;&gt;第三类：开源 Agent / CLI 路线
&lt;/h3&gt;&lt;p&gt;代表是 OpenClaw 一类工具。&lt;/p&gt;
&lt;p&gt;特点是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;更接近极客工作流&lt;/li&gt;
&lt;li&gt;组合自由度高&lt;/li&gt;
&lt;li&gt;能快速吸收各种开源模型&lt;/li&gt;
&lt;li&gt;会不断尝试替代闭源产品的“执行层价值”&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;第四类多-agent-编排路线&#34;&gt;第四类：多 Agent 编排路线
&lt;/h3&gt;&lt;p&gt;代表是各种 Agent Teams、自动化编排框架、任务分发系统。&lt;/p&gt;
&lt;p&gt;特点是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不强调单模型多强&lt;/li&gt;
&lt;li&gt;强调拆解、分工、并发和流程稳定性&lt;/li&gt;
&lt;li&gt;更像是在搭建“AI 组织结构”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;从这个角度看，Kimi K2.6 的出现很微妙。&lt;/p&gt;
&lt;p&gt;它并不是单独落在某一个角里，而是同时试图吃到其中两层红利：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;作为模型本身，去和 Claude / GPT 竞争&lt;/li&gt;
&lt;li&gt;作为 Agent 底座，去和 OpenClaw / 多 Agent 框架结合&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这就让它的战略价值，远大于一次普通版本更新。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/kimi-k2-6-agent-workflow-competition-2026/imgs/agent-swarm.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/kimi-k2-6-agent-workflow-competition-2026/imgs/agent-swarm_hu_cbfa8b5739208b09.png 480w, https://blog.ccino.org/p/kimi-k2-6-agent-workflow-competition-2026/imgs/agent-swarm_hu_92b2558d2fa51fcd.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Kimi K2.6 所代表的并行 Agent 协作与长任务执行能力&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;六这对中文开发者尤其重要&#34;&gt;六、这对中文开发者尤其重要
&lt;/h2&gt;&lt;p&gt;为什么这条新闻在中文圈更值得写？&lt;/p&gt;
&lt;p&gt;因为很多全球模型新闻，对中文用户来说往往有一个天然距离感：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;看得懂，但用不深&lt;/li&gt;
&lt;li&gt;讨论得到，但接不进自己的工作流&lt;/li&gt;
&lt;li&gt;知道它强，但未必适合本地环境&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;而 Kimi K2.6 不一样。&lt;/p&gt;
&lt;p&gt;它天然更容易触发中文开发者的几个敏感点：&lt;/p&gt;
&lt;h3 id=&#34;1-接近性更强&#34;&gt;1. 接近性更强
&lt;/h3&gt;&lt;p&gt;它不是一个只能围观的海外产品，而是一个更可能真正被拿来试、被接入、被部署、被改造的模型。&lt;/p&gt;
&lt;h3 id=&#34;2-心理门槛更低&#34;&gt;2. 心理门槛更低
&lt;/h3&gt;&lt;p&gt;很多开发者对开源模型的最大兴趣，不是“我要替代所有闭源模型”，而是“我能不能先把某些场景自己掌控起来”。&lt;/p&gt;
&lt;p&gt;只要这个切口出现，生态就会长得很快。&lt;/p&gt;
&lt;h3 id=&#34;3-能与现有工具链自然拼接&#34;&gt;3. 能与现有工具链自然拼接
&lt;/h3&gt;&lt;p&gt;不管是本地部署、半本地推理、CLI 工具、Agent 框架，还是内容工作流、代码工作流，中文开发者都更容易把这类模型当成“可组装零件”，而不是“只能消费的成品”。&lt;/p&gt;
&lt;p&gt;这也是为什么 Kimi K2.6 的意义，不只在于它是不是足够强，而在于它可能成为很多中文开发者第一次真正“把开源大模型接进生产链”的入口。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;七真正值得警惕的不是-kimi-变强而是工作流战争正式开始了&#34;&gt;七、真正值得警惕的，不是 Kimi 变强，而是“工作流战争”正式开始了
&lt;/h2&gt;&lt;p&gt;过去一段时间，很多人还把 AI 竞争理解成这样：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OpenAI 发一个新模型&lt;/li&gt;
&lt;li&gt;Anthropic 发一个新模型&lt;/li&gt;
&lt;li&gt;Google 再补一个新模型&lt;/li&gt;
&lt;li&gt;大家比谁更强&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但这套理解正在过时。&lt;/p&gt;
&lt;p&gt;因为今天更关键的问题已经变成：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;谁能占住开发者的日常入口？&lt;/li&gt;
&lt;li&gt;谁能成为 Agent 的默认底座？&lt;/li&gt;
&lt;li&gt;谁能接进 CLI / IDE / 自动化流水线？&lt;/li&gt;
&lt;li&gt;谁能让用户形成长期依赖的工作方式？&lt;/li&gt;
&lt;li&gt;谁能把模型能力转化为“组织效率”？&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一旦竞争进入这一层，赢家就不再只属于“最聪明的模型”。&lt;/p&gt;
&lt;p&gt;它会属于那个&lt;strong&gt;最容易被接进真实世界、最容易形成生态复利、最容易成为别人工作流基础设施&lt;/strong&gt;的一方。&lt;/p&gt;
&lt;p&gt;从这个意义上说，Kimi K2.6 的最大威胁，不是今天立刻替掉 Claude。&lt;/p&gt;
&lt;p&gt;而是它让越来越多人开始认真思考一件事：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;如果开源模型也能支撑复杂 Agent 工作流，&lt;br&gt;
那我为什么还要把整个生产方式绑定在单一闭源平台上？&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;这才是真正让人紧张的问题。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;八最后的判断这不是一次模型更新这是一次阵地前移&#34;&gt;八、最后的判断：这不是一次模型更新，这是一次阵地前移
&lt;/h2&gt;&lt;p&gt;所以怎么定义 Kimi K2.6 这次发布？&lt;/p&gt;
&lt;p&gt;我的判断是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;它不是一次普通的模型升级，而是开源阵营向“工作流层”发起的一次阵地前移。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;它暂时未必能完全替代 Claude Code。它也未必立刻改变主流开发者的选择。但它已经把竞争从“谁回答更好”推进到了“谁更适合承载未来的 Agent 生产方式”。&lt;/p&gt;
&lt;p&gt;这是一个性质完全不同的阶段。&lt;/p&gt;
&lt;p&gt;接下来真正值得关注的，不只是 Kimi 自己的效果，而是三件事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;它会不会迅速被接入更多 Agent 工具链&lt;/li&gt;
&lt;li&gt;社区会不会围绕它长出一批实用工作流模板&lt;/li&gt;
&lt;li&gt;用户会不会开始把它当成 Claude 工作流的平替底座，而不是备用模型&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果这三件事里有两件发生，Kimi K2.6 的意义就已经成立了。&lt;/p&gt;
&lt;p&gt;到那时，它挑战的就不是某个模型排名，而是今天整套 AI 编程工作流的权力结构。&lt;/p&gt;
&lt;p&gt;而这，才是这条新闻真正值得写的原因。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://36kr.com/newsflashes/3775335514407685?f=rss&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;36氪：Kimi K2.6 发布并开源代码及Agent&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://siliconangle.com/2026/04/20/moonshot-ai-releases-kimi-k2-6-model-1t-parameters-attention-optimizations/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SiliconANGLE: Moonshot AI releases Kimi-K2.6&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://the-decoder.com/open-weight-kimi-k2-6-takes-on-gpt-5-4-and-claude-opus-4-6-with-agent-swarms/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;The Decoder: Open-weight Kimi K2.6 takes on GPT-5.4 and Claude Opus 4.6 with agent swarms&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/ollama/status/2046361868076487155&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;X: @ollama on Kimi K2.6&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=tz_Cp3Go9AA&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;YouTube: Kimi K2.6: NEW Open Source Model BEATS Claude &amp;amp; GPT-5.4!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/Futurology/comments/1siea6z/silicon_valley_is_quietly_running_on_chinese_open/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reddit: Silicon Valley is quietly running on Chinese open source models&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Canva AI 2.0 发布：设计工具开始吞掉工作流软件</title>
        <link>https://blog.ccino.org/p/canva-ai-2-workflow-software-2026/</link>
        <pubDate>Mon, 20 Apr 2026 21:30:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/canva-ai-2-workflow-software-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/canva-ai-2-workflow-software-2026/imgs/cover.png" alt="Featured image of post Canva AI 2.0 发布：设计工具开始吞掉工作流软件" /&gt;&lt;p&gt;今天看到 Canva AI 2.0 的几轮报道时，我的第一反应不是“Canva 又加了几个 AI 按钮”，而是：&lt;strong&gt;设计工具这一类产品，终于开始正面吞并工作流软件了。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这是这个系列的第三篇文章。前两篇分别是第一篇《&lt;a class=&#34;link&#34; href=&#34;https://blog.ccino.org/p/canva-claude-design-pipeline-2026/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Design × Canva × Claude Code：从一句话到上线产品，设计开发流水线实操指南&lt;/a&gt;》和第二篇《&lt;a class=&#34;link&#34; href=&#34;https://blog.ccino.org/p/claude-design-figma-stock-drop-2026/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Design 让 Figma 一夜蒸发 70 亿美元：设计工具的真正危机，不是 AI 会画图&lt;/a&gt;》。如果前两篇讨论的是“从一句话到设计、再到代码”的新流水线，以及 Claude Design 为什么会直接冲击 Figma，那么这一篇要回答的问题是：&lt;strong&gt;当设计工具开始把自动化、连接器和后台任务也一起吃进去时，它的边界会扩张到哪里。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这篇文章主要基于今天的媒体报道与社交平台讨论展开，包括 MarTech Cube、Marketech APAC、YouTube 演示视频，以及 X 上的行业账号解读。它们更适合帮助我们判断 Canva 正在强调什么方向，但并不等于已经替代官方完整产品文档，所以文中的判断重点放在产品趋势，而不是对每个功能细节做无保留背书。&lt;/p&gt;
&lt;p&gt;按这些来源的描述，Canva AI 2.0 这次升级的重点包括对话式设计、工作流自动化、应用连接器，以及让任务在后台持续运行的能力。再结合今天社交平台上的讨论，一个更清晰的方向已经浮出来了——Canva 不想继续只做一个“帮你把图做得更快一点”的工具，它想把自己变成内容工作真正开始的地方。&lt;/p&gt;
&lt;p&gt;这件事值得写，不是因为 Canva 做了 AI，而是因为它代表了一种产品边界的变化：&lt;strong&gt;过去一个团队要在文案、设计、协作、排版、发布之间来回切换；现在，平台开始尝试把这些动作压缩进同一个界面、同一轮对话、同一条链路。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;这次升级真正重要的不是会生成图&#34;&gt;这次升级，真正重要的不是“会生成图”
&lt;/h2&gt;&lt;p&gt;如果只看表面，Canva AI 2.0 很容易被理解成又一次常规 AI 升级：输入一句话，生成设计稿；改几句指令，自动调整版式；顺手再补一段文案。&lt;/p&gt;
&lt;p&gt;但这些功能本身并不新鲜。&lt;/p&gt;
&lt;p&gt;真正重要的是，Canva 想解决的问题已经变了。&lt;/p&gt;
&lt;p&gt;以前的设计软件解决的是“怎么做出一个更像样的作品”；现在 Canva 试图解决的是“怎么把一段模糊需求，直接推到可交付结果”。这两个问题听起来只差一点，实际上中间隔着一整层产品逻辑。&lt;/p&gt;
&lt;p&gt;前者卖的是工具效率，后者卖的是工作入口。&lt;/p&gt;
&lt;p&gt;这也是为什么这次更新里，“对话式设计”反而不是最值得关注的点。它更像是一个界面层的变化，真正可怕的是背后那套组合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你可以从一句自然语言开始，而不是从空白画布开始&lt;/li&gt;
&lt;li&gt;你可以把多个步骤串起来，而不是一个功能一个功能点&lt;/li&gt;
&lt;li&gt;你可以连接别的工具，而不是只在 Canva 里孤立完成设计&lt;/li&gt;
&lt;li&gt;你可以让任务在后台继续跑，而不是每一步都等人手动确认&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;当这些能力放在一起，Canva 的角色就不再是“设计阶段里的一个工具”，而更像是“内容工作流里的调度台”。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/canva-ai-2-workflow-software-2026/imgs/workflow-comparison.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/canva-ai-2-workflow-software-2026/imgs/workflow-comparison_hu_ed5a166f5b9ac049.png 480w, https://blog.ccino.org/p/canva-ai-2-workflow-software-2026/imgs/workflow-comparison_hu_2d94dfd8e0813b94.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;从工具分散到工作流整合&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;设计工具为什么会开始吞工作流软件&#34;&gt;设计工具，为什么会开始吞工作流软件？
&lt;/h2&gt;&lt;p&gt;因为工作本来就不是按软件分类发生的。&lt;/p&gt;
&lt;p&gt;一个真实的内容团队，做一篇文章、一套海报、一页活动落地页，从来不是线性的“先写文案，再做设计，再导出发布”。真实情况是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先在聊天窗口里整理想法&lt;/li&gt;
&lt;li&gt;去文档里搭结构&lt;/li&gt;
&lt;li&gt;去设计工具里找模板&lt;/li&gt;
&lt;li&gt;到协作工具里给别人评审&lt;/li&gt;
&lt;li&gt;回来改文字和版式&lt;/li&gt;
&lt;li&gt;再把成品丢到发布系统里&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;中间每一次切换，都会丢上下文。文案和设计脱节，设计和发布脱节，最后变成整个团队都在做“翻译工作”。&lt;/p&gt;
&lt;p&gt;这也是过去几年很多 SaaS 的基本逻辑：每个环节都做一个小而美的工具，然后靠集成把它们勉强连起来。&lt;/p&gt;
&lt;p&gt;但 AI 的出现改了这件事。&lt;/p&gt;
&lt;p&gt;因为 AI 最擅长的，不只是生成内容，而是处理“跨步骤的上下文”。一旦产品能理解你现在在做什么、上一步做了什么、下一步大概率要去哪里，它就有机会把多个环节揉成一个连续动作。&lt;/p&gt;
&lt;p&gt;所以今天最危险的，不是某个设计功能被替代，而是&lt;strong&gt;原来靠“工具分工”维持的产品边界，正在被一条对话式工作流抹平。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;canva-为什么有机会做这件事&#34;&gt;Canva 为什么有机会做这件事？
&lt;/h2&gt;&lt;p&gt;因为它天生就在一个很微妙的位置上。&lt;/p&gt;
&lt;p&gt;它不像 Figma 那样过于偏专业设计，也不像 Notion 那样更偏文档和知识管理。Canva 多年来服务的是一个更宽的群体：内容团队、运营、市场、小公司、教育场景、个人创作者。这群用户的共同特点不是“设计能力强”，而是“需要频繁产出内容，而且不想被专业工具门槛卡住”。&lt;/p&gt;
&lt;p&gt;换句话说，Canva 离“真正的内容生产现场”更近。&lt;/p&gt;
&lt;p&gt;这让它在进入 AI 时代时有一个天然优势：它不必先说服用户改变工作方式，它只要把原来散在外部的动作，慢慢拉回自己平台里就行。&lt;/p&gt;
&lt;p&gt;这次 Canva AI 2.0 看起来做的正是这件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用对话降低启动门槛&lt;/li&gt;
&lt;li&gt;用自动化减少重复动作&lt;/li&gt;
&lt;li&gt;用连接器把外部信息拉进来&lt;/li&gt;
&lt;li&gt;用后台任务把单次操作变成持续流程&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这四件事加在一起，指向的已经不是“更聪明的设计软件”，而是“更完整的内容生产环境”。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;它会先替代什么不会先替代什么&#34;&gt;它会先替代什么，不会先替代什么
&lt;/h2&gt;&lt;p&gt;如果把这个趋势说得太猛，很容易滑向一句空话：AI 会重构一切。&lt;/p&gt;
&lt;p&gt;更有价值的问题是，Canva AI 2.0 这类产品，&lt;strong&gt;会先替代哪些动作，不会先替代哪些动作。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;我觉得它最先吞掉的，会是这些中间层工作：&lt;/p&gt;
&lt;h3 id=&#34;1-模板式内容生产&#34;&gt;1. 模板式内容生产
&lt;/h3&gt;&lt;p&gt;活动海报、社交媒体配图、演示文稿、内部汇报、招聘图、宣传页，这类需求的共同特点是目标明确、结构相似、速度优先。&lt;/p&gt;
&lt;p&gt;过去这些工作需要人反复在模板、素材、文字和版式之间切换。AI 一旦能读懂目标，就能把中间的大量机械步骤吃掉。&lt;/p&gt;
&lt;h3 id=&#34;2-轻量协作&#34;&gt;2. 轻量协作
&lt;/h3&gt;&lt;p&gt;很多团队并不需要复杂的设计交付链路，他们只需要“做出来、看一下、改一版、发出去”。这类协作如果还能停留在一个平台里完成，阻力会比跨工具低得多。&lt;/p&gt;
&lt;h3 id=&#34;3-内容发布前的整理工作&#34;&gt;3. 内容发布前的整理工作
&lt;/h3&gt;&lt;p&gt;不是最终发布本身，而是发布前那一串准备动作：改尺寸、改格式、补文案、套品牌、导出不同版本。过去这些动作很碎，但很耗人。AI 最适合把这种碎步骤统一编排。&lt;/p&gt;
&lt;p&gt;但它短期内不会真正替代的，也很清楚：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;高审美密度的原创设计&lt;/li&gt;
&lt;li&gt;需要复杂策略判断的品牌表达&lt;/li&gt;
&lt;li&gt;高风险场景下的最终决策&lt;/li&gt;
&lt;li&gt;多角色博弈下的组织协同&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以不要把 Canva AI 2.0 理解成“设计师没用了”。更准确地说，它会先替代的是&lt;strong&gt;大量本来就不值得由高成本专业角色亲自重复完成的工作&lt;/strong&gt;。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;这对内容团队意味着什么&#34;&gt;这对内容团队意味着什么？
&lt;/h2&gt;&lt;p&gt;对很多内容团队来说，最大的变化不是产能变高，而是分工会被重写。&lt;/p&gt;
&lt;p&gt;以前一个团队常见的结构是：策划负责想法，文案负责表达，设计负责视觉，运营负责发布。现在这条链路会越来越像一个连续界面，谁最接近目标结果，谁就更可能直接把事情推到底。&lt;/p&gt;
&lt;p&gt;这会带来两个变化。&lt;/p&gt;
&lt;p&gt;第一，&lt;strong&gt;通才会变得更强。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;一个会写、会判断、会下指令的人，借助 AI 之后能直接完成过去需要多人交接的工作。这里的关键不是“样样精通”，而是能不能把需求描述得足够具体，能不能判断结果够不够好。&lt;/p&gt;
&lt;p&gt;第二，&lt;strong&gt;专业角色的价值会往更高层迁移。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;设计师不会消失，但低价值、重复性强的执行部分会被平台吸走。真正稀缺的会变成审美判断、品牌系统、复杂交互、创意方向，以及在混乱需求里做取舍的能力。&lt;/p&gt;
&lt;p&gt;换句话说，AI 不是把专业价值抹平，而是在把低端执行价值压缩掉。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/canva-ai-2-workflow-software-2026/imgs/team-role-shift.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/canva-ai-2-workflow-software-2026/imgs/team-role-shift_hu_e2e03ca7b5da41a2.png 480w, https://blog.ccino.org/p/canva-ai-2-workflow-software-2026/imgs/team-role-shift_hu_fbfbe5dc63010f17.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;AI 工作流下的团队角色迁移&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;它和-claude-designai-agent-工具不是同一条竞争线&#34;&gt;它和 Claude Design、AI Agent 工具不是同一条竞争线
&lt;/h2&gt;&lt;p&gt;这也是我觉得今天这个题值得写的另一个原因。&lt;/p&gt;
&lt;p&gt;如果把 Canva AI 2.0 简单归类成“又一个 AI 设计产品”，就会低估它。&lt;/p&gt;
&lt;p&gt;像 Claude Design、Claude Code、各种 AI Agent 工具，它们更像是在推动“从想法到原型、从原型到实现”的效率革命；而 Canva 这次更像是在争夺“内容工作从哪里开始、在哪里结束”。&lt;/p&gt;
&lt;p&gt;一个偏向能力突破，一个偏向入口整合。&lt;/p&gt;
&lt;p&gt;前者解决的是“能不能做出来”，后者解决的是“用户愿不愿意一直留在这里做”。&lt;/p&gt;
&lt;p&gt;长期看，后者往往更危险。&lt;/p&gt;
&lt;p&gt;因为真正决定产品护城河的，不只是能力有多强，而是谁占住了最顺手、最不愿离开的工作位置。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;最后一点判断&#34;&gt;最后一点判断
&lt;/h2&gt;&lt;p&gt;我觉得 Canva AI 2.0 释放出来的信号很明确：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;下一轮 AI 产品竞争，拼的不会只是模型能力，而是谁能把一整段工作流吃下来。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;过去我们总把“设计工具”“文档工具”“协作工具”“发布工具”当成不同赛道，是因为人类使用软件时，天然接受了在多个界面之间切换。&lt;/p&gt;
&lt;p&gt;但 AI 正在改变这个前提。既然系统能理解上下文、承接指令、串联动作，那用户就会越来越讨厌重复切换、重复解释、重复搬运。&lt;/p&gt;
&lt;p&gt;谁能先把这些摩擦消灭掉，谁就更可能拿到下一个阶段的入口权。&lt;/p&gt;
&lt;p&gt;所以今天看 Canva AI 2.0，重点不是它又多聪明了一点，而是它更像一个信号：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;设计软件的时代还没结束，但“只做设计软件”的时代，可能真的快结束了。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;系列阅读&#34;&gt;系列阅读
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;第一篇：&lt;a class=&#34;link&#34; href=&#34;https://blog.ccino.org/p/canva-claude-design-pipeline-2026/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Design × Canva × Claude Code：从一句话到上线产品，设计开发流水线实操指南&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;第二篇：&lt;a class=&#34;link&#34; href=&#34;https://blog.ccino.org/p/claude-design-figma-stock-drop-2026/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Design 让 Figma 一夜蒸发 70 亿美元：设计工具的真正危机，不是 AI 会画图&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;第三篇：&lt;a class=&#34;link&#34; href=&#34;https://blog.ccino.org/p/canva-ai-2-workflow-software-2026/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Canva AI 2.0 发布：设计工具开始吞掉工作流软件&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.martechcube.com/canva-unveils-canva-ai-2-0-reimagining-how-the-world-designs-and-works/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Canva Unveils Canva AI 2.0, Reimagining How The World Designs and Works&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://marketech-apac.com/canva-rolls-out-ai-2-0-with-new-conversational-interface-integrated-creative-workflows/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Canva rolls out AI 2.0 with new conversational interface, integrated creative workflows&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://youtube.com/watch?v=9UC7OJYOcpU&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Joseph Conti: @Canva Releases AI 2.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/uctodaynews/status/2046209460008317129&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;UC Today 关于 Canva AI 2.0 的 X 帖子&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Claude Design 刚上线，Figma 为什么先跌了？</title>
        <link>https://blog.ccino.org/p/claude-design-figma-stock-drop-2026/</link>
        <pubDate>Sun, 19 Apr 2026 15:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/claude-design-figma-stock-drop-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/claude-design-figma-stock-drop-2026/imgs/cover.png" alt="Featured image of post Claude Design 刚上线，Figma 为什么先跌了？" /&gt;
    &lt;blockquote&gt;
        &lt;p&gt;本文是 &lt;a class=&#34;link&#34; href=&#34;https://blog.ccino.org/p/canva-claude-design-pipeline-2026/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;《Claude Design × Canva × Claude Code：从一句话到上线产品，设计开发流水线实操指南》&lt;/a&gt; 的续篇。上篇讲怎么用这条流水线，这篇讲它对整个设计工具市场意味着什么。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;Anthropic 发布 Claude Design 的消息还没出圈，Figma 的股价就先跌了 4.26%。&lt;/p&gt;
&lt;p&gt;一天之内，Reddit 上出现了高赞帖子：《Claude Design just launched and Figma dropped 4.26% in a single day》。帖子里，大家不是在讨论 Claude Design 好不好用，而是在讨论：&lt;strong&gt;这个东西上线，意味着什么？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这个问题比&amp;quot;Figma 跌了多少&amp;quot;更值得想透。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;资本惯例先卖后问&#34;&gt;资本惯例：先卖后问
&lt;/h2&gt;&lt;p&gt;Figma 股价单日跌 4.26%，不是因为有人算清楚了 Claude Design 会抢走 Figma 多少用户。&lt;/p&gt;
&lt;p&gt;金融市场的逻辑从来都是这样：&lt;strong&gt;遇到可能重构赛道的新变量，先跌，再看清楚，判断错了再涨回来。&lt;/strong&gt; 等所有信息落地，聪明钱早离场了。&lt;/p&gt;
&lt;p&gt;所以 Figma 这次跌，不是一次理性评估，而是一次风险标记。市场在说：这件事的影响还不确定，但确定的是——设计工具赛道的竞争逻辑，刚刚变了。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;figma-的护城河到底是什么&#34;&gt;Figma 的护城河，到底是什么
&lt;/h2&gt;&lt;p&gt;要理解 Claude Design 为什么让资本紧张，先要理解 Figma 的价值究竟建立在什么上面。&lt;/p&gt;
&lt;p&gt;Figma 的真正护城河不是&amp;quot;画图很顺&amp;quot;，而是以下三层：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第一层：协作飞轮。&lt;/strong&gt; 设计师在里面做稿，产品经理在里面批注，开发者在里面量标注——这个多角色协作流程，让 Figma 成了设计到开发的&amp;quot;标准中间件&amp;quot;。一旦团队绑进去，迁移成本极高。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第二层：专业工具深度。&lt;/strong&gt; Auto Layout、Component Library、Variants、Design System Token——这些功能是专业设计师的生产力核心。它需要学习曲线，但也因此形成了技能护城河：用 Figma 用得好，本身就是一种职业能力。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第三层：生态锁定。&lt;/strong&gt; Figma 周边有几千个插件、模板库、第三方工具，构成了一个完整的设计生态。这种生态锁定，让即便有竞争者出现，用户也很难轻易迁移。&lt;/p&gt;
&lt;p&gt;这三层护城河，每一层都指向同一个关键词：&lt;strong&gt;中间层&lt;/strong&gt;。Figma 是设计意图和代码实现之间的&amp;quot;翻译器&amp;quot;，专业设计语言的载体。&lt;/p&gt;
&lt;p&gt;Claude Design 的威胁，正是从这里开始的。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-design-figma-stock-drop-2026/imgs/figma-moat.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-design-figma-stock-drop-2026/imgs/figma-moat_hu_d7fdb739e79500c7.png 480w, https://blog.ccino.org/p/claude-design-figma-stock-drop-2026/imgs/figma-moat_hu_2288ebdacbe9c677.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Figma 护城河的三层结构&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;claude-design-打的是什么仗&#34;&gt;Claude Design 打的是什么仗
&lt;/h2&gt;&lt;p&gt;Claude Design 不是更好的 Figma。它从根本上提出了一个不同的问题：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&lt;strong&gt;如果自然语言可以直接生成设计系统，为什么还需要一个专门的&amp;quot;设计意图翻译层&amp;quot;？&lt;/strong&gt;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;Figma 存在的前提，是&amp;quot;从需求到设计&amp;quot;这个翻译过程需要人来做——设计师用专业工具把产品需求翻译成视觉语言。&lt;/p&gt;
&lt;p&gt;Claude Design 要做的事情，是让这个翻译过程变成 prompt：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;SaaS 产品落地页，主色深蓝 #1A2B4A，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;目标用户是 B2B 企业，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;需要 Hero、三个功能点、用户案例、价格方案。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;一句话，输出设计系统、网页原型、可交互 demo。&lt;/p&gt;
&lt;p&gt;它不是&amp;quot;AI 版 Figma&amp;quot;，而是&lt;strong&gt;对&amp;quot;为什么需要 Figma&amp;quot;这个问题本身提出了质疑&lt;/strong&gt;。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;谁的需求被直接满足了&#34;&gt;谁的需求被直接满足了
&lt;/h2&gt;&lt;p&gt;Claude Design 不会立刻让专业设计师失业。但有几类用户，它确实能立刻满足：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;用户类型&lt;/th&gt;
          &lt;th&gt;之前的状态&lt;/th&gt;
          &lt;th&gt;Claude Design 之后&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;独立开发者&lt;/td&gt;
          &lt;td&gt;产品功能做得好，界面做不出来&lt;/td&gt;
          &lt;td&gt;自己描述，当天出稿&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;产品经理&lt;/td&gt;
          &lt;td&gt;改一版原型，得等设计师排期&lt;/td&gt;
          &lt;td&gt;自己跑 10 版迭代&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;早期创业者&lt;/td&gt;
          &lt;td&gt;验证 idea 的成本，卡在设计这关&lt;/td&gt;
          &lt;td&gt;MVP 当天上线&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;非设计背景创始人&lt;/td&gt;
          &lt;td&gt;完全依赖外包或招人&lt;/td&gt;
          &lt;td&gt;大量场景可以自助&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这些用户，原来根本不是 Figma 的客户——他们学不会 Figma，或者觉得没必要学。&lt;/p&gt;
&lt;p&gt;但现在，他们变成了设计工具市场中的新玩家。&lt;strong&gt;这才是资本真正在意的信号&lt;/strong&gt;——不是 Figma 用户要流失，而是整个&amp;quot;谁需要专业设计工具&amp;quot;的边界，开始模糊了。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;估值逻辑的断层在哪里&#34;&gt;估值逻辑的断层在哪里
&lt;/h2&gt;&lt;p&gt;软件 SaaS 公司的估值，本质上押注的是&amp;quot;这个产品解决的问题是否长期存在、是否难以替代&amp;quot;。&lt;/p&gt;
&lt;p&gt;Figma 的估值逻辑，一直是：人机交互和界面设计是长期存在的专业领域，而 Figma 是这个领域的最佳工具。Adobe 当年出价 200 亿美元收购，押注的就是这个逻辑。&lt;/p&gt;
&lt;p&gt;Claude Design 出现后，市场开始重新代入这个问题的另一面：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;如果&amp;quot;从需求到视觉原型&amp;quot;这个过程被 AI 打通，设计工具赛道的专业壁垒会不会缩水？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;不需要答案是&amp;quot;是&amp;quot;——只需要这个问题变得有争议，Figma 的估值就要打折。&lt;/p&gt;
&lt;p&gt;这不是 Figma 做错了什么，而是 AI 工具在改写整个类别的竞争假设。就像云计算出来之后，本地服务器厂商的估值逻辑需要重写——不是服务器立刻没人买了，而是市场对这个赛道的长期叙事信心，打了折扣。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;figma-会怎么应对&#34;&gt;Figma 会怎么应对
&lt;/h2&gt;&lt;p&gt;Figma 当然不会坐以待毙。&lt;/p&gt;
&lt;p&gt;它的反击路线已经很清楚：&lt;strong&gt;AI First 重建流水线&lt;/strong&gt;。Figma AI 在 2025 年已经上线了多个功能：AI 生成组件、AI 改写文案、AI 自动布局调整。这条路会继续走。&lt;/p&gt;
&lt;p&gt;但 Figma 也有一个结构性问题：&lt;strong&gt;它的产品设计是为专业设计师服务的，而 AI 时代最大的增量用户，是那些原来根本没有在用 Figma 的人。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;为已有用户做更好的工具，和为&amp;quot;从未用过专业工具的用户&amp;quot;重新设计入口——这是两个思路完全不同的产品问题。&lt;/p&gt;
&lt;p&gt;Claude Design 天然从第二个问题出发，因为它的用户就是&amp;quot;一句话描述需求的人&amp;quot;。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;canva-是另一条线索&#34;&gt;Canva 是另一条线索
&lt;/h2&gt;&lt;p&gt;讨论 Claude Design vs Figma 的时候，Canva 是个不能忽视的变量。&lt;/p&gt;
&lt;p&gt;Canva 已经通过 MCP 协议深度接入了 Claude 生态。Claude Design 输出的设计稿，可以一键推送到 Canva，套品牌、改格式、导出。&lt;/p&gt;
&lt;p&gt;这意味着：Canva 在这场竞争里，可能是 Claude Design 的&amp;quot;加速器&amp;quot;，而不是竞争对手。&lt;/p&gt;
&lt;p&gt;Figma 面对的，不只是 Claude Design 这一个点，而是&lt;strong&gt;Claude Design + Canva 作为组合拳&lt;/strong&gt;，打的是设计工具的整个入口逻辑：从&amp;quot;先学工具，再画稿&amp;quot;，变成&amp;quot;先说需求，再打磨&amp;quot;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-design-figma-stock-drop-2026/imgs/market-shift.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-design-figma-stock-drop-2026/imgs/market-shift_hu_90ab5cf2108644f8.png 480w, https://blog.ccino.org/p/claude-design-figma-stock-drop-2026/imgs/market-shift_hu_7e46d8aff6285f35.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Claude Design 与 Canva 改变设计入口&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;现在能下什么结论&#34;&gt;现在能下什么结论
&lt;/h2&gt;&lt;p&gt;Claude Design 上线当天的 Figma 跌幅，不是答案，是一个问题的开始。&lt;/p&gt;
&lt;p&gt;市场提出的问题是：&lt;strong&gt;专业设计工具的壁垒，到底有多厚？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;现在还没有答案。Claude Design 仍是实验阶段，输出质量不稳定，复杂设计系统的处理能力还差得远。Figma 的协作生态和专业深度，短期内没有工具能替代。&lt;/p&gt;
&lt;p&gt;但有一件事已经确定了：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;ldquo;设计这件事需要专门学一个工具&amp;quot;这个前提，正在被重新讨论。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;一旦这个讨论变得主流，不管最终结论是什么，Figma 的用户增长逻辑、定价权、以及市场对它的长期估值——都需要重新算一遍。&lt;/p&gt;
&lt;p&gt;这才是 Figma 为什么在 Claude Design 上线当天先跌了的真正原因。&lt;/p&gt;
&lt;hr&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&lt;strong&gt;延伸阅读&lt;/strong&gt;：如果你想了解 Claude Design + Canva + Claude Code 这条流水线的具体用法，可以看上篇：&lt;a class=&#34;link&#34; href=&#34;https://blog.ccino.org/p/canva-claude-design-pipeline-2026/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;《从一句话到上线产品，设计开发流水线实操指南》&lt;/a&gt;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;相关素材&#34;&gt;相关素材
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;本文续集自&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.ccino.org/p/canva-claude-design-pipeline-2026/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Design × Canva × Claude Code：从一句话到上线产品，设计开发流水线实操指南&lt;/a&gt; — 上篇：流水线实操指南&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;市场反应&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/ClaudeAI/comments/1so6z2t/claude_design_just_launched_and_figma_dropped_426/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reddit - Claude Design just launched and Figma dropped 4.26% in a single day&lt;/a&gt; — ⬆️1789 / 💬384&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/ClaudeAI/comments/1so3k1y/introducing_claude_design_by_anthropic_labs/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reddit - Introducing Claude Design by Anthropic Labs&lt;/a&gt; — ⬆️2313 / 💬355&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://gizmodo.com/anthropic-launches-claude-design-figma-stock-immediately-nosedives-2000748071&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic Launches Claude Design, Figma Stock Immediately Nosedives&lt;/a&gt; — Gizmodo&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://winbuzzer.com/2026/04/18/anthropic-launches-claude-design-figma-canva-xcxwbn/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic launches Claude Design, a Figma and Canva rival&lt;/a&gt; — WinBuzzer&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>宇树机器人跑赢了人类——这一天比所有人预想的早</title>
        <link>https://blog.ccino.org/p/unitree-robot-breaks-human-record-2026/</link>
        <pubDate>Sun, 19 Apr 2026 14:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/unitree-robot-breaks-human-record-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/unitree-robot-breaks-human-record-2026/imgs/cover.png" alt="Featured image of post 宇树机器人跑赢了人类——这一天比所有人预想的早" /&gt;&lt;p&gt;今天是4月19日。&lt;/p&gt;
&lt;p&gt;北京亦庄，一台两腿机器人在赛道上奔跑，工程师坐着电瓶车追在后面——跑着跑着，就跑不见了。&lt;/p&gt;
&lt;p&gt;这就是2026年的现实。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;751-vs-728一个微小的数字一条真实的红线&#34;&gt;7.51 vs 7.28：一个微小的数字，一条真实的红线
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/unitree-robot-breaks-human-record-2026/imgs/speed-comparison.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/unitree-robot-breaks-human-record-2026/imgs/speed-comparison_hu_ed65cb3f12ecb287.png 480w, https://blog.ccino.org/p/unitree-robot-breaks-human-record-2026/imgs/speed-comparison_hu_be9a5dd3dd18c1ed.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;速度对比：宇树H1均速7.51m/s超越人类1500米世界纪录配速7.28m/s&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;人类1500米世界纪录，由挪威选手雅各布·英格布里格森在2024年巴黎奥运会跑出：&lt;strong&gt;3分26秒&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;换算成速度：&lt;strong&gt;7.28米/秒&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这是人类数十年训练、选拔、药物管控之后，能跑出的最快均速。世界上只有一个人做到过。&lt;/p&gt;
&lt;p&gt;今天，在2026北京亦庄人形机器人半马排位赛中，宇树H1全程平均速度：&lt;strong&gt;7.51米/秒&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;差距是0.23米/秒。以1500米计算，大约快了5秒。&lt;/p&gt;
&lt;p&gt;不是机器人跑完了正式的1500米赛程、破了记录——赛制不同，这是机器人和人类共跑的半程马拉松。但数字已经说明了一件事：&lt;strong&gt;在速度这个维度上，机器人已经越过了人类的极限。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;去年8月，宇树H1在世界人形机器人运动会上的均速是3.3米/秒。&lt;/p&gt;
&lt;p&gt;八个月后，7.51。&lt;/p&gt;
&lt;p&gt;翻了一倍多。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;今天的赛场三百台机器人与人同跑&#34;&gt;今天的赛场：三百台机器人，与人同跑
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/unitree-robot-breaks-human-record-2026/imgs/race-scene.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/unitree-robot-breaks-human-record-2026/imgs/race-scene_hu_40562b07a72c58c5.png 480w, https://blog.ccino.org/p/unitree-robot-breaks-human-record-2026/imgs/race-scene_hu_a3f0965c8c9b6600.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;2026北京亦庄人形机器人半马：人类与机器人同场竞技（新华社 图 / 2026.04.19 北京亦庄）&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;今天的亦庄半马，是一场奇特的比赛。&lt;/p&gt;
&lt;p&gt;12000名人类选手和300余台机器人共用同一条赛道。起跑的枪声一响，两条腿的人和两条腿的机器人，跑向同一条终点线。&lt;/p&gt;
&lt;p&gt;参赛机器人超过一百支队伍，比去年增长近五倍。其中自主导航赛队接近四成——也就是说，这些机器人不靠遥控，靠自己的眼睛和算法决定每一步怎么落脚。&lt;/p&gt;
&lt;p&gt;宇树H1就是其中一台。&lt;/p&gt;
&lt;p&gt;H1没有遥控器，也没有预先编程的行进路线。它搭载超过180个传感器，实时识别路面状况，动态规避障碍，所有决策都在机器自身内部完成。工程师唯一能做的，是坐在电瓶车上跟着它——因为靠腿已经追不上了。&lt;/p&gt;
&lt;p&gt;这台机器人去年就已经在世界人形机器人运动会上拿了三项冠军：400米、4×100米接力、1500米。&lt;/p&gt;
&lt;p&gt;今年它来跑半马。内部测试成绩：50分钟出头。人类平均完赛时间：约2小时。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;宇树是怎么做到的&#34;&gt;宇树是怎么做到的
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/unitree-robot-breaks-human-record-2026/imgs/tech-specs.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/unitree-robot-breaks-human-record-2026/imgs/tech-specs_hu_7833bafe89f07899.png 480w, https://blog.ccino.org/p/unitree-robot-breaks-human-record-2026/imgs/tech-specs_hu_26cae08c841c1540.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;宇树H1技术架构：M107关节驱动器、180&amp;#43;传感器、大模型控制算法&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;速度的背后，是一个持续压缩的工程时间表。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;关节驱动&lt;/strong&gt;：H1采用M107型关节驱动器，功率密度在当前人形机器人中处于前列。高功率密度意味着同样体积能输出更大扭矩，是跑步能力的硬件基础。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;算法架构&lt;/strong&gt;：H1搭载大模型算法做实时控制决策，而不是传统的规则式运动控制。面对弯道、坡面、地面材质变化，它可以自适应调整步态，而不是崩掉。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;速度上限&lt;/strong&gt;：极限冲刺阶段，H1峰值速度达到10米/秒——接近博尔特100米冲刺的最高速度（10.44米/秒）。这不是巡航速度，但已经能告诉你这台机器的上限在哪里。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;续航设计&lt;/strong&gt;：半马是21公里，比400米长了50倍。宇树为本次参赛版本专门调整了续航设计和脚掌结构，目的是让高速度能维持足够长的时间。&lt;/p&gt;
&lt;p&gt;八个月，从3.3到7.51。按照这个速度，两年后这台机器能跑多快？&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;这条线意味着什么&#34;&gt;这条线，意味着什么
&lt;/h2&gt;&lt;p&gt;我们通常把AI威胁理解成&amp;quot;写代码写得更快&amp;quot;&amp;ldquo;翻译做得更好&amp;rdquo;。那些都是信息处理的范畴——看不见、摸不着，很难产生切身感受。&lt;/p&gt;
&lt;p&gt;速度不一样。速度是具体的。你能感受到它。&lt;/p&gt;
&lt;p&gt;人类跑步的极限，是几百年来人类认知自身的一部分。奥运会1500米的纪录，是全世界最好的运动员，经过几十年的训练和竞争，一点一点压出来的边界。&lt;/p&gt;
&lt;p&gt;今天，一台机器的均速超过了那条线。&lt;/p&gt;
&lt;p&gt;这不是末日预言。宇树H1不会抢你的工作，也不会去参加奥运会（赛制不允许）。但它告诉我们一件事：&lt;strong&gt;我们曾经认为&amp;quot;只有人类能做到&amp;quot;的事情，边界正在快速收缩。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;而且，收缩的速度比预想的快。&lt;/p&gt;
&lt;p&gt;2024年，业内很多人认为机器人超越人类运动极限要到2030年。&lt;/p&gt;
&lt;p&gt;今天是2026年。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;接下来会发生什么&#34;&gt;接下来会发生什么
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;全程马拉松&lt;/strong&gt;：半马结束后，下一个目标已经是42公里。机器人的续航和稳定性问题会被放大十倍，但工程问题终究是工程问题，可以被解决。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;工厂与仓库&lt;/strong&gt;：高速移动能力直接提升物流和制造场景的效率。7.51米/秒的均速在工厂地面上意味着什么——你可以自己算一下。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;服务场景&lt;/strong&gt;：高德在同一天的半马赛场上展示了另一类机器人：陪伴视障人士在开放道路上导航的四足机器人。速度不是唯一的维度，自主性才是真正的入口。&lt;/p&gt;
&lt;p&gt;今天，我们记录的是一个速度数字。&lt;/p&gt;
&lt;p&gt;但真正值得记住的，是它背后的斜率。从3.3到7.51，八个月，翻倍。这条曲线如果继续，你自己可以推演接下来几年会发生什么。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;今天亦庄赛场上有一幕让很多观众愣住了：&lt;/p&gt;
&lt;p&gt;一台机器人跑过来，停下来，向旁边的人类选手伸出了手，想握手。&lt;/p&gt;
&lt;p&gt;人类选手愣了一秒，没有回应，继续跑。&lt;/p&gt;
&lt;p&gt;机器人收回手，也继续跑。&lt;/p&gt;
&lt;p&gt;没有人说这意味着什么。但每个看到这一幕的人，都停顿了一下。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/unitree-robot-breaks-human-record-2026/imgs/handshake-scene.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/unitree-robot-breaks-human-record-2026/imgs/handshake-scene_hu_a8155fe985b4006b.png 480w, https://blog.ccino.org/p/unitree-robot-breaks-human-record-2026/imgs/handshake-scene_hu_2dcc253cab8e842b.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;机器人伸手，人类沉默（澎湃新闻 图 / 2026.04.19 北京亦庄）&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;具身智能为什么这件事比ai写代码更重要&#34;&gt;具身智能：为什么这件事比&amp;quot;AI写代码&amp;quot;更重要
&lt;/h2&gt;&lt;p&gt;我们谈了很多年的 AI，谈的大多是&amp;quot;软&amp;quot;的那种——语言模型、图像生成、代码助手。这些 AI 活在屏幕里，活在服务器上，活在你的对话窗口里。&lt;/p&gt;
&lt;p&gt;具身智能（Embodied Intelligence）不一样。它活在物理世界里。&lt;/p&gt;
&lt;p&gt;宇树H1今天跑过的那条赛道，是真实的柏油路面，有风，有坡度，有其他选手的干扰，有赛道上随机出现的障碍。它感知的是真实的物理信号，它做出的每一步决策都要立刻落地——字面意义上的落地，踩在地上。&lt;/p&gt;
&lt;p&gt;这是具身智能的核心挑战，也是它的核心价值：&lt;strong&gt;不是在虚拟环境里&amp;quot;想&amp;quot;，而是在真实世界里&amp;quot;做&amp;quot;&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;当一台机器人能够在开放赛道上以超越人类极限的速度自主奔跑，它证明的不只是速度。它证明的是：感知-决策-执行的完整闭环，已经可以在非结构化的真实世界中高速运转。&lt;/p&gt;
&lt;p&gt;这条能力曲线，才是今天最值得关注的事。&lt;/p&gt;
&lt;p&gt;从仓库里的搬运机器人，到赛道上的竞速机器人，到街道上陪伴视障人士的导航机器人——具身智能正在从&amp;quot;实验室能做到&amp;quot;走向&amp;quot;真实世界能用上&amp;quot;。这个跨越，比任何一次大模型参数量的翻倍，都更接近我们每一个人的日常生活。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://news.zol.com.cn/1166/11669101.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;宇树H1人形机器人自主跑出7.51米/秒均速，超多项人类中长跑世界纪录 - 中关村在线&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.chinanews.com.cn/ty/2026/04-12/10602361.shtml&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;2026北京亦庄人形机器人半程马拉松举行全流程全要素测试 - 中新网&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.news.cn/tech/20260415/14cbcfeb9fd1447399da0ed5e92f6c90/c.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;北京亦庄人形机器人半马悬念拉满：冲线第一不等于最终冠军 - 新华网&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.beijing.gov.cn/fuwu/lqfw/gggs/202604/t20260413_4580763.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;亦庄半马全流程全要素夜测 - 北京市人民政府&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://finance.sina.com.cn/jjxw/2026-04-14/doc-inhukvar9447966.shtml&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;人形机器人半马前瞻：更快、更高、更实 - 新浪财经&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Claude Opus 4.7 翻车了吗？为什么官方说更强，老用户却说是回归</title>
        <link>https://blog.ccino.org/p/claude-opus47-backlash-community-split-2026/</link>
        <pubDate>Sun, 19 Apr 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/claude-opus47-backlash-community-split-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/claude-opus47-backlash-community-split-2026/imgs/cover.png" alt="Featured image of post Claude Opus 4.7 翻车了吗？为什么官方说更强，老用户却说是回归" /&gt;&lt;h2 id=&#34;两套叙事&#34;&gt;两套叙事
&lt;/h2&gt;&lt;p&gt;4月16日，Anthropic 正式发布 Claude Opus 4.7。&lt;/p&gt;
&lt;p&gt;科技媒体的报道很统一：Mashable 的标题是 &lt;strong&gt;&amp;ldquo;Anthropic: Claude Opus 4.7 has a 92% honesty rate, fewer hallucinations&amp;rdquo;&lt;/strong&gt;（Anthropic：Claude Opus 4.7 拥有 92% 的诚实度，幻觉更少），VentureBeat 称其 &lt;strong&gt;&amp;ldquo;narrowly retaking lead for most powerful generally available LLM&amp;rdquo;&lt;/strong&gt;（以微弱优势重获最强公开可用大模型宝座）。&lt;/p&gt;
&lt;p&gt;官方系统卡（system card，模型评估报告）展示的数据也很漂亮：MASK 诚实度基准（Model Alignment between Statements and Knowledge，陈述与知识一致性基准）达到 91.7%，比 Opus 4.6 的 90.3% 更高；各类幻觉测试均有改善；新增高分辨率图像支持（3.75MP）、任务预算机制（task budget）、xhigh 推理等级。&lt;/p&gt;
&lt;p&gt;同一天，r/ClaudeAI 社区出现了一个帖子，标题没那么客气：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;ldquo;Claude Opus 4.7 is a serious regression, not an upgrade.&amp;rdquo;&lt;/strong&gt;（Claude Opus 4.7 是一次严重回归，而非升级）&lt;/p&gt;
&lt;p&gt;这个帖子最终获得了 &lt;strong&gt;⬆️3186 赞和 803 条评论&lt;/strong&gt;——几乎与官方介绍帖的 ⬆️3313 赞持平。&lt;/p&gt;
&lt;p&gt;一边是 92% honesty（诚实度）的官方数据，一边是高赞差评的用户抱怨。&lt;/p&gt;
&lt;h2 id=&#34;官方的叙事&#34;&gt;官方的叙事
&lt;/h2&gt;&lt;p&gt;Anthropic 对 Opus 4.7 的宣传重点很明确：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;诚实度和幻觉改善&lt;/strong&gt;：官方系统卡显示，Opus 4.7 在 MASK 诚实度基准上达到 91.7%，比 Opus 4.6 的 90.3% 有所提升（虽然仍低于 Opus 4.5 的 95.4%）。各类幻觉测试——事实幻觉、输入幻觉、错误前提拒绝——均有改善。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;新特性&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;高分辨率图像支持&lt;/strong&gt;：最大分辨率从 1.15MP 提升至 3.75MP，坐标映射 1:1，更适合文档理解和计算机视觉任务&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;任务预算机制（task budget）&lt;/strong&gt;：让模型在 agentic 循环（代理循环）中自动优先处理任务并优雅收尾&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;xhigh 推理等级（effort level）&lt;/strong&gt;：介于 high 和 max 之间，提供更精细的推理/延迟控制&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;能力提升&lt;/strong&gt;：官方文档称 Opus 4.7 在高级编程、文档分析、视觉任务、记忆系统上都有&amp;quot;meaningful gains&amp;quot;（显著提升）。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-opus47-backlash-community-split-2026/imgs/official-metrics.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-opus47-backlash-community-split-2026/imgs/official-metrics_hu_57a36bff8fee4698.png 480w, https://blog.ccino.org/p/claude-opus47-backlash-community-split-2026/imgs/official-metrics_hu_8304a1fcd396b0f5.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;官方数据：诚实度提升与三大新特性&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;用户的体验&#34;&gt;用户的体验
&lt;/h2&gt;&lt;p&gt;Reddit 和 X/Twitter 上的抱怨集中在几个方面：&lt;/p&gt;
&lt;h3 id=&#34;1-token-消耗暴增&#34;&gt;1. Token 消耗暴增
&lt;/h3&gt;&lt;p&gt;Opus 4.7 采用了新的 tokenizer（分词器），Anthropic 承认这会导致&lt;strong&gt;相同输入消耗 1x 到 1.35x 倍的 token&lt;/strong&gt;（最多增加 35%）。&lt;/p&gt;
&lt;p&gt;Business Insider 报道中，一位用户评论说：&amp;ldquo;Opus 4.7 eats usage like nuclear reactor.&amp;quot;（Opus 4.7 像核反应堆一样吞噬配额）。另一位说：&amp;ldquo;I just reached my monthly limit just by reading this.&amp;quot;（我光看这篇文章就用完了月度配额）。&lt;/p&gt;
&lt;p&gt;对于按使用量计费的 Claude Pro 订阅者来说，这意味着同样的问题，同样的对话，成本可能上升三分之一。&lt;/p&gt;
&lt;h3 id=&#34;2-能力问题&#34;&gt;2. 能力问题
&lt;/h3&gt;&lt;p&gt;用户报告的问题包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;简单任务失败&lt;/strong&gt;：有用户截图显示，Opus 4.7 在数 &amp;ldquo;strawberry&amp;rdquo;（草莓）里有几个 p 时出错&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;ldquo;being lazy&amp;rdquo;&lt;/strong&gt;（偷懒）：模型承认自己&amp;quot;being lazy&amp;quot;而不做交叉引用&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;态度变化&lt;/strong&gt;：多位用户提到模型变得更 &amp;ldquo;combative&amp;rdquo;（好争辩）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;幻觉增加&lt;/strong&gt;：Reddit 帖子 &amp;ldquo;Opus 4.7 is a master hallucinator&amp;rdquo;（Opus 4.7 是幻觉大师）获得高赞&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;更严重的是基准测试数据。Startup Fortune 报道称，在 MRCR（长文档检索与推理）基准上，Opus 4.6 得分 78.3%，而 Opus 4.7 仅得 &lt;strong&gt;32.2%&lt;/strong&gt;——这不仅是回归，简直是崩溃。&lt;/p&gt;
&lt;p&gt;Anthropic 开发者解释，公司正在&lt;strong&gt;逐步淘汰 MRCR 基准&lt;/strong&gt;，因为它不能准确反映模型的实际使用场景。用户很难信服：如果基准不能反映实际使用，为什么之前用它来证明 4.6 的能力？&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-opus47-backlash-community-split-2026/imgs/user-backlash.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-opus47-backlash-community-split-2026/imgs/user-backlash_hu_c020b85c41d93123.png 480w, https://blog.ccino.org/p/claude-opus47-backlash-community-split-2026/imgs/user-backlash_hu_a56be6917b428408.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;用户体验：Token 暴增、能力回退与社区差评&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;3-claude-code-用户的崩溃&#34;&gt;3. Claude Code 用户的崩溃
&lt;/h3&gt;&lt;p&gt;Claude Code——Anthropic 的旗舰开发者产品——也出现了问题。&lt;/p&gt;
&lt;p&gt;GitHub issues #48167 标题直接是：&amp;ldquo;major quality and performance regression&amp;rdquo;（重大质量和性能回归）。多位工程师报告：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;代码审查漏掉明显问题&lt;/li&gt;
&lt;li&gt;拒绝执行合理的任务&lt;/li&gt;
&lt;li&gt;对简单问题给出错误答案&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一位用户在 X 上说：&amp;ldquo;Opus 4.7 is the first time I&amp;rsquo;ve thought &amp;lsquo;Anthropic may be moving too fast&amp;rsquo;. Just feels sloppy.&amp;quot;（Opus 4.7 让我第一次觉得&amp;rsquo;Anthropic 可能走得太快了&amp;rsquo;。就是感觉草率。）&lt;/p&gt;
&lt;h2 id=&#34;分裂的原因&#34;&gt;分裂的原因
&lt;/h2&gt;&lt;p&gt;官方测试的维度和用户实际使用的维度不是一回事。&lt;/p&gt;
&lt;p&gt;Anthropic 强调&amp;quot;诚实度&amp;quot;和&amp;quot;幻觉率&amp;rdquo;，这些是安全性指标。用户关心的是能不能把活干好，这是功能性指标。&lt;/p&gt;
&lt;p&gt;一个模型可以在&amp;quot;拒绝回答错误前提&amp;quot;上得分更高，但同时变得更固执、更不愿意顺着用户的思路工作。从安全角度看这是进步，从用户体验角度看可能是倒退。&lt;/p&gt;
&lt;p&gt;测试环境与实际使用也存在差异。Anthropic 的基准测试在理想条件下进行，用户的实际场景千差万别——长上下文、复杂工具调用、多轮对话。标准基准捕捉不到这些场景下的问题。&lt;/p&gt;
&lt;h2 id=&#34;mythos-因素&#34;&gt;Mythos 因素
&lt;/h2&gt;&lt;p&gt;Anthropic 的系统卡反复将 Opus 4.7 与未发布的 Mythos 模型对比。Mythos 在各项指标上都更优秀——Mashable 指出，Mythos 的 MASK 诚实度达到 95.4%，远超 Opus 4.7。&lt;/p&gt;
&lt;p&gt;Anthropic 的&amp;quot;旗舰&amp;quot;能力在 Mythos 身上，公开发布的 Opus 4.7 更像是&amp;quot;二等品&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;如果 Anthropic 的研发资源正在向 Mythos 这样的企业级模型倾斜（通过 Project Glasswing 合作伙伴计划提供），公开发布的模型可能会变得&amp;quot;更安全但更无聊&amp;rdquo;。对普通用户来说，这不是升级。&lt;/p&gt;
&lt;h2 id=&#34;社区情绪的转折点&#34;&gt;社区情绪的转折点
&lt;/h2&gt;&lt;p&gt;Claude 一直被视为&amp;quot;AI 界的良心&amp;quot;——安全第一、透明度高、尊重用户。这种形象正在受到考验。&lt;/p&gt;
&lt;p&gt;Opus 4.6 的&amp;quot;推理深度悄悄下降 67%&amp;ldquo;事件已经让社区信任受损（我们之前写过）。现在 Opus 4.7 的发布，又带来了 token 消耗增加、用户体验下降的问题。&lt;/p&gt;
&lt;p&gt;Business Insider 将此称为&amp;quot;The Claude-lash&amp;rdquo;（Claude 反噬）——这对一个以用户好感度著称的产品来说，是相对罕见的情况。&lt;/p&gt;
&lt;p&gt;一位用户在 Anthropic 的官方帖子下留言：&amp;ldquo;Please open back support for Opus 4.5. 4.6 is unusable and 4.7 eats usage like nuclear reactor.&amp;quot;（请重新支持 Opus 4.5。4.6 不可用，4.7 像核反应堆一样吞噬配额。）&lt;/p&gt;
&lt;p&gt;这条评论获得了大量点赞。用户怀念的不是一个抽象的&amp;quot;版本号&amp;rdquo;，而是那种&amp;quot;这个 AI 真的懂我在说什么&amp;quot;的感觉。&lt;/p&gt;
&lt;h2 id=&#34;anthropic-的挑战&#34;&gt;Anthropic 的挑战
&lt;/h2&gt;&lt;p&gt;Anthropic 面临的问题是：如何在安全性和可用性之间找到平衡。&lt;/p&gt;
&lt;p&gt;Opus 4.7 的设计方向更强调安全性，降低幻觉、提高诚实度、拒绝危险任务。这对企业客户很重要。但对普通用户来说，如果代价是模型变得&amp;quot;更笨&amp;quot;或&amp;quot;更固执&amp;quot;，他们不会认为这是升级。&lt;/p&gt;
&lt;p&gt;透明度也是问题。Anthropic 对 tokenizer 变化、基准淘汰、API 行为改变都有文档说明，但这些信息散落在各个地方。普通用户很难完整理解。当他们发现&amp;quot;同样的问题，现在要花更多钱&amp;quot;或&amp;quot;以前能做的，现在做不了&amp;quot;时，自然会觉得被&amp;quot;悄悄降级&amp;quot;。&lt;/p&gt;
&lt;h2 id=&#34;写在最后&#34;&gt;写在最后
&lt;/h2&gt;&lt;p&gt;从 Anthropic 的内部指标看——诚实度、幻觉率、安全性——Opus 4.7 可能是进步。但从核心用户的实际体验看——Token 消耗、任务完成度、交互友好性——这可能是回归。&lt;/p&gt;
&lt;p&gt;信任才是问题。当官方数据和用户感受持续分裂时，Anthropic 需要的不是&amp;quot;解释为什么我们的数据是对的&amp;quot;，而是&amp;quot;理解为什么用户的感受是对的&amp;quot;。&lt;/p&gt;
&lt;p&gt;AI 产品最终不是靠基准测试成功，而是靠用户愿意付费使用。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;参考来源&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://mashable.com/article/anthropic-claude-opus-4-7-hallucination-rate&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Mashable: Anthropic says Claude Opus 4.7 has a 92% honesty rate, fewer hallucinations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.businessinsider.com/anthropic-claude-opus-4-7-backlash-tokens-2026-4&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Business Insider: The Claude-lash is here — Opus 4.7 is burning through tokens&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://startupfortune.com/anthropics-claude-opus-47-launch-has-triggered-a-wave-of-community-backlash-that-may-be-entirely-justified/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Startup Fortune: Anthropic&amp;rsquo;s Claude Opus 4.7 launch has triggered a wave of community backlash&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://platform.claude.com/docs/en/about-claude/models/whats-new-claude-4-7&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude API Docs: What&amp;rsquo;s new in Claude Opus 4.7&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/ClaudeAI/comments/1snhfzd/claude_opus_47_is_a_serious_regression_not_an/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reddit: Claude Opus 4.7 is a serious regression, not an upgrade&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/anthropics/claude-code/issues/48167&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub Issue: major quality and performance regression&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Windows 用户换到 macOS，需要先补哪些基础知识？一篇讲清楚</title>
        <link>https://blog.ccino.org/p/windows-to-macos-basics/</link>
        <pubDate>Sat, 18 Apr 2026 15:30:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/windows-to-macos-basics/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/windows-to-macos-basics/imgs/cover.png" alt="Featured image of post Windows 用户换到 macOS，需要先补哪些基础知识？一篇讲清楚" /&gt;&lt;p&gt;如果你刚从 Windows 换到 macOS，最容易产生的挫败感不是“功能不够”，而是&lt;strong&gt;很多熟悉的动作都还在，但位置、逻辑和默认假设变了&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;所以这篇文章不讲情怀，也不讲“哪边更好”，只讲一件事：&lt;strong&gt;Windows 用户切到 macOS 后，最先应该补齐哪些基础知识，才能尽快进入顺手状态。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;这篇文章适合谁&#34;&gt;这篇文章适合谁
&lt;/h2&gt;&lt;p&gt;这篇文章主要写给三类人：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;刚买 MacBook，之前长期用 Windows 的普通用户&lt;/li&gt;
&lt;li&gt;因为开发、设计、内容创作开始使用 macOS 的职场用户&lt;/li&gt;
&lt;li&gt;手里同时有 Windows 和 Mac，想降低切换成本的人&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你现在的真实感受是下面这些，这篇文章就很适合你：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;明明都会用电脑，但一上 Mac 就找不到设置&lt;/li&gt;
&lt;li&gt;复制粘贴、切换窗口、删除文件都不顺手&lt;/li&gt;
&lt;li&gt;装软件时不知道该去 App Store 还是官网&lt;/li&gt;
&lt;li&gt;看到 Finder、Launchpad、Terminal、Spotlight 这些词就有点乱&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;先说结论：&lt;strong&gt;macOS 不是“另一台更高级的 Windows”，而是另一套交互哲学。&lt;/strong&gt; 一旦理解它的基本规则，适应速度通常比想象中快。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;一先建立心智模型windows-和-macos-到底差在哪&#34;&gt;一、先建立心智模型：Windows 和 macOS 到底差在哪
&lt;/h2&gt;&lt;p&gt;Windows 的设计思路更像“系统把大量控制权直接摆给你”，很多入口显式可见，适合逐步点开、逐层管理。&lt;/p&gt;
&lt;p&gt;macOS 的设计思路更像“系统尽量替你做约定”，把高频操作藏进统一入口，让界面保持简洁，但前提是你得知道它的默认规则。&lt;/p&gt;
&lt;p&gt;最关键的几个差异，可以先记住：&lt;/p&gt;
&lt;h3 id=&#34;1-菜单栏属于当前应用不属于窗口&#34;&gt;1. 菜单栏属于当前应用，不属于窗口
&lt;/h3&gt;&lt;p&gt;Windows 用户很容易默认认为“每个窗口自己带菜单”。&lt;/p&gt;
&lt;p&gt;但在 macOS 里，屏幕最上方那一条菜单栏，永远属于&lt;strong&gt;当前激活的应用&lt;/strong&gt;。你点到 Safari，顶部菜单就是 Safari；点到 Terminal，顶部菜单就变成 Terminal。&lt;/p&gt;
&lt;p&gt;这会导致一个很典型的初期困惑：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;我明明在这个窗口里，为什么菜单不在窗口上？&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;答案是：macOS 把应用层级放在窗口之上。&lt;/p&gt;
&lt;h3 id=&#34;2-红黄绿按钮不是缩小最大化关闭的简单对应&#34;&gt;2. 红黄绿按钮不是“缩小、最大化、关闭”的简单对应
&lt;/h3&gt;&lt;p&gt;Mac 窗口左上角的红黄绿按钮，和 Windows 右上角的最小化、最大化、关闭，看起来相似，但行为并不完全一样。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;红色：关闭当前窗口，但不一定退出应用&lt;/li&gt;
&lt;li&gt;黄色：最小化窗口&lt;/li&gt;
&lt;li&gt;绿色：进入全屏或扩展窗口，不等于传统意义上的“最大化”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这就是为什么很多 Windows 用户第一次会问：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;我把窗口关了，为什么程序还没退出？&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;因为在 macOS 里，&lt;strong&gt;关闭窗口&lt;/strong&gt;和&lt;strong&gt;退出应用&lt;/strong&gt;是两件事。&lt;/p&gt;
&lt;h3 id=&#34;3-应用还开着这件事更重要&#34;&gt;3. 应用“还开着”这件事更重要
&lt;/h3&gt;&lt;p&gt;在 Windows 里，很多人习惯把“看不到窗口”理解成“程序结束了”。&lt;/p&gt;
&lt;p&gt;但在 macOS 中，一个应用没有窗口时也可能仍在运行。你可以通过 Dock 下面的小点、菜单栏、或 &lt;code&gt;Command + Tab&lt;/code&gt; 看到它仍然处于活跃状态。&lt;/p&gt;
&lt;h3 id=&#34;4-更依赖搜索统一入口和手势&#34;&gt;4. 更依赖搜索、统一入口和手势
&lt;/h3&gt;&lt;p&gt;Windows 用户常常从“开始菜单 → 文件夹 → 程序”出发。&lt;/p&gt;
&lt;p&gt;而 macOS 用户更常见的路径是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用 Spotlight 搜应用、搜文件、搜设置&lt;/li&gt;
&lt;li&gt;用 Dock 启动高频应用&lt;/li&gt;
&lt;li&gt;用触控板手势在桌面、全屏应用和 Mission Control 之间切换&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一句话概括：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;Windows 偏“看见入口再操作”，macOS 偏“先知道规则，再快速调用”。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;二先把快捷键换脑这是迁移初期最值回票价的一步&#34;&gt;二、先把快捷键换脑：这是迁移初期最值回票价的一步
&lt;/h2&gt;&lt;p&gt;对 Windows 用户来说，最难受的通常不是软件，而是&lt;strong&gt;手已经形成肌肉记忆了&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;macOS 最大的变化是：很多 Windows 上由 &lt;code&gt;Ctrl&lt;/code&gt; 完成的通用操作，在 Mac 上大多改成了 &lt;code&gt;Command&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;下面这张表，建议你至少熟悉一遍。&lt;/p&gt;
&lt;h2 id=&#34;常用快捷键对照&#34;&gt;常用快捷键对照
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;场景&lt;/th&gt;
          &lt;th&gt;Windows&lt;/th&gt;
          &lt;th&gt;macOS&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;复制&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;Ctrl + C&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;Command + C&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;粘贴&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;Ctrl + V&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;Command + V&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;剪切&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;Ctrl + X&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;Command + X&lt;/code&gt;（文本中常见）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;撤销&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;Ctrl + Z&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;Command + Z&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;全选&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;Ctrl + A&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;Command + A&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;保存&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;Ctrl + S&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;Command + S&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;查找&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;Ctrl + F&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;Command + F&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;切换应用&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;Alt + Tab&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;Command + Tab&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;关闭当前窗口&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;Alt + F4&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;Command + W&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;退出应用&lt;/td&gt;
          &lt;td&gt;常见为关闭窗口&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;Command + Q&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;新建标签页/窗口&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;Ctrl + T&lt;/code&gt; / &lt;code&gt;Ctrl + N&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;Command + T&lt;/code&gt; / &lt;code&gt;Command + N&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;截图&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;Win + Shift + S&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;Command + Shift + 4&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;打开搜索&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;Win&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;Command + Space&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;删除到回收站&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;Delete&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;Command + Delete&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;强制关闭应用&lt;/td&gt;
          &lt;td&gt;任务管理器&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;Command + Option + Esc&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这里最值得特别记住的，不是复制粘贴，而是这三个：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Command + Space&lt;/code&gt;：打开 Spotlight&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Command + Tab&lt;/code&gt;：切换应用&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Command + Q&lt;/code&gt;：退出应用&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;你把这三个用熟，基本就能迅速摆脱“总觉得哪里不顺”的状态。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/windows-to-macos-basics/imgs/body1.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/windows-to-macos-basics/imgs/body1_hu_f7e983b068d0dd1.png 480w, https://blog.ccino.org/p/windows-to-macos-basics/imgs/body1_hu_e5f432708bf60148.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Windows 到 macOS 的快捷键与操作逻辑迁移示意图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;三finder-不是弱化版资源管理器而是另一种文件管理逻辑&#34;&gt;三、Finder 不是“弱化版资源管理器”，而是另一种文件管理逻辑
&lt;/h2&gt;&lt;p&gt;很多 Windows 用户第一次打开 Finder，会觉得它“不像资源管理器那么直给”。&lt;/p&gt;
&lt;p&gt;这是因为 Finder 的默认展示更克制，但并不代表它弱。你只需要先理解几个基础点。&lt;/p&gt;
&lt;h3 id=&#34;1-finder--资源管理器的对应物&#34;&gt;1. Finder = 资源管理器的对应物
&lt;/h3&gt;&lt;p&gt;它负责：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;浏览文件和文件夹&lt;/li&gt;
&lt;li&gt;复制、移动、删除文件&lt;/li&gt;
&lt;li&gt;访问下载、桌面、文稿、iCloud Drive、外接磁盘&lt;/li&gt;
&lt;li&gt;预览、标签、搜索和批量整理&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你总找不到文件，先记这几个高频位置：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;桌面 Desktop&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;下载 Downloads&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;文稿 Documents&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;应用程序 Applications&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;访达边栏 Favorites&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2-安装后的-app-往往在-applications-里&#34;&gt;2. 安装后的 App 往往在 Applications 里
&lt;/h3&gt;&lt;p&gt;Windows 用户习惯“开始菜单里找程序、安装目录里找 exe”。&lt;/p&gt;
&lt;p&gt;在 macOS 里，大多数正式安装好的图形应用最终都可以在：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Applications&lt;/code&gt; 文件夹里找到。&lt;/p&gt;
&lt;p&gt;你也可以直接按 &lt;code&gt;Command + Space&lt;/code&gt;，输入应用名搜索，比手动点目录快很多。&lt;/p&gt;
&lt;h3 id=&#34;3-预览和空格键特别好用&#34;&gt;3. 预览和空格键特别好用
&lt;/h3&gt;&lt;p&gt;在 Finder 里选中文件，按一下空格，就能快速预览图片、PDF、文档、视频等内容。&lt;/p&gt;
&lt;p&gt;这个 Quick Look 是很多新用户一开始忽略、但用熟后很难离开的功能。&lt;/p&gt;
&lt;h3 id=&#34;4-路径显示和扩展名默认可能不明显&#34;&gt;4. 路径显示和扩展名默认可能不明显
&lt;/h3&gt;&lt;p&gt;如果你来自 Windows，经常需要看到完整路径、后缀名、隐藏文件，可以主动打开这些显示项。macOS 不是没有，只是很多默认藏起来了。&lt;/p&gt;
&lt;p&gt;常见做法：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在 Finder 设置里打开文件扩展名显示&lt;/li&gt;
&lt;li&gt;开启路径栏与状态栏&lt;/li&gt;
&lt;li&gt;需要看隐藏文件时用 &lt;code&gt;Command + Shift + .&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这一步做完之后，Finder 的可控性会明显提升。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;四软件安装别再找-exemacos-常见安装方式只有几种&#34;&gt;四、软件安装别再找 exe：macOS 常见安装方式只有几种
&lt;/h2&gt;&lt;p&gt;Windows 用户最容易在这里出戏：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;为什么我下载的是 &lt;code&gt;.dmg&lt;/code&gt;？为什么有的是拖到 Applications？为什么有的是 &lt;code&gt;.pkg&lt;/code&gt;？&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;其实 macOS 的安装方式比 Windows 更统一，你记住三种就够了。&lt;/p&gt;
&lt;h3 id=&#34;1-app-store&#34;&gt;1. App Store
&lt;/h3&gt;&lt;p&gt;这是最省心的方式，适合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;常规生产力工具&lt;/li&gt;
&lt;li&gt;正版软件&lt;/li&gt;
&lt;li&gt;对稳定更新要求高的应用&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;优点是安装、更新、卸载都相对省心。&lt;/p&gt;
&lt;h3 id=&#34;2-dmg&#34;&gt;2. &lt;code&gt;.dmg&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;这可以理解成一个挂载出来的安装镜像。打开后，通常会看到一个 App 图标和一个 &lt;code&gt;Applications&lt;/code&gt; 快捷方式。&lt;/p&gt;
&lt;p&gt;最常见的安装动作是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;打开 &lt;code&gt;.dmg&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;把 App 拖到 &lt;code&gt;Applications&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;弹出镜像&lt;/li&gt;
&lt;li&gt;之后去 &lt;code&gt;Applications&lt;/code&gt; 或 Spotlight 启动&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这和 Windows 的“双击 exe 一路 Next”很不一样，但其实更简单。&lt;/p&gt;
&lt;h3 id=&#34;3-pkg&#34;&gt;3. &lt;code&gt;.pkg&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;这更接近安装器模式，常见于驱动、系统组件、开发工具等。&lt;/p&gt;
&lt;p&gt;如果是需要更深系统集成的软件，通常会用 &lt;code&gt;.pkg&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id=&#34;4-卸载的思路也更轻量&#34;&gt;4. 卸载的思路也更轻量
&lt;/h3&gt;&lt;p&gt;很多应用直接删除 App 本体就可以完成主要卸载；但部分软件仍会在用户目录留下配置文件、缓存、启动项。&lt;/p&gt;
&lt;p&gt;所以要记住一条：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;macOS 的“删掉应用”不总等于“完全清理所有痕迹”。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;对于开发类软件、代理工具、输入法、驱动这类组件，卸载前最好看官方说明。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;五文件系统最容易踩的坑盘符没了但目录层级更统一了&#34;&gt;五、文件系统最容易踩的坑：盘符没了，但目录层级更统一了
&lt;/h2&gt;&lt;p&gt;Windows 用户常依赖 &lt;code&gt;C:&lt;/code&gt;、&lt;code&gt;D:&lt;/code&gt;、&lt;code&gt;E:&lt;/code&gt; 这样的盘符心智模型。&lt;/p&gt;
&lt;p&gt;macOS 没有日常可见的盘符概念，文件系统更像一棵统一目录树。&lt;/p&gt;
&lt;p&gt;你不需要马上理解所有 Unix 目录，只要先知道这几个层级就够用：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/Users/你的用户名/&lt;/code&gt;：你的个人目录&lt;/li&gt;
&lt;li&gt;&lt;code&gt;~/Downloads&lt;/code&gt;：下载&lt;/li&gt;
&lt;li&gt;&lt;code&gt;~/Documents&lt;/code&gt;：文稿&lt;/li&gt;
&lt;li&gt;&lt;code&gt;~/Desktop&lt;/code&gt;：桌面&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/Applications&lt;/code&gt;：应用程序&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这里的 &lt;code&gt;~&lt;/code&gt; 可以理解为“当前用户主目录”。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;~/Downloads/test.zip&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;~/Documents/project&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对于开发者来说，这一点非常重要，因为很多教程、脚本、终端命令都默认你理解 &lt;code&gt;~&lt;/code&gt;、&lt;code&gt;/&lt;/code&gt;、相对路径、绝对路径这些概念。&lt;/p&gt;
&lt;h3 id=&#34;一个必须尽早接受的变化&#34;&gt;一个必须尽早接受的变化
&lt;/h3&gt;&lt;p&gt;在 macOS 里，系统级目录和用户级目录边界更清楚。你日常工作大多发生在自己的用户目录下，而不是随意把东西散落在不同盘符里。&lt;/p&gt;
&lt;p&gt;这会让路径组织更统一，但刚开始也会让人觉得“我文件到底去哪了”。&lt;/p&gt;
&lt;p&gt;解决办法很简单：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;高频文件优先放 &lt;code&gt;Downloads&lt;/code&gt;、&lt;code&gt;Documents&lt;/code&gt;、项目目录&lt;/li&gt;
&lt;li&gt;Finder 边栏固定常用位置&lt;/li&gt;
&lt;li&gt;养成 Spotlight 搜索文件名的习惯&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;六终端与开发环境如果你写代码macos-会比你想象中更顺&#34;&gt;六、终端与开发环境：如果你写代码，macOS 会比你想象中更顺
&lt;/h2&gt;&lt;p&gt;如果你是开发者，那么从 Windows 切到 macOS，最大的感受通常不是“更漂亮”，而是&lt;strong&gt;命令行生态更自然&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;因为 macOS 底层是 Unix 系谱，很多开发工具、脚本、环境配置天然就更贴近 Linux 服务器。&lt;/p&gt;
&lt;h3 id=&#34;1-terminal-是基本入口不是高级玩家专属&#34;&gt;1. Terminal 是基本入口，不是高级玩家专属
&lt;/h3&gt;&lt;p&gt;你不用把 Terminal 想得太重。对开发者来说，它就是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;执行命令&lt;/li&gt;
&lt;li&gt;管理项目目录&lt;/li&gt;
&lt;li&gt;安装工具&lt;/li&gt;
&lt;li&gt;运行脚本&lt;/li&gt;
&lt;li&gt;连接远程服务器&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你以前在 Windows 上已经使用过 PowerShell、Git Bash、WSL，那么适应 Terminal 通常不会太慢。&lt;/p&gt;
&lt;h3 id=&#34;2-常见命令思路会更接近-linux&#34;&gt;2. 常见命令思路会更接近 Linux
&lt;/h3&gt;&lt;p&gt;例如这些基础操作：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;pwd&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ls
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ~/Documents
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir demo-project
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rm -rf old-folder
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果你长期做后端、前端、DevOps、AI 工程相关工作，macOS 的终端体验通常会比原生 Windows 更少“兼容层心智负担”。&lt;/p&gt;
&lt;h3 id=&#34;3-包管理建议尽早装-homebrew&#34;&gt;3. 包管理建议尽早装 Homebrew
&lt;/h3&gt;&lt;p&gt;很多开发者把 Homebrew 当成 macOS 上最重要的基础设施之一。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/windows-to-macos-basics/imgs/body2.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/windows-to-macos-basics/imgs/body2_hu_da778a7ff5531522.png 480w, https://blog.ccino.org/p/windows-to-macos-basics/imgs/body2_hu_5587937d88283c4f.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Finder、Applications、Terminal 与 Homebrew 的 macOS 工作流示意图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;
它相当于一个常用工具安装入口，可以帮助你安装：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;git&lt;/li&gt;
&lt;li&gt;node&lt;/li&gt;
&lt;li&gt;python&lt;/li&gt;
&lt;li&gt;wget&lt;/li&gt;
&lt;li&gt;tmux&lt;/li&gt;
&lt;li&gt;ffmpeg&lt;/li&gt;
&lt;li&gt;数据库客户端&lt;/li&gt;
&lt;li&gt;开发辅助工具&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;你不一定第一天就要学会所有命令，但最好知道：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;在 macOS 上，很多“开发工具安装问题”的标准答案，都是先看 Homebrew。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;h3 id=&#34;4-开发环境迁移时优先处理这几项&#34;&gt;4. 开发环境迁移时，优先处理这几项
&lt;/h3&gt;&lt;p&gt;如果你是从 Windows 主力机迁移过来，建议按顺序补齐：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;终端与 shell（Terminal / iTerm2 / zsh）&lt;/li&gt;
&lt;li&gt;Git 与 SSH Key&lt;/li&gt;
&lt;li&gt;Homebrew&lt;/li&gt;
&lt;li&gt;Node、Python、Go、Java 等语言运行时&lt;/li&gt;
&lt;li&gt;编辑器与 IDE（VS Code、Cursor、JetBrains 等）&lt;/li&gt;
&lt;li&gt;Docker、代理工具、数据库客户端&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;不要一上来就追求“完全复刻原有环境”，先把最小可工作流跑起来，适应会更快。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;七输入法截图窗口管理这是日常体验差异最大的三块&#34;&gt;七、输入法、截图、窗口管理：这是日常体验差异最大的三块
&lt;/h2&gt;&lt;p&gt;很多人以为迁移困难只发生在开发环境里，其实日常办公更容易出问题。&lt;/p&gt;
&lt;h3 id=&#34;1-输入法切换逻辑要重新适应&#34;&gt;1. 输入法切换逻辑要重新适应
&lt;/h3&gt;&lt;p&gt;Windows 用户常习惯：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Shift&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Ctrl + Space&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;中文输入法自己的热键&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在 macOS 上，常见方案通常会变成系统输入源切换，具体快捷键可以自己配置，但你要先理解一个概念：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;macOS 倾向于把输入法视为“输入源”统一管理，而不是每个软件各搞一套。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;如果你中英文切换频繁，建议尽早做两件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;精简输入源，只保留你真正用的几个&lt;/li&gt;
&lt;li&gt;手动设置自己顺手的切换快捷键&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2-截图是-macos-的强项之一&#34;&gt;2. 截图是 macOS 的强项之一
&lt;/h3&gt;&lt;p&gt;Windows 用户最容易先学会的是 &lt;code&gt;Win + Shift + S&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;在 macOS 上，高频截图快捷键主要有：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Command + Shift + 3&lt;/code&gt;：全屏截图&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Command + Shift + 4&lt;/code&gt;：区域截图&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Command + Shift + 5&lt;/code&gt;：打开截图与录屏控制面板&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你经常写文档、做教程、反馈 bug，这套截图体系会非常顺手。&lt;/p&gt;
&lt;h3 id=&#34;3-窗口管理和多桌面依赖手势&#34;&gt;3. 窗口管理和多桌面依赖手势
&lt;/h3&gt;&lt;p&gt;Windows 用户可能更依赖拖拽贴边、任务栏预览、多窗口平铺。&lt;/p&gt;
&lt;p&gt;macOS 也能做窗口管理，但很多体验依赖：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;触控板手势&lt;/li&gt;
&lt;li&gt;Mission Control&lt;/li&gt;
&lt;li&gt;多桌面（Spaces）&lt;/li&gt;
&lt;li&gt;全屏应用切换&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你用的是 MacBook，建议花半小时专门熟悉触控板手势，这个收益非常高。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;八最常见的-8-个坑几乎每个-windows-用户都会踩&#34;&gt;八、最常见的 8 个坑，几乎每个 Windows 用户都会踩
&lt;/h2&gt;&lt;h3 id=&#34;1-关了窗口却没退出程序&#34;&gt;1. 关了窗口却没退出程序
&lt;/h3&gt;&lt;p&gt;解决：记住 &lt;code&gt;Command + Q&lt;/code&gt; 才是退出应用。&lt;/p&gt;
&lt;h3 id=&#34;2-找不到此电脑--c盘--d盘&#34;&gt;2. 找不到“此电脑 / C盘 / D盘”
&lt;/h3&gt;&lt;p&gt;解决：改用 Finder 边栏、个人目录和 Spotlight 的思路。&lt;/p&gt;
&lt;h3 id=&#34;3-安装完软件不知道程序本体在哪&#34;&gt;3. 安装完软件，不知道程序本体在哪
&lt;/h3&gt;&lt;p&gt;解决：优先去 &lt;code&gt;Applications&lt;/code&gt;，或者直接用 Spotlight 搜索。&lt;/p&gt;
&lt;h3 id=&#34;4-想右键但手势不顺&#34;&gt;4. 想右键但手势不顺
&lt;/h3&gt;&lt;p&gt;解决：去触控板或鼠标设置里确认辅助点按/右键行为。&lt;/p&gt;
&lt;h3 id=&#34;5-用-delete-却删不掉文件&#34;&gt;5. 用 &lt;code&gt;Delete&lt;/code&gt; 却删不掉文件
&lt;/h3&gt;&lt;p&gt;解决：很多删除动作在 Mac 上要结合 &lt;code&gt;Command&lt;/code&gt;，不要套用 Windows 肌肉记忆。&lt;/p&gt;
&lt;h3 id=&#34;6-以为绿色按钮等于最大化&#34;&gt;6. 以为绿色按钮等于最大化
&lt;/h3&gt;&lt;p&gt;解决：把它理解成“全屏/扩展布局按钮”，不要强行按 Windows 逻辑理解。&lt;/p&gt;
&lt;h3 id=&#34;7-装软件时分不清-dmgpkgapp-store&#34;&gt;7. 装软件时分不清 &lt;code&gt;.dmg&lt;/code&gt;、&lt;code&gt;.pkg&lt;/code&gt;、App Store
&lt;/h3&gt;&lt;p&gt;解决：记住三种安装路径的基本职责，不必每次都慌。&lt;/p&gt;
&lt;h3 id=&#34;8-觉得-mac-不好用其实是不知道-spotlight&#34;&gt;8. 觉得 Mac 不好用，其实是不知道 Spotlight
&lt;/h3&gt;&lt;p&gt;解决：把 &lt;code&gt;Command + Space&lt;/code&gt; 当成系统总入口来练。搜应用、搜文件、搜设置，都先试它。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;九迁移适应建议不要对抗差异要主动重建工作流&#34;&gt;九、迁移适应建议：不要“对抗差异”，要主动重建工作流
&lt;/h2&gt;&lt;p&gt;很多人换平台失败，不是因为系统不好，而是因为一直在做一件事：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;试图把 macOS 强行用成 Windows。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;这种思路会让你持续不舒服。&lt;/p&gt;
&lt;p&gt;更有效的方法是分三阶段适应。&lt;/p&gt;
&lt;h3 id=&#34;第一阶段先活下来&#34;&gt;第一阶段：先活下来
&lt;/h3&gt;&lt;p&gt;目标不是效率最高，而是别卡住。&lt;/p&gt;
&lt;p&gt;你只需要先熟悉：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Spotlight&lt;/li&gt;
&lt;li&gt;Finder 基础目录&lt;/li&gt;
&lt;li&gt;Command 系快捷键&lt;/li&gt;
&lt;li&gt;截图&lt;/li&gt;
&lt;li&gt;安装/卸载应用&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;第二阶段把高频动作重练一遍&#34;&gt;第二阶段：把高频动作重练一遍
&lt;/h3&gt;&lt;p&gt;重点是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;切应用&lt;/li&gt;
&lt;li&gt;关窗口/退应用&lt;/li&gt;
&lt;li&gt;找文件&lt;/li&gt;
&lt;li&gt;打开软件&lt;/li&gt;
&lt;li&gt;处理中英文输入&lt;/li&gt;
&lt;li&gt;做截图和录屏&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这一步会直接决定你是不是还觉得“Mac 很别扭”。&lt;/p&gt;
&lt;h3 id=&#34;第三阶段针对自己的工作角色做增强&#34;&gt;第三阶段：针对自己的工作角色做增强
&lt;/h3&gt;&lt;p&gt;不同角色可以补的方向完全不同：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;开发者：Terminal、Homebrew、Git、SSH、Docker&lt;/li&gt;
&lt;li&gt;内容创作者：截图、预览、文件管理、字体与输入法&lt;/li&gt;
&lt;li&gt;办公用户：多桌面、快捷键、日历、备忘录、Spotlight&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不要一开始就想学完整个系统。&lt;strong&gt;先解决你每天最常做的 20% 动作。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;十一份给-windows-用户的-macos-上手清单&#34;&gt;十、一份给 Windows 用户的 macOS 上手清单
&lt;/h2&gt;&lt;p&gt;如果你希望今天就开始切换，可以按这个顺序配置：&lt;/p&gt;
&lt;h3 id=&#34;第一天&#34;&gt;第一天
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;登录 Apple ID&lt;/li&gt;
&lt;li&gt;打开系统更新&lt;/li&gt;
&lt;li&gt;配置输入法与键盘&lt;/li&gt;
&lt;li&gt;熟悉 Spotlight 和 Finder&lt;/li&gt;
&lt;li&gt;学会三组截图快捷键&lt;/li&gt;
&lt;li&gt;安装浏览器、聊天工具、办公软件&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;第一周&#34;&gt;第一周
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;整理 Dock&lt;/li&gt;
&lt;li&gt;固定 Finder 边栏常用目录&lt;/li&gt;
&lt;li&gt;熟悉 &lt;code&gt;Command + Tab&lt;/code&gt;、&lt;code&gt;Command + Q&lt;/code&gt;、&lt;code&gt;Command + W&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;安装常用工具与开发软件&lt;/li&gt;
&lt;li&gt;配置云盘、密码管理器、同步服务&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;如果你是开发者&#34;&gt;如果你是开发者
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;安装 Xcode Command Line Tools&lt;/li&gt;
&lt;li&gt;安装 Homebrew&lt;/li&gt;
&lt;li&gt;配置 Git / SSH&lt;/li&gt;
&lt;li&gt;安装 Node / Python / Go 等环境&lt;/li&gt;
&lt;li&gt;恢复编辑器、终端、代理与容器工作流&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;写在最后&#34;&gt;写在最后
&lt;/h2&gt;&lt;p&gt;从 Windows 换到 macOS，本质上不是“学一堆新功能”，而是&lt;strong&gt;重建一套更适合这个系统的基础动作&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;一开始不顺是正常的。你过去十几年形成的是 Windows 的路径依赖，不可能在一天内自然消失。&lt;/p&gt;
&lt;p&gt;但只要你尽快补齐下面这几个基础点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Command&lt;/code&gt; 系快捷键&lt;/li&gt;
&lt;li&gt;Spotlight 搜索&lt;/li&gt;
&lt;li&gt;Finder 文件管理逻辑&lt;/li&gt;
&lt;li&gt;App 安装方式&lt;/li&gt;
&lt;li&gt;输入法与截图习惯&lt;/li&gt;
&lt;li&gt;Terminal 与开发环境入口&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;你通常会在一到两周内明显进入状态。&lt;/p&gt;
&lt;p&gt;如果你愿意，我下一篇可以继续写：&lt;strong&gt;“Windows 开发者迁移到 macOS 后，如何一步步重建完整开发环境”&lt;/strong&gt;，把 Git、Homebrew、Node、Python、Docker、代理、SSH 配到可直接工作的程度。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;参考文章与扩展阅读&#34;&gt;参考文章与扩展阅读
&lt;/h2&gt;&lt;p&gt;如果你打算继续深挖，可以从下面这些官方文档开始，信息最稳、更新也最及时：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Apple 官方 Mac 使用手册：&lt;a class=&#34;link&#34; href=&#34;https://support.apple.com/guide/mac-help/welcome/mac&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://support.apple.com/guide/mac-help/welcome/mac&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Apple 官方键盘快捷键：&lt;a class=&#34;link&#34; href=&#34;https://support.apple.com/102650&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://support.apple.com/102650&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Apple 官方截图与录屏说明：&lt;a class=&#34;link&#34; href=&#34;https://support.apple.com/102646&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://support.apple.com/102646&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Apple 官方安装与卸载 App 说明：&lt;a class=&#34;link&#34; href=&#34;https://support.apple.com/guide/mac-help/install-and-uninstall-other-apps-mh35835/mac&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://support.apple.com/guide/mac-help/install-and-uninstall-other-apps-mh35835/mac&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Microsoft Windows 帮助与学习中心：&lt;a class=&#34;link&#34; href=&#34;https://support.microsoft.com/windows&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://support.microsoft.com/windows&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你是开发者，建议继续补这两类内容：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Homebrew 官方文档：&lt;a class=&#34;link&#34; href=&#34;https://brew.sh/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://brew.sh/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Apple Developer 官方文档入口：&lt;a class=&#34;link&#34; href=&#34;https://developer.apple.com/documentation/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://developer.apple.com/documentation/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;阅读顺序建议是：先看 Apple 的 Mac 使用手册和快捷键，再看截图、应用安装；如果你要迁移开发环境，再继续看 Homebrew 和 Apple Developer 文档。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Claude Design × Canva × Claude Code：从一句话到上线产品，设计开发流水线实操指南</title>
        <link>https://blog.ccino.org/p/canva-claude-design-pipeline-2026/</link>
        <pubDate>Sat, 18 Apr 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/canva-claude-design-pipeline-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/canva-claude-design-pipeline-2026/imgs/cover.png" alt="Featured image of post Claude Design × Canva × Claude Code：从一句话到上线产品，设计开发流水线实操指南" /&gt;&lt;p&gt;昨天（2026年4月17日），Anthropic 悄悄发布了 Claude Design。&lt;/p&gt;
&lt;p&gt;媒体还没来得及写完分析稿，Figma 的股价就先跌了 7%。&lt;/p&gt;
&lt;p&gt;这不是巧合。Claude Design 的出现，意味着一条此前只存在于想象中的流水线，终于闭环了：&lt;strong&gt;从一句话描述，到可交互原型，到符合品牌的设计稿，到最终运行的代码——全程自然语言驱动，不需要在多个工具间手动&amp;quot;翻译&amp;quot;&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;本文拆解这条流水线的每一段，以及你现在就能上手的实操路径。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;流水线全景&#34;&gt;流水线全景
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/canva-claude-design-pipeline-2026/imgs/pipeline-overview.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/canva-claude-design-pipeline-2026/imgs/pipeline-overview_hu_4a73ffdccf050936.png 480w, https://blog.ccino.org/p/canva-claude-design-pipeline-2026/imgs/pipeline-overview_hu_d1c5e1fd64df385.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;流水线三节点示意图：Claude Design → Canva → Claude Code&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;三个节点，每个节点都用自然语言驱动，之间的交接不需要人工转换格式。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;第一段claude-design把想法变成设计稿&#34;&gt;第一段：Claude Design——把想法变成设计稿
&lt;/h2&gt;&lt;h3 id=&#34;它能做什么&#34;&gt;它能做什么
&lt;/h3&gt;&lt;p&gt;Claude Design 由 Anthropic Labs 出品，底层跑的是 Opus 4.7。核心能力：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;从文字描述生成完整&lt;strong&gt;设计系统&lt;/strong&gt;（配色、排版、组件规范）&lt;/li&gt;
&lt;li&gt;生成可交互的&lt;strong&gt;网页原型&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;制作&lt;strong&gt;演示 PPT、产品一页纸、落地页&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;读取你的代码库，让原型&amp;quot;长得像&amp;quot;真实产品&lt;/li&gt;
&lt;li&gt;支持上传 DOCX / PPTX / XLSX 作为输入&lt;/li&gt;
&lt;li&gt;用网页截图抓取元素，让原型直接复用现有视觉风格&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;谁能用&#34;&gt;谁能用
&lt;/h3&gt;&lt;p&gt;Pro、Max、Team、Enterprise 订阅均可使用（Enterprise 默认关闭，需管理员开启）。通过 claude.ai 访问，目前逐步灰度放开。&lt;/p&gt;
&lt;h3 id=&#34;怎么用实操步骤&#34;&gt;怎么用——实操步骤
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;场景&lt;/strong&gt;：你要给一个新功能做产品评审 PPT，但没有设计师。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;提示词示例&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;我在做一个 AI 写作助手产品，需要一份 12 页的投资人演示 PPT。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;产品主色是深蓝 #1A2B4A，目标用户是内容创作者。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;请生成完整幻灯片，包含：问题-解法-产品演示-数据-团队-融资计划。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Claude Design 会输出一份结构完整、视觉统一的设计稿。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;关键操作&lt;/strong&gt;：在输出页面点击 &lt;strong&gt;&amp;ldquo;Send to Canva&amp;rdquo;&lt;/strong&gt; 按钮，进入第二段。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;第二段canva-ai-connector套品牌做精修&#34;&gt;第二段：Canva AI Connector——套品牌，做精修
&lt;/h2&gt;&lt;h3 id=&#34;为什么需要这一环&#34;&gt;为什么需要这一环
&lt;/h3&gt;&lt;p&gt;Claude Design 生成的是&amp;quot;结构正确的设计&amp;quot;，但不一定完全符合你公司的品牌规范——字体可能不对，配色可能偏差。Canva 的 &lt;strong&gt;Brand Kit&lt;/strong&gt; 解决这个问题。&lt;/p&gt;
&lt;h3 id=&#34;canva-ai-connector-是什么&#34;&gt;Canva AI Connector 是什么
&lt;/h3&gt;&lt;p&gt;Canva 通过 MCP 协议把自己的设计能力接入 Claude。你可以直接在 Claude 对话里说：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;把这份 PPT 的字体换成我品牌 Kit 里的 Noto Sans SC，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;主色改成 #1A2B4A，封面加上我们的 logo。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Claude 会调用 Canva API，直接在你的 Canva 账户里完成操作，不用你手动一页页改。&lt;/p&gt;
&lt;h3 id=&#34;配置方法&#34;&gt;配置方法
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;进入 &lt;a class=&#34;link&#34; href=&#34;https://claude.com/connectors/canva&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;claude.com/connectors/canva&lt;/a&gt; 授权你的 Canva 账户&lt;/li&gt;
&lt;li&gt;上传你的品牌 Kit（在 Canva 品牌中心完成）&lt;/li&gt;
&lt;li&gt;之后每次在 Claude 里生成设计，都可以一句话套用品牌&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;可用操作清单&lt;/strong&gt;：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;操作&lt;/th&gt;
          &lt;th&gt;说明&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;浏览 / 搜索设计&lt;/td&gt;
          &lt;td&gt;在 Claude 里查找你的 Canva 文件&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;从对话创建设计&lt;/td&gt;
          &lt;td&gt;直接描述生成新设计&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;套用 Brand Kit&lt;/td&gt;
          &lt;td&gt;自动应用品牌色 / 字体 / logo&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;调整尺寸 / 导出&lt;/td&gt;
          &lt;td&gt;一句话改格式，导出 PNG / PDF / PPTX&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;导入链接&lt;/td&gt;
          &lt;td&gt;把 URL 内容直接导入 Canva&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;导出到下一环&#34;&gt;导出到下一环
&lt;/h3&gt;&lt;p&gt;精修完成后，从 Canva 导出 &lt;strong&gt;URL 分享链接&lt;/strong&gt;，或直接在 Claude 的对话里说&amp;quot;交给 Claude Code 实现&amp;quot;。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;第三段claude-code把设计稿变成代码&#34;&gt;第三段：Claude Code——把设计稿变成代码
&lt;/h2&gt;&lt;p&gt;这一环是整条流水线的&amp;quot;实现层&amp;quot;。&lt;/p&gt;
&lt;h3 id=&#34;两种进入方式&#34;&gt;两种进入方式
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;方式一：从 Claude Design 直接移交&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Claude Design 的输出页面有 &amp;ldquo;Hand off to Claude Code&amp;rdquo; 选项。点击后，Claude Code 会拿到设计稿的完整上下文，包括：组件结构、配色变量、交互逻辑。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;方式二：喂给 Claude Code 设计信息&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果你从 Canva 导出的是 PPTX 或截图，可以直接在 Claude Code 的对话里上传，然后说：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;这是我们的产品落地页设计稿。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;请用 React + Tailwind 实现，保持设计一致，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;组件拆分合理，移动端响应式。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;claude-code-能读什么&#34;&gt;Claude Code 能读什么
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;截图（直接上传图片）&lt;/li&gt;
&lt;li&gt;设计稿 URL&lt;/li&gt;
&lt;li&gt;Figma 文件链接（通过 MCP 插件）&lt;/li&gt;
&lt;li&gt;Canva 分享链接&lt;/li&gt;
&lt;li&gt;代码库（直接读 &lt;code&gt;src/&lt;/code&gt; 目录，保持视觉一致）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;实操提示词模板&#34;&gt;实操提示词模板
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 设计转代码
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;设计稿：[粘贴 Canva 分享链接或上传截图]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;技术栈：Next.js 14 + Tailwind CSS + shadcn/ui
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;要求：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 严格还原设计，像素级对齐
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 组件文件拆分：每个模块独立文件
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 配色提取为 CSS 变量
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 支持移动端（375px 断点）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 不要写多余注释
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;完整实操示例30-分钟上线一个落地页&#34;&gt;完整实操示例：30 分钟上线一个落地页
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;任务&lt;/strong&gt;：给新产品做一个宣传落地页，从零开始。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第 1 步（5 分钟）：Claude Design 生成原型&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;做一个 SaaS 工具的落地页设计：AI 驱动的会议记录助手。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;目标用户是中小企业团队。主色深绿 #0D3B2E。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;包含：Hero、功能介绍（3个）、用户评价、价格、CTA。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;输出：完整的视觉原型 → 点击 &amp;ldquo;Send to Canva&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第 2 步（5 分钟）：Canva 套品牌&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在 Claude 里继续说：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;套用我的品牌 Kit，把字体换成 PingFang SC，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;把 logo 替换为 [上传你的 logo]，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;导出为可分享链接。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;第 3 步（20 分钟）：Claude Code 实现&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;新开一个 Claude Code 会话：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;这是我们的落地页设计：[粘贴链接]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;用 Next.js 14 实现，部署目标是 Vercel。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;先给我搭脚手架，再逐个组件实现。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Claude Code 会自动初始化项目、实现组件、写部署配置。完成后 &lt;code&gt;git push&lt;/code&gt;，Vercel 自动触发部署。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;这条流水线适合谁&#34;&gt;这条流水线适合谁
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;角色&lt;/th&gt;
          &lt;th&gt;之前的痛点&lt;/th&gt;
          &lt;th&gt;现在的改变&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;独立开发者&lt;/td&gt;
          &lt;td&gt;做不出好看的界面&lt;/td&gt;
          &lt;td&gt;Claude Design 解决视觉层&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;产品经理&lt;/td&gt;
          &lt;td&gt;改一个原型要等设计师&lt;/td&gt;
          &lt;td&gt;自己就能迭代 10 版&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;创始人&lt;/td&gt;
          &lt;td&gt;验证 idea 成本高&lt;/td&gt;
          &lt;td&gt;当天出原型，当天拿到用户反馈&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;小团队&lt;/td&gt;
          &lt;td&gt;设计-开发交接消耗大&lt;/td&gt;
          &lt;td&gt;一条链路直通，无需人工翻译&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/canva-claude-design-pipeline-2026/imgs/user-roles-comparison.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/canva-claude-design-pipeline-2026/imgs/user-roles-comparison_hu_a5951e492564ea1f.png 480w, https://blog.ccino.org/p/canva-claude-design-pipeline-2026/imgs/user-roles-comparison_hu_6153ea44c6e032.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;四类用户角色对比：之前的痛点 vs 现在的改变&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;当前限制不要踩坑&#34;&gt;当前限制，不要踩坑
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Claude Design 仍是实验阶段&lt;/strong&gt;：输出质量不稳定，复杂交互逻辑可能需要多次迭代&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Canva Brand Kit 需要提前配置&lt;/strong&gt;：没有品牌 Kit 就只能用默认样式&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Claude Code 读设计稿有上限&lt;/strong&gt;：超复杂的设计系统（50+ 组件）建议拆成多个会话处理&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise 用户需要管理员开启 Claude Design&lt;/strong&gt;：不是开箱即用&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;移交上下文会有损耗&lt;/strong&gt;：Claude Design → Claude Code 的自动移交目前仍在完善，手动上传截图更可控&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;这条流水线的核心价值不是&amp;quot;替代设计师&amp;quot;，而是&lt;strong&gt;消除设计和开发之间的摩擦&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;以前，这两个环节之间有一堵墙：格式不通、语言不通、工具不通。设计师用 Figma 画稿，开发者看着稿写代码，中间是无数次沟通和返工。&lt;/p&gt;
&lt;p&gt;现在，Claude Design + Canva AI Connector + Claude Code 把这堵墙拆了。从想法到视觉，从视觉到代码，每一步都用同一种语言——自然语言——驱动。&lt;/p&gt;
&lt;p&gt;Figma 股价跌 7% 不是因为 Claude Design 功能比 Figma 强。而是因为：当这堵墙消失，专业工具生态赖以存在的&amp;quot;中间地带&amp;quot;，开始松动了。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;扩展阅读&#34;&gt;扩展阅读
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Claude Design 官方资源&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.anthropic.com/news/claude-design-anthropic-labs&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Introducing Claude Design by Anthropic Labs&lt;/a&gt; — Anthropic 官方发布公告&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://techcrunch.com/2026/04/17/anthropic-launches-claude-design-a-new-product-for-creating-quick-visuals/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic launches Claude Design, a new product for creating quick visuals&lt;/a&gt; — TechCrunch 报道&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://venturebeat.com/technology/anthropic-just-launched-claude-design-an-ai-tool-that-turns-prompts-into-prototypes-and-challenges-figma&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic just launched Claude Design, an AI tool that turns prompts into prototypes&lt;/a&gt; — VentureBeat 深度分析&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://thenewstack.io/anthropic-claude-design-launch/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic launches Claude Design, a Figma and Canva rival&lt;/a&gt; — The New Stack&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Canva AI Connector&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.canva.com/newsroom/news/claude-ai-connector/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Create on-brand Canva designs directly inside Claude&lt;/a&gt; — Canva 官方公告&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.canva.com/newsroom/news/canva-claude-design/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Introducing Canva in Claude Design&lt;/a&gt; — Canva × Claude Design 合作详情&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.canva.com/help/mcp-agent-setup/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Connect AI assistants to Canva with the AI Connector&lt;/a&gt; — Canva 官方配置指南&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.canva.com/ai-connector/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Design smarter than ever with Canva&amp;rsquo;s AI Connector&lt;/a&gt; — 功能介绍页&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;市场影响&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://gizmodo.com/anthropic-launches-claude-design-figma-stock-immediately-nosedives-2000748071&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic Launches Claude Design, Figma Stock Immediately Nosedives&lt;/a&gt; — Gizmodo：Figma 股价反应&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.theregister.com/2026/04/17/anthropic_debuts_claude_design/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic debuts Claude Design, because who needs designers?&lt;/a&gt; — The Register 评论&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Claude Code安全漏洞解析：评论区 Prompt Injection 如何威胁 AI Agent</title>
        <link>https://blog.ccino.org/p/claude-code-prompt-injection-ai-agent-security-2026/</link>
        <pubDate>Thu, 16 Apr 2026 20:30:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/claude-code-prompt-injection-ai-agent-security-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/claude-code-prompt-injection-ai-agent-security-2026/imgs/cover.png" alt="Featured image of post Claude Code安全漏洞解析：评论区 Prompt Injection 如何威胁 AI Agent" /&gt;
    &lt;blockquote&gt;
        &lt;p&gt;说明：这篇文章基于 SecurityWeek 对相关研究的报道，以及开发者社区在 X 上的公开讨论整理而成。关于具体攻击复现细节、产品内部实现与风险边界，本文尽量按公开来源描述并做分析；其中社交媒体里的判断与猜测部分，会明确以“按发帖者描述”“社区讨论认为”等方式归因，不把未经独立验证的信息直接当成确定事实。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;很多人还在用“AI 会不会胡说八道”来理解大模型风险。&lt;/p&gt;
&lt;p&gt;但如果你最近在关注 Claude Code、Gemini CLI 和 GitHub Copilot Agent 的安全新闻，就会发现一个更现实的问题已经浮出水面：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;真正危险的，不一定是模型本身失控，而是它太愿意相信自己读到的上下文。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;4 月 16 日，SecurityWeek 报道了一项研究结果：Claude Code、Gemini CLI、GitHub Copilot Agent 等 AI coding agent，可能被评论区、issue、外部文本，甚至普通代码仓库内容里的恶意指令影响，进而触发 prompt injection。&lt;/p&gt;
&lt;p&gt;如果只看标题，这很容易被理解成又一次“AI 被越狱”——像一个熟悉的老问题，甚至有点让人审美疲劳。&lt;/p&gt;
&lt;p&gt;但这次真正值得重视的，不在“又被注入了”，而在：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AI Agent 的攻击面，已经从模型内部，扩展到了它愿意读取的一切外部上下文。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;只要一个工具会自动读：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GitHub issue&lt;/li&gt;
&lt;li&gt;PR 评论&lt;/li&gt;
&lt;li&gt;commit message&lt;/li&gt;
&lt;li&gt;README&lt;/li&gt;
&lt;li&gt;文档页面&lt;/li&gt;
&lt;li&gt;第三方网页内容&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它就不只是在“理解信息”，而是在把这些信息纳入自己的决策链。&lt;/p&gt;
&lt;p&gt;而一旦这些内容里混入恶意提示，风险就不再是“模型说错一句话”那么简单，而可能变成：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;错误修改代码&lt;/li&gt;
&lt;li&gt;泄露敏感信息&lt;/li&gt;
&lt;li&gt;执行不该执行的命令&lt;/li&gt;
&lt;li&gt;在高权限环境下做出错误操作&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这就是为什么这次事件比普通的模型安全争议更值得写。&lt;/p&gt;
&lt;p&gt;因为它暴露的不是某一个产品的瑕疵，而是 &lt;strong&gt;Agent 产品化之后的共同结构性风险&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;当 AI 从回答问题，变成主动读上下文、做判断、执行动作的系统后，安全边界也被整体改写了。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;这次漏洞新闻真正刺中的不是-claude-code而是整个-agent-范式&#34;&gt;这次漏洞新闻，真正刺中的不是 Claude Code，而是整个 Agent 范式
&lt;/h2&gt;&lt;p&gt;先把事情说清楚。&lt;/p&gt;
&lt;p&gt;按照 SecurityWeek 的描述，研究人员展示了一类针对 AI coding agent 的 prompt injection 攻击路径：攻击者不需要直接控制模型，也不需要拿到系统权限，而是可以把恶意提示埋在 agent 会读取的内容中，比如 issue 评论、代码注释、仓库文本，甚至看起来再普通不过的协作信息里。&lt;/p&gt;
&lt;p&gt;一旦 Agent 把这些内容当成可信上下文读进去，问题就出现了。&lt;/p&gt;
&lt;p&gt;对聊天机器人来说，上下文污染通常意味着回答跑偏、内容错误，或者输出不符合预期。&lt;/p&gt;
&lt;p&gt;但对 Claude Code 这类工具来说，风险层级明显更高。&lt;/p&gt;
&lt;p&gt;因为它们不是停留在“说”，而是会进一步：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;分析仓库&lt;/li&gt;
&lt;li&gt;制定修改计划&lt;/li&gt;
&lt;li&gt;调用工具&lt;/li&gt;
&lt;li&gt;执行命令&lt;/li&gt;
&lt;li&gt;读写文件&lt;/li&gt;
&lt;li&gt;连续推进任务&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是说，被污染的不是回答，而是 &lt;strong&gt;执行链&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-code-prompt-injection-ai-agent-security-2026/imgs/01-context-pollution.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-code-prompt-injection-ai-agent-security-2026/imgs/01-context-pollution_hu_64c5e8d97c629c48.png 480w, https://blog.ccino.org/p/claude-code-prompt-injection-ai-agent-security-2026/imgs/01-context-pollution_hu_7c11226768ce47d8.png 1024w&#34;
	loading=&#34;lazy&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;这就是为什么这类攻击值得所有在用 AI Agent 的团队警惕。&lt;/p&gt;
&lt;p&gt;过去大家谈 AI 安全，更多是在讲模型会不会生成危险内容、会不会被越狱、会不会给出不当建议。&lt;/p&gt;
&lt;p&gt;而现在的问题已经变成：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;如果模型本身没坏，但它读进去的信息是坏的，会发生什么？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这个问题比“模型是否安全”更难，因为它直接涉及产品设计本身。&lt;/p&gt;
&lt;p&gt;一个 Agent 越好用，往往就意味着：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;它能读更多内容&lt;/li&gt;
&lt;li&gt;它能连接更多工具&lt;/li&gt;
&lt;li&gt;它能自动做更多动作&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;而这三件事，也恰恰会一起放大 prompt injection 的破坏力。&lt;/p&gt;
&lt;p&gt;所以这次新闻真正刺中的，不是 Claude Code 的某个单点失误，而是整个行业正在加速推进的 Agent 范式。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Agent 的价值来自上下文，Agent 的风险也同样来自上下文。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;为什么-cli-agent-比聊天机器人更危险&#34;&gt;为什么 CLI Agent 比聊天机器人更危险？
&lt;/h2&gt;&lt;p&gt;很多人会觉得：&lt;/p&gt;
&lt;p&gt;“被注入，不就是让模型听错话吗？这有什么新鲜的？”&lt;/p&gt;
&lt;p&gt;问题在于，Claude Code 这类 CLI Agent 和普通聊天窗口，根本不是一个危险等级。&lt;/p&gt;
&lt;p&gt;原因很简单：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;聊天机器人通常只有话语权，而 CLI Agent 往往拥有操作权。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这两者的差别，决定了风险不是线性增加，而是成倍放大。&lt;/p&gt;
&lt;h3 id=&#34;1-它默认读得更多&#34;&gt;1. 它默认读得更多
&lt;/h3&gt;&lt;p&gt;普通聊天产品的上下文，大多来自用户显式贴进去的内容。&lt;/p&gt;
&lt;p&gt;但 Claude Code 这类工具，核心卖点之一就是“自动理解项目”。&lt;/p&gt;
&lt;p&gt;它会主动读取：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;代码仓库&lt;/li&gt;
&lt;li&gt;配置文件&lt;/li&gt;
&lt;li&gt;文档&lt;/li&gt;
&lt;li&gt;任务说明&lt;/li&gt;
&lt;li&gt;终端输出&lt;/li&gt;
&lt;li&gt;提交记录&lt;/li&gt;
&lt;li&gt;评论与 issue 讨论&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;读得越多，当然越聪明。&lt;/p&gt;
&lt;p&gt;但反过来说，&lt;strong&gt;可投毒面也越大。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;一个恶意指令不一定会写成“请删除所有文件”这种低级提示。更现实的方式，是把它伪装成：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;团队规范&lt;/li&gt;
&lt;li&gt;Issue 处理说明&lt;/li&gt;
&lt;li&gt;调试步骤&lt;/li&gt;
&lt;li&gt;注释里的提醒&lt;/li&gt;
&lt;li&gt;文档中的隐藏优先级&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对人类开发者来说，这些信息通常还会经过经验判断；但对 Agent 来说，只要它把这些内容纳入“应考虑的上下文”，风险就已经开始成立了。&lt;/p&gt;
&lt;h3 id=&#34;2-它默认权限更高&#34;&gt;2. 它默认权限更高
&lt;/h3&gt;&lt;p&gt;聊天机器人说错了，你最多是被误导。&lt;/p&gt;
&lt;p&gt;CLI Agent 如果判断错了，可能直接：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;改文件&lt;/li&gt;
&lt;li&gt;跑脚本&lt;/li&gt;
&lt;li&gt;调用外部服务&lt;/li&gt;
&lt;li&gt;输出敏感内容&lt;/li&gt;
&lt;li&gt;做出错误提交建议&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这意味着 prompt injection 在 Agent 场景里，不再只是“认知层攻击”，而是可能变成“行为层攻击”。&lt;/p&gt;
&lt;p&gt;也正因为如此，很多企业真正担心的从来不是“模型会不会说疯话”，而是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;它会不会在一个你没来得及检查的上下文里，做出一个高权限但低可信的动作。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;3-它默认任务链更长&#34;&gt;3. 它默认任务链更长
&lt;/h3&gt;&lt;p&gt;CLI Agent 的另一个特点，是它会连续执行。&lt;/p&gt;
&lt;p&gt;从读问题，到分析仓库，到生成方案，再到修改代码、验证结果，中间可能要经历很多步。&lt;/p&gt;
&lt;p&gt;问题也就在这里：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;任务链越长，错误放大的机会就越多。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;一个藏在评论区里的恶意提示，未必会立刻触发灾难，但它可以在某一步微妙地改变优先级、诱导工具选择、改变目标判断，最后把问题带到你最不希望它去的地方。&lt;/p&gt;
&lt;p&gt;所以这类产品的安全挑战，和传统“输入一个 prompt，输出一段文字”的模型应用已经完全不是一回事。&lt;/p&gt;
&lt;h2 id=&#34;从模型安全到上下文安全行业风险边界正在整体迁移&#34;&gt;从“模型安全”到“上下文安全”，行业风险边界正在整体迁移
&lt;/h2&gt;&lt;p&gt;如果说过去两年 AI 安全讨论的中心词是 jailbreak、hallucination、alignment，那么从今年开始，一个更务实的关键词会越来越重要：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;context security。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;翻成大白话，就是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;不是只管模型要不要听话，而是要管它到底在听谁的话。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这听上去只是措辞变化，实际上却代表了风险判断框架的变化。&lt;/p&gt;
&lt;p&gt;以前大家默认的思路是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;模型本身足够安全&lt;/li&gt;
&lt;li&gt;它的系统提示词设计合理&lt;/li&gt;
&lt;li&gt;它的拒答机制够强&lt;/li&gt;
&lt;li&gt;那么整体风险大体可控&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但 Agent 场景会打破这个假设。&lt;/p&gt;
&lt;p&gt;因为一个再“安全”的模型，只要被放进一个会不断吞入外部上下文、还拥有工具调用能力的系统里，它的风险就不再由模型单独决定，而是由整条链路共同决定：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;什么内容可以被读入&lt;/li&gt;
&lt;li&gt;哪些来源默认可信&lt;/li&gt;
&lt;li&gt;哪些文本只该参考，不能执行&lt;/li&gt;
&lt;li&gt;哪些操作必须经过确认&lt;/li&gt;
&lt;li&gt;哪些上下文需要隔离或清洗&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;换句话说，风险不再只在模型层，而是在 &lt;strong&gt;系统编排层&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这也是为什么这次 Claude Code 相关新闻背后，其实指向了一个更大的行业趋势：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AI Agent 的主战场，正在从“谁更聪明”转向“谁更可控”。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;谁能把以下几件事处理好，谁才更可能真正进入企业核心流程：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;上下文信任分层&lt;/li&gt;
&lt;li&gt;工具权限分级&lt;/li&gt;
&lt;li&gt;可执行操作的确认机制&lt;/li&gt;
&lt;li&gt;审计与回溯能力&lt;/li&gt;
&lt;li&gt;对外部文本的污染防护&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类能力平时不容易成为宣传亮点，但到了真正落地的时候，它们往往决定生死。&lt;/p&gt;
&lt;p&gt;因为企业不怕一个 AI 偶尔答错一句话，企业怕的是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;一个看起来很能干的 AI，在错误上下文里，干成了一件真的会出事的事。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;企业接入-ai-agent-前至少要补三道安全防线&#34;&gt;企业接入 AI Agent 前，至少要补三道安全防线
&lt;/h2&gt;&lt;p&gt;很多团队看到这类新闻后，第一反应是两个极端。&lt;/p&gt;
&lt;p&gt;一种是：“这太危险了，别用了。”&lt;/p&gt;
&lt;p&gt;另一种是：“技术总会进步，先用起来再说。”&lt;/p&gt;
&lt;p&gt;这两种反应都不够成熟。&lt;/p&gt;
&lt;p&gt;更现实的做法是承认：Agent 当然值得用，但必须在设计上补安全边界。&lt;/p&gt;
&lt;p&gt;至少有三道防线，未来会越来越像企业接入 AI Agent 的标配。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-code-prompt-injection-ai-agent-security-2026/imgs/02-three-defenses.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-code-prompt-injection-ai-agent-security-2026/imgs/02-three-defenses_hu_54451d58825bb0a4.png 480w, https://blog.ccino.org/p/claude-code-prompt-injection-ai-agent-security-2026/imgs/02-three-defenses_hu_779c9893728ef197.png 1024w&#34;
	loading=&#34;lazy&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;第一层把可读上下文分级而不是默认全信&#34;&gt;第一层：把“可读上下文”分级，而不是默认全信
&lt;/h3&gt;&lt;p&gt;现在很多 Agent 产品追求的是上下文越多越好。&lt;/p&gt;
&lt;p&gt;但企业在真正部署时，不能只看“它能读什么”，更要看“它凭什么信什么”。&lt;/p&gt;
&lt;p&gt;更合理的做法是把上下文拆层：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;高可信&lt;/strong&gt;：本地代码、内部规范、人工确认过的任务描述&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;中可信&lt;/strong&gt;：仓库内历史文档、已审核评论、团队公开讨论&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;低可信&lt;/strong&gt;：外部网页、未审核 issue、第三方评论、抓取文本&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;让 Agent 读到低可信内容，不一定必须禁止；但至少不该让它把这些内容直接等同于“系统级指令”。&lt;/p&gt;
&lt;p&gt;一句话：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;能读，不等于能信；能参考，不等于能执行。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;第二层把可执行动作分级而不是默认一路自动化&#34;&gt;第二层：把“可执行动作”分级，而不是默认一路自动化
&lt;/h3&gt;&lt;p&gt;Agent 的核心魅力在于自动化，但自动化不是越多越好。&lt;/p&gt;
&lt;p&gt;企业真正应该做的，不是简单追求“让它一把梭完成任务”，而是把动作拆成不同风险等级：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;低风险：读文件、总结内容、生成 patch 建议&lt;/li&gt;
&lt;li&gt;中风险：修改非关键文件、运行只读检查、整理 diff&lt;/li&gt;
&lt;li&gt;高风险：执行 shell 命令、访问外部网络、修改生产配置、推送代码&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;越接近高风险动作，越应该提高确认门槛。&lt;/p&gt;
&lt;p&gt;否则 prompt injection 一旦穿透上下文层，就会直达执行层。&lt;/p&gt;
&lt;h3 id=&#34;第三层把事后审计当作基础设施而不是附属功能&#34;&gt;第三层：把“事后审计”当作基础设施，而不是附属功能
&lt;/h3&gt;&lt;p&gt;AI Agent 真正进入团队流程之后，最重要的问题之一不是“它有没有错”，而是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;错了之后，你能不能还原它为什么错。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这就要求系统具备足够好的可审计性：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;它读了哪些上下文&lt;/li&gt;
&lt;li&gt;哪条内容影响了它的判断&lt;/li&gt;
&lt;li&gt;它为什么做出某个工具调用&lt;/li&gt;
&lt;li&gt;哪一步经过了人工确认，哪一步没有&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果没有这些能力，企业就会陷入一个最糟糕的局面：&lt;/p&gt;
&lt;p&gt;AI 出了问题，但没人说得清它到底是被哪句话带偏的。&lt;/p&gt;
&lt;p&gt;而一旦无法回溯，就谈不上真正的风控，也谈不上规模化部署。&lt;/p&gt;
&lt;h2 id=&#34;这件事为什么会成为-agent-普及前的共同门槛&#34;&gt;这件事为什么会成为 Agent 普及前的共同门槛？
&lt;/h2&gt;&lt;p&gt;Claude Code、Gemini CLI、Copilot Agent 这次一起被点名，某种意义上反而是一件好事。&lt;/p&gt;
&lt;p&gt;因为它说明这不是某家公司单独踩坑，而是一个行业共性问题终于被看见了。&lt;/p&gt;
&lt;p&gt;这类问题越早暴露，越有利于整个 Agent 生态尽快从“会不会用”走向“怎么安全地用”。&lt;/p&gt;
&lt;p&gt;接下来大概率会发生三件事。&lt;/p&gt;
&lt;h3 id=&#34;1-产品竞争焦点会从能力秀肌肉转向安全治理能力&#34;&gt;1. 产品竞争焦点会从“能力秀肌肉”转向“安全治理能力”
&lt;/h3&gt;&lt;p&gt;过去产品发布最喜欢强调：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;更长上下文&lt;/li&gt;
&lt;li&gt;更强代码能力&lt;/li&gt;
&lt;li&gt;更自动化的执行链&lt;/li&gt;
&lt;li&gt;更少人工介入&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;未来这些当然还重要，但企业真正会为之买单的，越来越可能是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;权限边界控制&lt;/li&gt;
&lt;li&gt;上下文来源隔离&lt;/li&gt;
&lt;li&gt;注入风险防护&lt;/li&gt;
&lt;li&gt;行为回放和审计&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;谁能把这些安全治理能力做成默认能力，而不是企业自己额外补丁，谁就更容易吃到真正的企业落地机会。&lt;/p&gt;
&lt;h3 id=&#34;2-开发团队会重新分工ai-负责执行人类负责设边界&#34;&gt;2. 开发团队会重新分工：AI 负责执行，人类负责设边界
&lt;/h3&gt;&lt;p&gt;这次事件还有一个更深的启发。&lt;/p&gt;
&lt;p&gt;很多人过去想象的 AI 替代路径是：AI 越来越会写，人类越来越少写。&lt;/p&gt;
&lt;p&gt;但更真实的未来可能是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI 越来越会执行&lt;/li&gt;
&lt;li&gt;人类越来越负责定义目标、划定边界、验证可信性&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是说，人类的价值不会简单消失，而是更多转移到：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;任务拆解&lt;/li&gt;
&lt;li&gt;风险判断&lt;/li&gt;
&lt;li&gt;边界设定&lt;/li&gt;
&lt;li&gt;异常审查&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在 Agent 时代，这些能力会比“会不会手敲代码”更重要。&lt;/p&gt;
&lt;h3 id=&#34;3-prompt-injection-会变成每个-agent-产品都绕不开的必修课&#34;&gt;3. Prompt Injection 会变成每个 Agent 产品都绕不开的必修课
&lt;/h3&gt;&lt;p&gt;这类问题不会因为某一轮修补就彻底消失。&lt;/p&gt;
&lt;p&gt;原因很简单：只要 Agent 需要读外部世界，它就一定会面对不可信输入。&lt;/p&gt;
&lt;p&gt;所以 Prompt Injection 不会是一个“修一次就结束”的漏洞类别，而更像 SQL 注入、XSS 之于 Web 应用——它会变成一类长期存在、需要体系化治理的基础安全问题。&lt;/p&gt;
&lt;p&gt;区别只在于，过去 Web 的攻击面是输入框、URL、脚本；现在 Agent 的攻击面变成了：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;注释&lt;/li&gt;
&lt;li&gt;评论&lt;/li&gt;
&lt;li&gt;文档&lt;/li&gt;
&lt;li&gt;提示片段&lt;/li&gt;
&lt;li&gt;外部页面&lt;/li&gt;
&lt;li&gt;协作文本&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这就是新一代软件系统的现实。&lt;/p&gt;
&lt;p&gt;Agent 越强，它就越像一个会执行的操作系统层；而一个操作系统层，注定要把安全治理当作默认能力，而不是可选插件。&lt;/p&gt;
&lt;h2 id=&#34;结尾&#34;&gt;结尾
&lt;/h2&gt;&lt;p&gt;Claude Code 这次被“评论区偷袭”，表面上看是一条安全新闻，实质上却更像一个行业提醒：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Agent 时代真正的危险，不一定来自模型内部的失控，而可能来自模型外部的污染。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这件事真正改变的，不是大家对 Claude Code 一款产品的印象，而是对整个 AI Agent 方向的判断。&lt;/p&gt;
&lt;p&gt;过去我们担心的是：AI 会不会乱说。&lt;/p&gt;
&lt;p&gt;现在我们更该担心的是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;当 AI 开始读评论、读仓库、读网页、还能自己动手做事时，它到底凭什么判断哪些话该听，哪些话不该听？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这是一个比“模型够不够聪明”更现实、也更紧迫的问题。&lt;/p&gt;
&lt;p&gt;因为如果这个问题解决不好，Agent 的能力越强，风险只会越大。&lt;/p&gt;
&lt;p&gt;但反过来说，如果行业真的能把“上下文安全”“权限边界”“行为审计”这些能力补起来，那今天这类新闻也许会被回头看成一个必要阶段：&lt;/p&gt;
&lt;p&gt;它不是在证明 Agent 不可靠。&lt;/p&gt;
&lt;p&gt;它是在逼整个行业承认：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;真正成熟的 AI Agent，不能只有能力，没有边界。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;而谁先把边界做出来，谁才有资格把 Agent 真正带进生产世界。&lt;/p&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.securityweek.com/claude-code-gemini-cli-github-copilot-agents-vulnerable-to-prompt-injection-via-comments/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SecurityWeek: Claude Code, Gemini CLI, GitHub Copilot Agents Vulnerable to Prompt Injection via Comments&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.helpnetsecurity.com/2026/04/16/anthropic-claude-identity-verification-government-id/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Help Net Security: Anthropic tests user trust with ID and selfie checks for Claude&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/0xLogicrw/status/2043584623704486336&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;X: @0xLogicrw on Cursor Agent / Claude Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/vibercoding/status/2043644101497876611&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;X: @vibercoding on Cursor proxy layer&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Claude Code 找出了 Linux 内核 23 年漏洞：AI 编程工具开始吃掉安全研究</title>
        <link>https://blog.ccino.org/p/claude-code-linux-kernel-vulnerability-2026/</link>
        <pubDate>Wed, 15 Apr 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/claude-code-linux-kernel-vulnerability-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/claude-code-linux-kernel-vulnerability-2026/imgs/cover.png" alt="Featured image of post Claude Code 找出了 Linux 内核 23 年漏洞：AI 编程工具开始吃掉安全研究" /&gt;
    &lt;blockquote&gt;
        &lt;p&gt;这篇文章基于 &lt;a class=&#34;link&#34; href=&#34;https://www.infoq.com/news/2026/04/claude-code-linux-vulnerability/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;InfoQ 的报道&lt;/a&gt; 与相关公开讨论扩写。文中关于漏洞发现过程与影响范围的表述，以公开来源已披露内容为准；对于行业影响和职业变化部分，则是我的分析判断。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;如果你最近还把 Claude Code 理解成“一个更强的 AI 写代码工具”，那你可能已经落后于它的真实进化速度了。&lt;/p&gt;
&lt;p&gt;4 月 15 日，InfoQ 报道了一件足够当作分水岭的事：Anthropic 研究员 Nicholas Carlini 使用 Claude Code，在 Linux 内核的 NFS 驱动里发现了一个隐藏了 23 年、而且可以远程利用的 heap buffer overflow。&lt;/p&gt;
&lt;p&gt;很多人看到这条新闻，第一反应大概会是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AI 又找到一个漏洞。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;但如果你只读到这里，就会错过真正重要的部分。&lt;/p&gt;
&lt;p&gt;这件事最让我在意的地方，不是 Claude Code 又多强了一点，而是它第一次用一个足够硬的现实案例，把自己推进了安全研究这个高门槛领域。&lt;/p&gt;
&lt;p&gt;这和“它会不会写代码”已经不是一个层级的问题了。&lt;/p&gt;
&lt;p&gt;过去我们讨论 Claude Code、Cursor、Codex，讨论的是谁更像最强 copilot，谁更懂项目，谁更能接住完整开发工作流。&lt;/p&gt;
&lt;p&gt;而现在，一个更大的问题突然摆在面前：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果 AI 已经能发现内核级别的真实漏洞&lt;/li&gt;
&lt;li&gt;如果它能在复杂系统里找到人类长期忽略的风险点&lt;/li&gt;
&lt;li&gt;如果它开始参与原本属于资深研究员的工作&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;那它到底还是“编程助手”，还是某种正在成形的初代安全研究员？&lt;/p&gt;
&lt;p&gt;这不是措辞游戏，而是职业边界正在被重写的信号。&lt;/p&gt;
&lt;p&gt;因为一旦 AI 编程工具开始稳定参与这类高价值任务，被改变的就不只是开发效率，还会包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;安全研究怎么做&lt;/li&gt;
&lt;li&gt;代码审计怎么做&lt;/li&gt;
&lt;li&gt;企业如何分配高风险工作的责任&lt;/li&gt;
&lt;li&gt;开发者未来到底该把精力花在“写得更快”，还是“看得更深”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;换句话说，Claude Code 找出这个 23 年漏洞，真正刺穿的不是 Linux 内核。&lt;/p&gt;
&lt;p&gt;它刺穿的是很多人对 AI 编程工具的旧认知：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AI 的终点，可能从来都不只是帮你写代码，而是开始帮你发现那些最贵、最危险、最容易被忽视的问题。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-code-linux-kernel-vulnerability-2026/imgs/body-01.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-code-linux-kernel-vulnerability-2026/imgs/body-01_hu_1eb397bf8378e152.png 480w, https://blog.ccino.org/p/claude-code-linux-kernel-vulnerability-2026/imgs/body-01_hu_8fbd7f4609cf34e1.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Claude Code 从写代码走向安全研究&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;一这次-linux-内核漏洞事件到底意味着什么&#34;&gt;一、这次 Linux 内核漏洞事件，到底意味着什么？
&lt;/h2&gt;&lt;p&gt;先把事情说清楚。&lt;/p&gt;
&lt;p&gt;根据 InfoQ 的报道，这次被发现的问题位于 Linux 内核的 NFS 驱动中，是一个可远程利用的 heap buffer overflow，并且已经隐藏了 23 年。&lt;/p&gt;
&lt;p&gt;光是这几个关键词放在一起，含义就已经很不一样了：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Linux 内核&lt;/strong&gt;：不是普通业务代码，而是基础设施级的软件系统&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;23 年&lt;/strong&gt;：说明这不是一个刚引入的新问题，而是长期存在、长期未被发现的老问题&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;远程可利用&lt;/strong&gt;：意味着它不是学术上的“理论漏洞”，而是具备现实攻击价值&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是说，这不是“Claude Code 帮人改了一个 bug”，而是它参与发现了一个高价值、强现实性的安全问题。&lt;/p&gt;
&lt;p&gt;这类事件之所以重要，不在于它能不能制造一波传播，而在于它第一次把 AI 编程工具带进了一个更严肃的语境：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;真实世界的软件安全研究。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;过去一年，大家已经见过太多 AI 编程工具的常规表演：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;写一个页面&lt;/li&gt;
&lt;li&gt;重构一个模块&lt;/li&gt;
&lt;li&gt;修一些测试&lt;/li&gt;
&lt;li&gt;解释报错&lt;/li&gt;
&lt;li&gt;做一些脚本自动化&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些当然已经很强，也已经足够改变很多开发者的工作方式。&lt;/p&gt;
&lt;p&gt;但它们本质上仍然属于“生产力增强”的范畴。&lt;/p&gt;
&lt;p&gt;而这次不同。&lt;/p&gt;
&lt;p&gt;漏洞发现这件事，要求的不是把一个明确需求翻译成代码，而是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;理解复杂系统的行为&lt;/li&gt;
&lt;li&gt;在大量上下文中发现异常模式&lt;/li&gt;
&lt;li&gt;沿着看似不明显的线索持续追查&lt;/li&gt;
&lt;li&gt;最终定位到真正有风险的点&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这已经更接近“研究”和“审计”的工作，而不是单纯“执行”。&lt;/p&gt;
&lt;p&gt;所以这次事件最值得关注的地方，不是一个 headline，而是一个信号：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Claude Code 代表的 AI 工具，已经开始向更高价值的专家工作渗透。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;二为什么找到漏洞比写出代码更接近真正的专家工作&#34;&gt;二、为什么“找到漏洞”比“写出代码”更接近真正的专家工作？
&lt;/h2&gt;&lt;p&gt;很多人会低估这件事，因为在大众语境里，“写代码”看起来已经很难了。&lt;/p&gt;
&lt;p&gt;但在真实的软件工程体系里，&lt;strong&gt;写代码和找漏洞，其实是两种完全不同的能力层级。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;写代码，哪怕是复杂代码，很多时候仍然有比较明确的目标：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;输入是什么&lt;/li&gt;
&lt;li&gt;输出是什么&lt;/li&gt;
&lt;li&gt;功能边界是什么&lt;/li&gt;
&lt;li&gt;成功条件是什么&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;而漏洞研究不是这样。&lt;/p&gt;
&lt;p&gt;它面对的往往是一个没有明确提示的问题空间。&lt;/p&gt;
&lt;p&gt;研究者需要做的，不是“把某件事做出来”，而是去怀疑：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;这里有没有隐藏的边界条件&lt;/li&gt;
&lt;li&gt;某个看起来正常的流程会不会在特殊情况下失效&lt;/li&gt;
&lt;li&gt;某种历史兼容逻辑会不会留下长期风险&lt;/li&gt;
&lt;li&gt;一个局部没问题的实现，在系统级联动下会不会变成漏洞&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类工作更像什么？&lt;/p&gt;
&lt;p&gt;更像侦探，而不是施工队。&lt;/p&gt;
&lt;p&gt;你要先知道该怀疑什么，再知道该往哪儿挖，最后还要判断这个发现到底是真的危险，还是只是一个表面异常。&lt;/p&gt;
&lt;p&gt;这也是为什么漏洞研究一直是门槛极高的工作。&lt;/p&gt;
&lt;p&gt;真正稀缺的，不是“会不会写 exploit”，而是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;你有没有能力在庞杂系统里看到别人没看到的风险结构。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;而 Claude Code 这次之所以令人警觉，正是因为它开始在这类任务里显示出价值。&lt;/p&gt;
&lt;p&gt;这背后意味着两件事。&lt;/p&gt;
&lt;h3 id=&#34;1-ai-已经不只是生成器了&#34;&gt;1. AI 已经不只是“生成器”了
&lt;/h3&gt;&lt;p&gt;很多人对 AI 工具的理解还停留在生成范式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你给它 prompt&lt;/li&gt;
&lt;li&gt;它给你结果&lt;/li&gt;
&lt;li&gt;结果可能更快，也可能更完整&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但安全研究不是生成任务。&lt;/p&gt;
&lt;p&gt;它更像是&lt;strong&gt;探索任务&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;Claude Code 这类工具真正强的地方，恰恰不是会吐出一段像样代码，而是它开始具备：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;阅读大量代码的耐力&lt;/li&gt;
&lt;li&gt;在上下文之间持续跳转的能力&lt;/li&gt;
&lt;li&gt;对异常路径进行低成本试探的能力&lt;/li&gt;
&lt;li&gt;对怀疑点快速形成假设并验证的能力&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这让它天然适合那些“人类做起来很累、但又必须保持高度注意力”的工作。&lt;/p&gt;
&lt;h3 id=&#34;2-ai-的价值开始从替你做变成替你发现&#34;&gt;2. AI 的价值，开始从“替你做”变成“替你发现”
&lt;/h3&gt;&lt;p&gt;“替你写”当然重要，但“替你发现”更危险，也更值钱。&lt;/p&gt;
&lt;p&gt;因为一旦一个工具能够稳定地发现：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;隐藏 bug&lt;/li&gt;
&lt;li&gt;逻辑缺陷&lt;/li&gt;
&lt;li&gt;安全风险&lt;/li&gt;
&lt;li&gt;架构脆弱点&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它的角色就会升级。&lt;/p&gt;
&lt;p&gt;它不再只是一个效率工具，而开始变成一种&lt;strong&gt;认知放大器&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这类能力会直接影响软件研发、安全团队、审计流程，甚至责任划分方式。&lt;/p&gt;
&lt;p&gt;这也是为什么这次事件的含金量，远高于“又一个 benchmark 刷新了”。&lt;/p&gt;
&lt;p&gt;benchmark 提升的是认知预期。&lt;/p&gt;
&lt;p&gt;而真实漏洞案例改变的是行业判断。&lt;/p&gt;
&lt;h2 id=&#34;三claude-code-真正代表的不是某个功能升级而是能力边界外扩&#34;&gt;三、Claude Code 真正代表的，不是某个功能升级，而是能力边界外扩
&lt;/h2&gt;&lt;p&gt;如果把最近几天围绕 Claude Code 的新闻放在一起看，你会发现一个很有意思的对比。&lt;/p&gt;
&lt;p&gt;一边，是大家在讨论它的 routines、desktop、parallel sessions，也就是工作流和产品层的升级。&lt;/p&gt;
&lt;p&gt;另一边，是它开始被报道用于发现高价值的真实安全问题。&lt;/p&gt;
&lt;p&gt;这两类消息表面看完全不同，但放在一起，其实指向同一件事：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Claude Code 正在从“一个更好用的 AI 编程工具”，升级成“一个能承接更完整专业任务的系统”。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这件事有三个层面的变化。&lt;/p&gt;
&lt;h3 id=&#34;1-任务复杂度在抬升&#34;&gt;1. 任务复杂度在抬升
&lt;/h3&gt;&lt;p&gt;最早的时候，大家拿 AI 工具做的事情通常都很短平快：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;写函数&lt;/li&gt;
&lt;li&gt;改页面&lt;/li&gt;
&lt;li&gt;补测试&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;而现在，重度用户越来越自然地把更大的任务交给它：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;读整个仓库&lt;/li&gt;
&lt;li&gt;设计改动方案&lt;/li&gt;
&lt;li&gt;跨文件修改&lt;/li&gt;
&lt;li&gt;跑命令与排障&lt;/li&gt;
&lt;li&gt;审查逻辑缺陷&lt;/li&gt;
&lt;li&gt;追踪安全风险&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Claude Code 不只是“更会写”，而是越来越像一个可以独立推进复杂任务的执行体。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-code-linux-kernel-vulnerability-2026/imgs/body-02.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-code-linux-kernel-vulnerability-2026/imgs/body-02_hu_ad65de7d7925d1b7.png 480w, https://blog.ccino.org/p/claude-code-linux-kernel-vulnerability-2026/imgs/body-02_hu_83c22375a9808bb.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;AI 工具正在深入系统底层发现隐藏风险&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;2-任务价值在上移&#34;&gt;2. 任务价值在上移
&lt;/h3&gt;&lt;p&gt;写一个 demo 页很有用。&lt;/p&gt;
&lt;p&gt;写一个自动化脚本也很有用。&lt;/p&gt;
&lt;p&gt;但发现一个内核级别的远程可利用漏洞，属于完全不同的价值层。&lt;/p&gt;
&lt;p&gt;它说明 AI 参与的任务，正在从“提升效率”转向“创造关键发现”。&lt;/p&gt;
&lt;p&gt;而一旦工具开始参与这类高价值工作，它的产品逻辑也会被重新定义。&lt;/p&gt;
&lt;p&gt;人们会问的，不再是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;它能不能写得更快？&lt;/li&gt;
&lt;li&gt;它能不能少犯错？&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;而会变成：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;它能不能在关键任务里被信任？&lt;/li&gt;
&lt;li&gt;它能不能进入更高风险的工作场景？&lt;/li&gt;
&lt;li&gt;它能不能经得起验证、审计和复现？&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;3-用户身份也在变化&#34;&gt;3. 用户身份也在变化
&lt;/h3&gt;&lt;p&gt;过去最能从 Claude Code 受益的人，也许是想加速日常开发的工程师。&lt;/p&gt;
&lt;p&gt;未来最依赖它的人，可能会扩展成：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;安全研究员&lt;/li&gt;
&lt;li&gt;代码审计团队&lt;/li&gt;
&lt;li&gt;SRE / 基础设施团队&lt;/li&gt;
&lt;li&gt;处理遗留系统的大型组织&lt;/li&gt;
&lt;li&gt;需要高强度代码理解能力的咨询或服务团队&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是说，它的市场不是变小了，而是在上移。&lt;/p&gt;
&lt;p&gt;它开始从“人人都能用”的工具，逐步接近“专业团队必须认真评估”的系统。&lt;/p&gt;
&lt;h2 id=&#34;四安全研究为什么会成为-ai-编程工具的下一块高地&#34;&gt;四、安全研究，为什么会成为 AI 编程工具的下一块高地？
&lt;/h2&gt;&lt;p&gt;如果你顺着这个趋势继续往前看，会发现安全研究几乎是 AI 编程工具最自然的下一块战场。&lt;/p&gt;
&lt;p&gt;原因很简单。&lt;/p&gt;
&lt;h3 id=&#34;1-安全研究本身就是高密度阅读--假设验证工作&#34;&gt;1. 安全研究本身就是“高密度阅读 + 假设验证”工作
&lt;/h3&gt;&lt;p&gt;这正是 AI 擅长补位的地方。&lt;/p&gt;
&lt;p&gt;一个资深安全研究员，很多时间并不在“炫技”，而是在做非常消耗精力的工作：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;读代码&lt;/li&gt;
&lt;li&gt;猜边界&lt;/li&gt;
&lt;li&gt;查调用链&lt;/li&gt;
&lt;li&gt;做试验&lt;/li&gt;
&lt;li&gt;排除伪线索&lt;/li&gt;
&lt;li&gt;反复确认怀疑点&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类任务的特点是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;信息量极大&lt;/li&gt;
&lt;li&gt;上下文切换频繁&lt;/li&gt;
&lt;li&gt;人脑容易疲劳&lt;/li&gt;
&lt;li&gt;很多努力最终没有结果&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;AI 在这里的优势，不一定是“比人更聪明”，而是它不会因为重复阅读和长时间试探而迅速疲劳。&lt;/p&gt;
&lt;p&gt;它可以把人类研究员最耗耐心的部分，大幅前移或并行化。&lt;/p&gt;
&lt;h3 id=&#34;2-安全问题的商业价值很高&#34;&gt;2. 安全问题的商业价值很高
&lt;/h3&gt;&lt;p&gt;不是所有 AI 能力都容易变现。&lt;/p&gt;
&lt;p&gt;会写一段页面代码，当然有价值，但很容易卷到价格战。&lt;/p&gt;
&lt;p&gt;而能帮助团队：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;提前发现漏洞&lt;/li&gt;
&lt;li&gt;缩短审计时间&lt;/li&gt;
&lt;li&gt;降低安全事故概率&lt;/li&gt;
&lt;li&gt;改善高风险系统的可验证性&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这种能力的商业价值高得多。&lt;/p&gt;
&lt;p&gt;因为它直接关联的是损失、责任和合规。&lt;/p&gt;
&lt;p&gt;换句话说，安全不是“加分项”，而是能决定企业愿不愿意买单的硬需求。&lt;/p&gt;
&lt;h3 id=&#34;3-安全场景会倒逼-ai-产品变得更可靠&#34;&gt;3. 安全场景会倒逼 AI 产品变得更可靠
&lt;/h3&gt;&lt;p&gt;如果 AI 只是拿来写营销文案，它偶尔翻车，问题不大。&lt;/p&gt;
&lt;p&gt;但如果 AI 开始参与安全研究，那行业对它的要求就会陡然提高：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;发现必须可复现&lt;/li&gt;
&lt;li&gt;推理链必须可追溯&lt;/li&gt;
&lt;li&gt;结论必须可验证&lt;/li&gt;
&lt;li&gt;错误必须能被快速识别&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这会逼着 AI 编程工具往一个更成熟的方向走：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;不是只追求“看起来聪明”，而是追求“在关键任务里可被信任”。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;而一旦产品朝这个方向演化，它反过来也会提升在企业市场中的位置。&lt;/p&gt;
&lt;p&gt;所以从长期看，安全研究并不是 Claude Code 的“副线能力”，很可能会变成它真正拉开差距的一块高地。&lt;/p&gt;
&lt;h2 id=&#34;五真正的问题不是ai-会不会替代安全研究员而是人机分工会怎么重写&#34;&gt;五、真正的问题不是“AI 会不会替代安全研究员”，而是人机分工会怎么重写
&lt;/h2&gt;&lt;p&gt;每次这类新闻一出来，都会有人立刻问：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;那安全研究员是不是要被替代了？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这个问题问得太快了。&lt;/p&gt;
&lt;p&gt;至少在可见阶段，真正发生的不是“替代”，而是&lt;strong&gt;分工重写&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;原因很简单。&lt;/p&gt;
&lt;p&gt;Claude Code 可以帮助发现问题，但“发现”不等于“完成”。&lt;/p&gt;
&lt;p&gt;在高价值安全工作里，后面仍然有很多环节离不开人：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;判断一个问题是否真的具备攻击价值&lt;/li&gt;
&lt;li&gt;设计复现方式与验证路径&lt;/li&gt;
&lt;li&gt;理解风险的真实影响范围&lt;/li&gt;
&lt;li&gt;判断披露边界与修复优先级&lt;/li&gt;
&lt;li&gt;处理伦理、责任和对外沟通&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些部分需要的不只是代码理解，还需要经验、判断、协作与责任承担。&lt;/p&gt;
&lt;p&gt;所以更准确的说法不是：&lt;/p&gt;
&lt;p&gt;“AI 开始取代安全研究员。”&lt;/p&gt;
&lt;p&gt;而是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AI 正在把安全研究员从大量低产出的探索劳动里解放出来，让人类把更多精力放到判断、验证和决策上。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;未来高水平研究员的差异，未必只体现在“会不会手工挖漏洞”，而会越来越体现在：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;会不会设计更好的 AI 协作流程&lt;/li&gt;
&lt;li&gt;会不会给 AI 提供更高质量的调查路径&lt;/li&gt;
&lt;li&gt;会不会快速识别 AI 的假阳性和盲区&lt;/li&gt;
&lt;li&gt;会不会把 AI 的发现变成真正有价值的安全结论&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;换句话说，下一代安全研究员的竞争力，可能不是“拒绝 AI”，而是“谁更会把 AI 变成自己的外脑”。&lt;/p&gt;
&lt;h2 id=&#34;六对普通开发者来说这件事真正值得学什么&#34;&gt;六、对普通开发者来说，这件事真正值得学什么？
&lt;/h2&gt;&lt;p&gt;你也许会说：&lt;/p&gt;
&lt;p&gt;我又不是内核研究员，这类新闻跟我有什么关系？&lt;/p&gt;
&lt;p&gt;关系其实很大。&lt;/p&gt;
&lt;p&gt;因为它提醒了普通开发者三件事。&lt;/p&gt;
&lt;h3 id=&#34;1-不要再把-ai-只当生成器&#34;&gt;1. 不要再把 AI 只当“生成器”
&lt;/h3&gt;&lt;p&gt;如果你现在用 Claude Code 还只停留在：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;写函数&lt;/li&gt;
&lt;li&gt;改报错&lt;/li&gt;
&lt;li&gt;补文档&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;那你其实还没有用到它最有潜力的那一面。&lt;/p&gt;
&lt;p&gt;更值得尝试的是让它参与：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;风险排查&lt;/li&gt;
&lt;li&gt;架构理解&lt;/li&gt;
&lt;li&gt;边界条件检查&lt;/li&gt;
&lt;li&gt;历史代码审视&lt;/li&gt;
&lt;li&gt;可疑逻辑路径分析&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是从“帮我做”升级成“帮我找”。&lt;/p&gt;
&lt;h3 id=&#34;2-高价值提问会变得比高质量编码更重要&#34;&gt;2. 高价值提问，会变得比高质量编码更重要
&lt;/h3&gt;&lt;p&gt;当 AI 已经越来越会写，人的优势会逐渐转向：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你能不能定义正确的问题&lt;/li&gt;
&lt;li&gt;你能不能判断哪里最值得查&lt;/li&gt;
&lt;li&gt;你能不能把一个模糊风险缩小成明确调查路径&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这其实是在把工程能力往“问题定义能力”上推。&lt;/p&gt;
&lt;p&gt;谁更会找问题，谁就更能放大 AI 的价值。&lt;/p&gt;
&lt;h3 id=&#34;3-未来最值钱的不只是写得快而是看得深&#34;&gt;3. 未来最值钱的，不只是写得快，而是看得深
&lt;/h3&gt;&lt;p&gt;AI 可以让“写得快”越来越普及。&lt;/p&gt;
&lt;p&gt;但“看得深”不会那么容易被平均化。&lt;/p&gt;
&lt;p&gt;对开发者来说，未来越来越重要的能力可能是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;理解复杂系统&lt;/li&gt;
&lt;li&gt;判断长期风险&lt;/li&gt;
&lt;li&gt;发现隐藏脆弱点&lt;/li&gt;
&lt;li&gt;在结果之外看到结构问题&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;而 Claude Code 这类工具，正在把这类能力的门槛往下拉。&lt;/p&gt;
&lt;p&gt;它不会立刻把所有人都变成安全专家，但它确实会让更多工程师第一次有机会进入更深层的问题空间。&lt;/p&gt;
&lt;p&gt;这本身就是很大的变化。&lt;/p&gt;
&lt;h2 id=&#34;结尾&#34;&gt;结尾
&lt;/h2&gt;&lt;p&gt;很多人还在讨论 Claude Code 会不会取代 IDE，会不会压缩初级工程师价值，会不会让 AI 编程工具进入新一轮内卷。&lt;/p&gt;
&lt;p&gt;这些问题都重要。&lt;/p&gt;
&lt;p&gt;但从今天这条新闻往前看，真正更大的变化可能是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AI 编程工具正在开始触碰过去只有高阶专业人士才能稳定进入的工作区域。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;从写代码，到审代码；
从补功能，到找风险；
从完成任务，到发现问题。&lt;/p&gt;
&lt;p&gt;这是能力边界的外扩，也是职业边界的重写。&lt;/p&gt;
&lt;p&gt;Claude Code 找出 Linux 内核 23 年漏洞，重要的不是它又赢了一次 headline。&lt;/p&gt;
&lt;p&gt;而是它让越来越多人第一次认真意识到：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AI 编程工具的终点，可能从来都不只是“帮你写代码”。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;它更可能成为一种新的技术工作入口——
一个既参与构建，也参与审查，既提高效率，也放大判断的新系统。&lt;/p&gt;
&lt;p&gt;而真正的分水岭，不在于你今天有没有试过 Claude Code。&lt;/p&gt;
&lt;p&gt;而在于你有没有意识到：&lt;/p&gt;
&lt;p&gt;未来最强的工程师，也许不是最会单独写代码的人，
而是最会与这种系统一起发现问题、推进问题、解决问题的人。&lt;/p&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.infoq.com/news/2026/04/claude-code-linux-vulnerability/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;InfoQ: Claude Code Used to Find Remotely Exploitable Linux Kernel Vulnerability Hidden for 23 Years&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.techzine.eu/news/devops/140475/anthropic-introduces-routines-in-claude-code/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Techzine: Anthropic introduces routines in Claude Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.macrumors.com/2026/04/15/anthropic-rebuilds-claude-code-desktop-app/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MacRumors: Anthropic Rebuilds Claude Code Desktop App Around Parallel Sessions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/AnthropicAI/status/2044138481790648323&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;X: @AnthropicAI Automated Alignment Researcher&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Claude Code 进入“口碑拐点”：为什么最强 AI 编程工具开始被用户吐槽？</title>
        <link>https://blog.ccino.org/p/claude-code-reputation-inflection-point-2026/</link>
        <pubDate>Tue, 14 Apr 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/claude-code-reputation-inflection-point-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/claude-code-reputation-inflection-point-2026/imgs/cover.png" alt="Featured image of post Claude Code 进入“口碑拐点”：为什么最强 AI 编程工具开始被用户吐槽？" /&gt;&lt;p&gt;如果你最近频繁刷到 Claude Code，有两个截然相反的信号几乎同时出现。&lt;/p&gt;
&lt;p&gt;一边，是越来越多人把它当成当前最强的 AI 编程工具：能读项目、能改代码、能跑命令、能拆任务，重度用户甚至已经开始拿它替代一部分 IDE 内工作流。&lt;/p&gt;
&lt;p&gt;另一边，是抱怨声突然变多了。&lt;/p&gt;
&lt;p&gt;有人说它变慢了。
有人说它更吃额度了。
有人说以前那种“我懂你要什么”的流畅感消失了。
还有人直接把这种变化概括成一句很有传播力的话：&lt;strong&gt;“我怀念以前的 Claude Code。”&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这不是一个小情绪波动。&lt;/p&gt;
&lt;p&gt;当 VentureBeat 开始写 &lt;em&gt;Is Anthropic ‘nerfing’ Claude?&lt;/em&gt;，当 The Register 开始解释配额争议与 cache TTL 不是一回事，当 X 上的重度用户把“体验退化”说成一种共同体感时，你会发现 Claude Code 正站在一个很有代表性的节点上：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;它的能力还在往上走，但它的用户体感，开始分化。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这正是一个 AI 产品进入“口碑拐点”的典型信号。&lt;/p&gt;
&lt;p&gt;今天最值得讨论的，不是 Claude Code 还能不能打，而是另一个更关键的问题：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;为什么一个公认最强的 AI 编程工具，会在用户越多、场景越重、期待越高之后，开始被更多人吐槽？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这件事的答案，可能比“它最近改了哪些参数”重要得多。&lt;/p&gt;
&lt;h2 id=&#34;一用户到底在抱怨什么&#34;&gt;一、用户到底在抱怨什么？
&lt;/h2&gt;&lt;p&gt;如果你把最近围绕 Claude Code 的不满拆开看，会发现大家抱怨的并不是同一件事，而是几种不同层面的体验同时出了问题。&lt;/p&gt;
&lt;h3 id=&#34;1-速度感变差了&#34;&gt;1. 速度感变差了
&lt;/h3&gt;&lt;p&gt;这是最容易感知的一层。&lt;/p&gt;
&lt;p&gt;用户未必真的知道底层发生了什么，但他们会非常敏感地感觉到：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;回答变慢了&lt;/li&gt;
&lt;li&gt;thinking 更频繁了&lt;/li&gt;
&lt;li&gt;一些原本能很快推进的任务，现在更像在“犹豫”&lt;/li&gt;
&lt;li&gt;明明是类似复杂度的工作，等待时间却更长&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对普通聊天产品来说，慢一点可能只是烦。
但对 AI 编程工具来说，慢一点会直接打断心流。&lt;/p&gt;
&lt;p&gt;开发者不是坐在那儿等一句优美回答，他们是在改代码、跑测试、切文件、读日志、推进任务。只要等待感变强，工具就不再像“副驾驶”，而更像“堵在你工作流里的瓶颈”。&lt;/p&gt;
&lt;h3 id=&#34;2-额度感变差了&#34;&gt;2. 额度感变差了
&lt;/h3&gt;&lt;p&gt;这也是最近争议最集中的点。&lt;/p&gt;
&lt;p&gt;很多用户的真实感受不是“它不能用”，而是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;它当然还能用，但变得更像一个随时可能吞掉你额度预算的工具。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;当一个工具足够强时，用户反而会更愿意把复杂任务都丢给它；但任务越复杂，上下文越长，thinking 越多，工具成本感就越明显。于是用户很容易出现一种心理落差：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;我明明付费了&lt;/li&gt;
&lt;li&gt;我也不是在滥用&lt;/li&gt;
&lt;li&gt;为什么现在会这么快撞到限制？&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这种感受，比单纯“涨价”更伤。因为涨价是明确规则，额度焦虑是持续心理负担。&lt;/p&gt;
&lt;h3 id=&#34;3-默认行为变保守了&#34;&gt;3. 默认行为变“保守”了
&lt;/h3&gt;&lt;p&gt;还有一类不满更微妙。&lt;/p&gt;
&lt;p&gt;一些用户并不是抱怨它慢，而是抱怨它不像以前那么“敢干活”了。&lt;/p&gt;
&lt;p&gt;过去那种非常顺滑的感觉，往往来自 Claude Code 会快速理解意图、迅速推进、给人一种“这个助手很懂我”的配合感。现在部分用户觉得，它更倾向于解释、确认、谨慎、延长思考，甚至在某些任务上显得有点“畏手畏脚”。&lt;/p&gt;
&lt;p&gt;这种变化不一定意味着模型能力下降。很多时候恰恰相反，可能是产品在试图做更多安全控制、更多默认策略平衡，或者在不同负载下采取了不同调度逻辑。&lt;/p&gt;
&lt;p&gt;但对用户来说，感知非常简单：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;以前它更像一个会冲在前面的高级助手，现在它更像一个总想先开会的同事。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;4-预期被抬得太高了&#34;&gt;4. 预期被抬得太高了
&lt;/h3&gt;&lt;p&gt;还有一个常被忽略的点：&lt;/p&gt;
&lt;p&gt;Claude Code 不是在一个“普通工具”的位置上被评价的，它是被当成“可能是当前最强 AI 编程工具”来评价的。&lt;/p&gt;
&lt;p&gt;这意味着它承受的不是一般产品标准，而是近乎不公平的高预期：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;既要足够聪明&lt;/li&gt;
&lt;li&gt;又要足够快&lt;/li&gt;
&lt;li&gt;既要深度思考&lt;/li&gt;
&lt;li&gt;又不能消耗太多额度&lt;/li&gt;
&lt;li&gt;既要安全谨慎&lt;/li&gt;
&lt;li&gt;又要像最懂你的搭档一样丝滑&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;当用户对一个产品的期待接近“全能”，它稍微往任何一边偏一点，都会引发强烈反弹。&lt;/p&gt;
&lt;p&gt;所以今天围绕 Claude Code 的争议，本质上不是单点故障，而是四件事叠加：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;速度感、额度感、默认行为、超高预期，一起构成了“体感变差”。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;二为什么这不是一个简单的被-nerf问题&#34;&gt;二、为什么这不是一个简单的“被 nerf”问题？
&lt;/h2&gt;&lt;p&gt;很多讨论喜欢用一个很直观的词：nerf。&lt;/p&gt;
&lt;p&gt;意思是，产品方是不是把工具“削弱”了。&lt;/p&gt;
&lt;p&gt;这个说法传播很快，因为它很符合用户情绪。但如果你想真正理解发生了什么，这个词其实不够精确。&lt;/p&gt;
&lt;p&gt;因为在 AI 产品里，用户体验从来不只是模型能力的直接映射。&lt;/p&gt;
&lt;p&gt;一个工具的最终体感，至少由四层共同决定：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;模型本身的能力边界&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;产品层的默认策略&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;系统层的容量与调度&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;商业层的定价与配额设计&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-code-reputation-inflection-point-2026/imgs/experience-layers.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-code-reputation-inflection-point-2026/imgs/experience-layers_hu_5bc447c539f09bc2.png 480w, https://blog.ccino.org/p/claude-code-reputation-inflection-point-2026/imgs/experience-layers_hu_c7eec3c2368a54d4.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;体感由什么决定&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;用户用到的，不是其中任何一层，而是四层叠加后的结果。&lt;/p&gt;
&lt;p&gt;也就是说，即便模型本身没变差，用户依然可能明显感觉“没以前好用了”。&lt;/p&gt;
&lt;h3 id=&#34;1-模型更强不等于体感更好&#34;&gt;1. 模型更强，不等于体感更好
&lt;/h3&gt;&lt;p&gt;这是很多 AI 产品现在都会遇到的矛盾。&lt;/p&gt;
&lt;p&gt;模型越强，往往意味着：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;更长的上下文处理&lt;/li&gt;
&lt;li&gt;更复杂的推理链路&lt;/li&gt;
&lt;li&gt;更高的计算消耗&lt;/li&gt;
&lt;li&gt;更谨慎的输出控制&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些能力升级，理论上会让结果更好；但在实际使用中，它们也可能带来另一面：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;更长的等待&lt;/li&gt;
&lt;li&gt;更高的成本感&lt;/li&gt;
&lt;li&gt;更明显的不确定性&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以“更强”与“更顺滑”并不总是同方向。&lt;/p&gt;
&lt;p&gt;这也是为什么很多用户会怀念早期某个版本的产品体验。不是因为那个版本一定更强，而是因为它在当时的产品结构里，更符合某种具体的使用节奏。&lt;/p&gt;
&lt;h3 id=&#34;2-ai-产品最难的一层不是能力而是稳定性&#34;&gt;2. AI 产品最难的一层，不是能力，而是稳定性
&lt;/h3&gt;&lt;p&gt;传统软件里，用户通常只关心功能有没有。&lt;/p&gt;
&lt;p&gt;AI 产品里，用户更关心的是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;这个功能是不是能稳定地、可预期地、低焦虑地用。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这其实是更高的要求。&lt;/p&gt;
&lt;p&gt;对重度用户来说，最伤体验的不是偶尔答错，而是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;今天快，明天慢&lt;/li&gt;
&lt;li&gt;这个任务表现很好，那个相似任务却突然不稳定&lt;/li&gt;
&lt;li&gt;有时像专家，有时像实习生&lt;/li&gt;
&lt;li&gt;有时一口气干完，有时消耗大量额度却推进不多&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这种不可预期，会迅速侵蚀信任。&lt;/p&gt;
&lt;p&gt;而一旦一个工具被放进真实工作流里，信任比惊艳更重要。&lt;/p&gt;
&lt;h3 id=&#34;3-削弱感很多时候是产品与商业逻辑的摩擦感&#34;&gt;3. “削弱感”很多时候是产品与商业逻辑的摩擦感
&lt;/h3&gt;&lt;p&gt;还有个现实问题不能回避：&lt;/p&gt;
&lt;p&gt;Claude Code 不是研究演示，它是一个真正服务大量用户、需要平衡成本、容量和体验的产品。&lt;/p&gt;
&lt;p&gt;这意味着产品团队必须同时面对三件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;尽量把能力做上去&lt;/li&gt;
&lt;li&gt;尽量控制基础设施压力&lt;/li&gt;
&lt;li&gt;尽量让付费结构可持续&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;而这三件事天然互相拉扯。&lt;/p&gt;
&lt;p&gt;一旦用户规模扩大、复杂任务增多、大家开始把它当成“主力工作工具”，这种拉扯就会被迅速放大。&lt;/p&gt;
&lt;p&gt;所以所谓的“被 nerf”，很多时候并不是一句阴谋论就能解释的事。更接近真相的说法可能是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Claude Code 已经不再只是一个惊艳 demo，而是进入了真正的产品化摩擦区。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这也是任何顶级 AI 工具迟早都会遇到的阶段。&lt;/p&gt;
&lt;h2 id=&#34;三为什么-claude-code-比别的工具更容易遇到这个口碑拐点&#34;&gt;三、为什么 Claude Code 比别的工具更容易遇到这个口碑拐点？
&lt;/h2&gt;&lt;p&gt;因为它太接近“主力工具”了。&lt;/p&gt;
&lt;p&gt;一个产品如果只是偶尔被拿来试试，用户对它的要求不会那么苛刻。&lt;/p&gt;
&lt;p&gt;但 Claude Code 的问题在于，它已经强到让很多人不自觉地提高依赖程度。&lt;/p&gt;
&lt;p&gt;你原本可能只是拿它：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;查一段代码&lt;/li&gt;
&lt;li&gt;写一个函数&lt;/li&gt;
&lt;li&gt;解释一个报错&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;后来慢慢变成：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;让它理解整个项目&lt;/li&gt;
&lt;li&gt;让它设计改动方案&lt;/li&gt;
&lt;li&gt;让它跨文件修改&lt;/li&gt;
&lt;li&gt;让它跑命令、修测试、补文档&lt;/li&gt;
&lt;li&gt;甚至让它直接推进一个完整任务&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一旦一个工具开始承接这种级别的工作，用户对它的标准就会从“好不好用”升级成“能不能作为生产力基础设施”。&lt;/p&gt;
&lt;p&gt;而基础设施一旦出问题，哪怕只是体感层面的不稳定，用户也会高度敏感。&lt;/p&gt;
&lt;h3 id=&#34;1-越强的工具越容易暴露成本问题&#34;&gt;1. 越强的工具，越容易暴露成本问题
&lt;/h3&gt;&lt;p&gt;弱工具的局限很早就暴露了，用户反而不抱太高期待。&lt;/p&gt;
&lt;p&gt;强工具的问题是，它会让用户愿意把越来越重的活交给它。&lt;/p&gt;
&lt;p&gt;任务一重，成本就暴露出来了。&lt;/p&gt;
&lt;p&gt;于是你会看到一个很典型的现象：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Claude Code 越强，用户越依赖；用户越依赖，就越容易感知到它的配额、速度和稳定性问题。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这不是能力衰退，而是工具进入核心场景后的必然代价。&lt;/p&gt;
&lt;h3 id=&#34;2-claude-code-的高级用户浓度太高&#34;&gt;2. Claude Code 的“高级用户浓度”太高
&lt;/h3&gt;&lt;p&gt;另一个原因是，它的讨论者里有很多重度开发者、创作者、独立开发者。&lt;/p&gt;
&lt;p&gt;这类用户有几个特点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用频率高&lt;/li&gt;
&lt;li&gt;任务复杂度高&lt;/li&gt;
&lt;li&gt;对体感极其敏感&lt;/li&gt;
&lt;li&gt;很愿意公开分享自己的工作流和不满&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是说，Claude Code 的舆论环境不是普通消费产品式的“大众抱怨”，而更像一群高强度使用者在做实时口碑压力测试。&lt;/p&gt;
&lt;p&gt;这会让任何细微变化都被迅速放大。&lt;/p&gt;
&lt;h3 id=&#34;3-它承载了太多未来工作流想象&#34;&gt;3. 它承载了太多“未来工作流想象”
&lt;/h3&gt;&lt;p&gt;很多人喜欢 Claude Code，不只是因为它现在能干什么，而是因为它代表了一种对未来开发方式的想象：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI 不再只是补全工具&lt;/li&gt;
&lt;li&gt;AI 可以进入终端和项目上下文&lt;/li&gt;
&lt;li&gt;AI 可以变成真正的任务执行者&lt;/li&gt;
&lt;li&gt;开发者未来更像指挥者，而不是纯手工执行者&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;当一个产品承载这种想象时，用户会天然更希望它“像未来一样顺滑”。&lt;/p&gt;
&lt;p&gt;只要现实体验没跟上这种想象，失望感就会特别强。&lt;/p&gt;
&lt;p&gt;所以 Claude Code 今天面对的，不只是产品缺陷，而是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;它已经被拿来对标一种未来工作方式。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;而凡是代表未来的产品，都会更早遭遇口碑拐点。&lt;/p&gt;
&lt;h2 id=&#34;四对-anthropic-来说真正的问题已经不是模型够不够强&#34;&gt;四、对 Anthropic 来说，真正的问题已经不是“模型够不够强”
&lt;/h2&gt;&lt;p&gt;站在产品战略角度看，Claude Code 现在最难的挑战，已经不是把模型再做强一点。&lt;/p&gt;
&lt;p&gt;而是另一件更难、也更决定胜负的事：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;如何把一个能力顶尖的 AI，变成一个可持续、可预期、专业用户愿意长期依赖的工作工具。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这件事比做一个亮眼 benchmark 难得多。&lt;/p&gt;
&lt;p&gt;因为它要求的不是单次惊艳，而是长期稳定。&lt;/p&gt;
&lt;p&gt;Anthropic 如果想让 Claude Code 成为真正的工作流入口，至少要同时回答三个问题：&lt;/p&gt;
&lt;h3 id=&#34;1-专业用户能不能形成稳定心智&#34;&gt;1. 专业用户能不能形成稳定心智？
&lt;/h3&gt;&lt;p&gt;用户要知道：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;什么时候适合用它&lt;/li&gt;
&lt;li&gt;什么时候不该把活全丢给它&lt;/li&gt;
&lt;li&gt;怎样使用最省额度&lt;/li&gt;
&lt;li&gt;怎样拆任务最稳&lt;/li&gt;
&lt;li&gt;在什么场景下它最有优势&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果这些心智不能建立，产品再强，用户也会长期处在“又爱又怕”的状态里。&lt;/p&gt;
&lt;h3 id=&#34;2-能不能降低体感不可预测性&#34;&gt;2. 能不能降低“体感不可预测性”？
&lt;/h3&gt;&lt;p&gt;最伤口碑的不是贵，也不是慢，而是不稳定。&lt;/p&gt;
&lt;p&gt;对职业用户来说，“贵但稳”往往比“便宜但飘”更能接受。&lt;/p&gt;
&lt;p&gt;所以 Anthropic 真正需要优化的，未必只是参数，而是让用户重新建立一种感觉：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;我知道这个工具今天大概会怎么表现。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;3-能不能给用户更明确的工作流建议&#34;&gt;3. 能不能给用户更明确的工作流建议？
&lt;/h3&gt;&lt;p&gt;很多争议其实来自错误使用方式。&lt;/p&gt;
&lt;p&gt;AI 编程工具一旦足够强，用户很容易过度依赖，把所有任务都一股脑扔进去，然后在最不合适的场景下感受到最糟糕的体感。&lt;/p&gt;
&lt;p&gt;未来真正成熟的产品，不应该只卖能力，还要卖一套更清晰的使用方法论：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;什么任务适合 deep thinking&lt;/li&gt;
&lt;li&gt;什么任务该先拆解再执行&lt;/li&gt;
&lt;li&gt;什么上下文该放进去，什么不该&lt;/li&gt;
&lt;li&gt;什么时候应该切换工具或切换模型&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果这套方法论缺失，再强的工具也会被用出挫败感。&lt;/p&gt;
&lt;h2 id=&#34;五作为重度用户怎么避免把-claude-code-用成吃额度机器&#34;&gt;五、作为重度用户，怎么避免把 Claude Code 用成“吃额度机器”？
&lt;/h2&gt;&lt;p&gt;如果你今天就已经在重度使用 Claude Code，我反而不建议把注意力全放在“它是不是被削弱了”上。&lt;/p&gt;
&lt;p&gt;更有用的问题是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;在当前这个阶段，怎样使用，才能既发挥它的能力，又避免最差体感？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;我觉得至少有五个实操原则。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-code-reputation-inflection-point-2026/imgs/practical-workflow.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-code-reputation-inflection-point-2026/imgs/practical-workflow_hu_25e993cb744b7cdc.png 480w, https://blog.ccino.org/p/claude-code-reputation-inflection-point-2026/imgs/practical-workflow_hu_7921fea6c3ec38fa.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;别把它用成吃额度机器&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;1-不要把模糊大任务直接整包扔进去&#34;&gt;1. 不要把模糊大任务直接整包扔进去
&lt;/h3&gt;&lt;p&gt;最耗额度、也最容易让体验变差的用法，就是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;背景很长&lt;/li&gt;
&lt;li&gt;目标很模糊&lt;/li&gt;
&lt;li&gt;约束很多&lt;/li&gt;
&lt;li&gt;还希望它一步到位&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这种任务最容易触发长 thinking、高消耗和低确定性。&lt;/p&gt;
&lt;p&gt;更好的方法是先拆：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;先让它理解问题&lt;/li&gt;
&lt;li&gt;再让它列方案&lt;/li&gt;
&lt;li&gt;然后只让它执行一个最小步骤&lt;/li&gt;
&lt;li&gt;每一步都尽量有明确输出标准&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这不是保守，而是让 AI 更接近“可控执行器”。&lt;/p&gt;
&lt;h3 id=&#34;2-把-claude-code-用在高杠杆环节而不是所有环节&#34;&gt;2. 把 Claude Code 用在高杠杆环节，而不是所有环节
&lt;/h3&gt;&lt;p&gt;Claude Code 最值钱的地方，往往不是机械生成，而是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;快速理解项目结构&lt;/li&gt;
&lt;li&gt;帮你制定复杂改动路径&lt;/li&gt;
&lt;li&gt;跨文件定位问题&lt;/li&gt;
&lt;li&gt;协助推进长任务&lt;/li&gt;
&lt;li&gt;在陌生代码库里建立全局感&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;而一些纯重复、低难度、强局部任务，未必需要把最强工具一直挂着。&lt;/p&gt;
&lt;p&gt;高杠杆环节用最强工具，整体工作流反而更舒服。&lt;/p&gt;
&lt;h3 id=&#34;3-学会管理上下文不要迷信一次讲全&#34;&gt;3. 学会管理上下文，不要迷信“一次讲全”
&lt;/h3&gt;&lt;p&gt;很多人以为把所有背景一次性讲清楚，AI 才会更懂。&lt;/p&gt;
&lt;p&gt;但现实里，太长、太杂、层级不清的上下文，往往会让结果更慢、更贵、也更容易偏。&lt;/p&gt;
&lt;p&gt;更有效的做法是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;每轮只给当前步骤真正需要的信息&lt;/li&gt;
&lt;li&gt;重要约束重复强调&lt;/li&gt;
&lt;li&gt;历史信息做摘要，而不是全量堆叠&lt;/li&gt;
&lt;li&gt;让上下文服务当前任务，而不是展示你掌握了多少信息&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;好的上下文管理，本质上是在帮 AI 建立工作记忆，而不是给它塞资料堆。&lt;/p&gt;
&lt;h3 id=&#34;4-接受多工具协作会成为常态&#34;&gt;4. 接受“多工具协作”会成为常态
&lt;/h3&gt;&lt;p&gt;未来一段时间里，最现实的工作方式很可能不是“只用一个工具走天下”，而是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;某些任务用 Claude Code&lt;/li&gt;
&lt;li&gt;某些轻量编辑在 IDE 内完成&lt;/li&gt;
&lt;li&gt;某些对速度敏感的步骤换别的工具&lt;/li&gt;
&lt;li&gt;某些低价值任务直接自己做&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;真正成熟的开发者，不会把工具信仰化，而会把工具工作流化。&lt;/p&gt;
&lt;h3 id=&#34;5-把它当成团队成员而不是魔法按钮&#34;&gt;5. 把它当成团队成员，而不是魔法按钮
&lt;/h3&gt;&lt;p&gt;Claude Code 的价值，越来越像一个高能力执行者，而不是一个一次性出奇迹的按钮。&lt;/p&gt;
&lt;p&gt;这意味着更好的用法不是“扔个愿望过去”，而是像管理团队一样管理它：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;任务清晰&lt;/li&gt;
&lt;li&gt;边界明确&lt;/li&gt;
&lt;li&gt;节奏合理&lt;/li&gt;
&lt;li&gt;中间检查&lt;/li&gt;
&lt;li&gt;及时纠偏&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一旦用这种方式看它，很多所谓“体感退化”，其实会变成“我该怎么重新调整协作方式”。&lt;/p&gt;
&lt;h2 id=&#34;六claude-code-的争议恰恰说明它已经进入主舞台&#34;&gt;六、Claude Code 的争议，恰恰说明它已经进入主舞台
&lt;/h2&gt;&lt;p&gt;最后我反而想说一句可能有点反直觉的话：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;被集中吐槽，不一定是坏事。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;至少对 Claude Code 来说，这说明它已经不再是一个边缘尝鲜工具，而是真正进入了开发者主舞台。&lt;/p&gt;
&lt;p&gt;因为只有当一个工具足够重要、足够强、足够被依赖，它的每一次体验波动，才会引发这么高密度的讨论。&lt;/p&gt;
&lt;p&gt;没有人会为了一个无关紧要的工具写长帖抱怨它“没以前顺手了”。&lt;/p&gt;
&lt;p&gt;大家之所以会争论 Claude Code，是因为它已经足够接近一种新的工作方式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不只是回答问题&lt;/li&gt;
&lt;li&gt;不只是写几段代码&lt;/li&gt;
&lt;li&gt;而是开始接管更完整的开发任务&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也正因为如此，它面临的评价标准正在升级。&lt;/p&gt;
&lt;p&gt;未来 AI 编程工具真正的竞争，不只是模型谁更聪明，而是谁能做到下面这件事：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;在真实工作流里，长期、稳定、低焦虑地创造价值。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这比任何一次功能发布都更难。&lt;/p&gt;
&lt;p&gt;Claude Code 现在走到的，正是这个最难也最关键的阶段。&lt;/p&gt;
&lt;p&gt;所以如果你今天看到越来越多围绕它的争议，我觉得不该只把它理解成“产品出了问题”。&lt;/p&gt;
&lt;p&gt;更准确地说，这是一个顶级 AI 工具开始从“惊艳期”进入“基础设施期”的必经过程。&lt;/p&gt;
&lt;p&gt;而真正的胜负，往往就是在这个阶段分出来的。&lt;/p&gt;
&lt;h2 id=&#34;结尾&#34;&gt;结尾
&lt;/h2&gt;&lt;p&gt;Claude Code 可能确实没有前一阵子那么“轻盈”了。&lt;/p&gt;
&lt;p&gt;但这不一定意味着它在变弱。&lt;/p&gt;
&lt;p&gt;更可能意味着，它正在经历一款顶级 AI 工具必然要经历的转折：&lt;/p&gt;
&lt;p&gt;从“让人惊艳”，走向“让人长期依赖”。&lt;/p&gt;
&lt;p&gt;前者拼的是能力上限，后者拼的是产品稳定性、成本结构、用户心智和工作流设计。&lt;/p&gt;
&lt;p&gt;如果 Anthropic 能跨过这一步，Claude Code 就不只是一个强工具，而可能真的会成为很多开发者的默认工作入口。&lt;/p&gt;
&lt;p&gt;如果跨不过，用户也会很快学会一件事：再强的模型，如果体感不稳定，也很难成为真正的主力工具。&lt;/p&gt;
&lt;p&gt;所以今天围绕 Claude Code 的争议，真正值得关注的，不是谁在吐槽，谁在护航。&lt;/p&gt;
&lt;p&gt;而是这场争议背后透露出的更大信号：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AI 编程工具的竞争，已经从“谁更聪明”进入“谁更像基础设施”。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;而那，才是下一阶段最残酷的战场。&lt;/p&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://venturebeat.com/technology/is-anthropic-nerfing-claude-users-increasingly-report-performance&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;VentureBeat: Is Anthropic &amp;rsquo;nerfing&amp;rsquo; Claude? Users increasingly report performance degradation as leaders push back&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.theregister.com/2026/04/13/claude_code_cache_confusion/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;The Register: Anthropic: Claude quota drain not caused by cache tweaks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.xda-developers.com/claude-codes-creator-keeps-sharing-tips-and-they-all-made-my-experience-better/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;XDA: Claude Code&amp;rsquo;s creator keeps sharing tips, and they all made my experience better&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/ClaudeAI/comments/1s8lkkm/i_dug_through_claude_codes_leaked_source_and/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reddit: i dug through claude code&amp;rsquo;s leaked source and anthropic&amp;rsquo;s codebase is absolutely unhinged&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/ClaudeAI/comments/1rt31th/why_the_majority_of_vibe_coded_projects_fail/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reddit: Why the majority of vibe coded projects fail&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/_colemurray/status/2043567650291540423&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;X: @_colemurray 讨论 Claude Code 体验变化&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/GPTaku/status/2041767107831197769&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;X: @GPTaku 的 Claude Code 场景化线程&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Claude Code 不只是写代码：它正在变成 AI 编程操作系统</title>
        <link>https://blog.ccino.org/p/claude-code-ai-programming-operating-system/</link>
        <pubDate>Mon, 13 Apr 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/claude-code-ai-programming-operating-system/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/claude-code-ai-programming-operating-system/imgs/cover.png" alt="Featured image of post Claude Code 不只是写代码：它正在变成 AI 编程操作系统" /&gt;&lt;p&gt;如果你最近同时在看 Claude Code、Cursor 和 Codex，很容易产生一种错觉：&lt;/p&gt;
&lt;p&gt;它们还在比谁写代码更快。&lt;/p&gt;
&lt;p&gt;但如果你把最近几周的信号放在一起看，会发现竞争已经变了。&lt;/p&gt;
&lt;p&gt;Anthropic 在给 Claude Code 补桌面端、多面板、多仓库和类似 Coordinator Mode 的能力；OpenAI 在给 Codex 加价格层和产品层；创作者圈开始讨论的，也不再是“哪个模型更聪明”，而是“哪个工具更适合承接完整工作流”。&lt;/p&gt;
&lt;p&gt;这意味着一件事：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AI 编程工具的下一阶段，不是代码生成器战争，而是操作系统战争。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;谁能成为开发者每天开始工作的默认入口，谁才真正拥有下一代开发工作流的控制权。&lt;/p&gt;
&lt;p&gt;而 Claude Code，正在往那个方向长。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-code-ai-programming-operating-system/imgs/cover.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-code-ai-programming-operating-system/imgs/cover_hu_2bb271b6ecae31fe.png 480w, https://blog.ccino.org/p/claude-code-ai-programming-operating-system/imgs/cover_hu_39c1dce85988f6be.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Claude Code 正在变成 AI 编程操作系统&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;一为什么会写代码已经不够了&#34;&gt;一、为什么“会写代码”已经不够了？
&lt;/h2&gt;&lt;p&gt;2024 年，大家对 AI 编程工具的期待还很朴素：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;帮我补几行代码&lt;/li&gt;
&lt;li&gt;帮我写个函数&lt;/li&gt;
&lt;li&gt;帮我改个 bug&lt;/li&gt;
&lt;li&gt;帮我解释一段报错&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;当时谁能更快吐出一段能跑的代码，谁就容易赢得掌声。&lt;/p&gt;
&lt;p&gt;但今天，开发者面对的已经不是这种单点任务了。&lt;/p&gt;
&lt;p&gt;你真正处理的是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;理解一个老项目的结构&lt;/li&gt;
&lt;li&gt;在多个仓库之间切换&lt;/li&gt;
&lt;li&gt;一边改前端，一边查后端接口&lt;/li&gt;
&lt;li&gt;一边写代码，一边跑脚本、查日志、改配置&lt;/li&gt;
&lt;li&gt;让一个 agent 修 bug，另一个 agent 写测试，第三个 agent 做 review&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以问题变了。&lt;/p&gt;
&lt;p&gt;开发者真正需要的，不再只是“一个会回答问题的 AI”，而是一个&lt;strong&gt;能接住整个开发流程的执行中枢&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;谁占住这个位置，谁就不只是工具，而是平台。&lt;/p&gt;
&lt;p&gt;这也是为什么 Claude Code 值得重新看一遍。&lt;/p&gt;
&lt;h2 id=&#34;二claude-code-这轮升级真正重要的不是新按钮而是新定位&#34;&gt;二、Claude Code 这轮升级，真正重要的不是新按钮，而是新定位
&lt;/h2&gt;&lt;p&gt;从外部流出的信息看，这次 Claude Code 的变化可以概括成四个词：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;桌面化&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多面板&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多仓库&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;协调模式&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;单独看，它们像是常规补功能。&lt;/p&gt;
&lt;p&gt;但放在一起看，你会发现 Anthropic 想做的不是简单增强，而是在重写 Claude Code 的产品身份。&lt;/p&gt;
&lt;h3 id=&#34;1-桌面化从命令入口升级为工作台&#34;&gt;1. 桌面化：从“命令入口”升级为“工作台”
&lt;/h3&gt;&lt;p&gt;CLI 的优势是轻、快、可脚本化，天然适合高级用户。&lt;/p&gt;
&lt;p&gt;但 CLI 也有边界：它擅长执行，不擅长展示；擅长单线程推进，不擅长并行观察；擅长高手心流，不擅长复杂项目的全局可视化。&lt;/p&gt;
&lt;p&gt;一旦 Claude Code 进入更完整的桌面端形态，它就不再只是“一个你在终端里调用的 AI”。&lt;/p&gt;
&lt;p&gt;它会更像一个专门为 AI 编程工作流设计的操作台：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;左边看任务&lt;/li&gt;
&lt;li&gt;中间看上下文&lt;/li&gt;
&lt;li&gt;右边看 diff、日志、文件变化&lt;/li&gt;
&lt;li&gt;后台跑多个 agent&lt;/li&gt;
&lt;li&gt;前台统一管理状态&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这和传统 IDE 的思路并不一样。&lt;/p&gt;
&lt;p&gt;IDE 是“人手动操作软件工程对象”的界面。Claude Code 未来更像是“&lt;strong&gt;人指挥 agent 操作软件工程对象&lt;/strong&gt;”的界面。&lt;/p&gt;
&lt;p&gt;这个变化，决定了它不再只是工具增强，而是在争一层新的交互入口。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-code-ai-programming-operating-system/imgs/claude-code-workbench.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-code-ai-programming-operating-system/imgs/claude-code-workbench_hu_9fc3ba7fd4c9d56c.png 480w, https://blog.ccino.org/p/claude-code-ai-programming-operating-system/imgs/claude-code-workbench_hu_77f61602a0ac9705.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Claude Code 从 CLI 工具升级为工作台&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;2-多面板ai-不再是一问一答而是持续驻场&#34;&gt;2. 多面板：AI 不再是一问一答，而是持续驻场
&lt;/h3&gt;&lt;p&gt;很多人今天使用 AI，依然停留在聊天窗口思维：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;提一个问题&lt;/li&gt;
&lt;li&gt;得一个回答&lt;/li&gt;
&lt;li&gt;再提下一个问题&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但复杂开发工作不是线性的。&lt;/p&gt;
&lt;p&gt;你会同时关心：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;当前 agent 正在做什么&lt;/li&gt;
&lt;li&gt;哪些文件被修改了&lt;/li&gt;
&lt;li&gt;哪个命令失败了&lt;/li&gt;
&lt;li&gt;测试跑到了哪里&lt;/li&gt;
&lt;li&gt;另一个子任务是否已经完成&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果 Claude Code 真正引入多面板能力，意义就在于：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AI 不再只是一个“对话对象”，而会变成一个“持续运行的协作系统”。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;你不会只问它一句话，而会像管理团队一样管理它：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;这个面板看主任务&lt;/li&gt;
&lt;li&gt;那个面板看测试反馈&lt;/li&gt;
&lt;li&gt;另一个面板看第二个仓库的上下文&lt;/li&gt;
&lt;li&gt;需要时再切回来做决策&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这意味着交互范式在变。&lt;/p&gt;
&lt;p&gt;过去是：&lt;strong&gt;我问，AI 答。&lt;/strong&gt;&lt;br&gt;
未来更像：&lt;strong&gt;我编排，AI 执行。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;3-多仓库支持ai-编程终于开始面对真实世界&#34;&gt;3. 多仓库支持：AI 编程终于开始面对真实世界
&lt;/h3&gt;&lt;p&gt;单仓库当然重要，但它离真实开发还有距离。&lt;/p&gt;
&lt;p&gt;很多团队的日常工作更像这样：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一个前端仓库&lt;/li&gt;
&lt;li&gt;一个后端仓库&lt;/li&gt;
&lt;li&gt;一个 shared library 仓库&lt;/li&gt;
&lt;li&gt;一个 infra / deployment 仓库&lt;/li&gt;
&lt;li&gt;再加上文档、脚本、配置散落在不同目录&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在这种环境里，真正难的从来不是“写一段代码”，而是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;让改动跨越多个仓库，还不把上下文搞丢。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;多仓库支持之所以重要，是因为它让 Claude Code 开始具备一种更接近资深工程师的能力：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;理解依赖链&lt;/li&gt;
&lt;li&gt;识别跨仓影响&lt;/li&gt;
&lt;li&gt;处理接口变化&lt;/li&gt;
&lt;li&gt;让改动不是局部最优，而是系统上自洽&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这才是 AI 编程从 demo 走向生产力的关键一步。&lt;/p&gt;
&lt;p&gt;如果一个工具只能在单仓库里“看起来很聪明”，它更像玩具。&lt;/p&gt;
&lt;p&gt;如果它能在多仓环境下稳定协作，它才开始有资格讨论“工作流入口”。&lt;/p&gt;
&lt;h3 id=&#34;4-coordinator-modeanthropic-真正想抢的是任务调度权&#34;&gt;4. Coordinator Mode：Anthropic 真正想抢的是“任务调度权”
&lt;/h3&gt;&lt;p&gt;在这些变化里，我最重视的不是 UI，而是类似 &lt;strong&gt;Coordinator Mode&lt;/strong&gt; 这样的能力。&lt;/p&gt;
&lt;p&gt;因为这背后碰到的是更核心的一层：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;谁来分配任务，谁来协调多个 agent，谁来决定工作流怎么被切分。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;你可以把它理解成一个简化版演化过程：&lt;/p&gt;
&lt;h3 id=&#34;第一阶段ai-是补全器&#34;&gt;第一阶段：AI 是补全器
&lt;/h3&gt;&lt;p&gt;人写代码，AI 补几行。&lt;/p&gt;
&lt;h3 id=&#34;第二阶段ai-是副驾驶&#34;&gt;第二阶段：AI 是副驾驶
&lt;/h3&gt;&lt;p&gt;人定义任务，AI 执行单个任务。&lt;/p&gt;
&lt;h3 id=&#34;第三阶段ai-是执行团队&#34;&gt;第三阶段：AI 是执行团队
&lt;/h3&gt;&lt;p&gt;人给目标，多个 agent 分工协作，系统自动协调上下文、依赖和状态。&lt;/p&gt;
&lt;p&gt;如果 Claude Code 正在往第三阶段走，那么它竞争的对象就不只是 Cursor 这种编辑器增强工具，也不只是单个模型 API，而是所有试图成为“开发者代理层”的产品。&lt;/p&gt;
&lt;p&gt;Anthropic 想拿的，不是“你今天要不要让它写代码”，而是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;以后你的整个开发任务，是不是都默认从 Claude Code 出发。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这才是真正的入口价值。&lt;/p&gt;
&lt;h2 id=&#34;三claude-codecursorcodex三者正在分化成不同物种&#34;&gt;三、Claude Code、Cursor、Codex，三者正在分化成不同物种
&lt;/h2&gt;&lt;p&gt;很多人喜欢把这些工具放在一起横向比较，但这种比较已经开始失效了。&lt;/p&gt;
&lt;p&gt;因为它们正在长成三种不同的产品物种。&lt;/p&gt;
&lt;h3 id=&#34;cursor更像-ai-原生-ide&#34;&gt;Cursor：更像 AI 原生 IDE
&lt;/h3&gt;&lt;p&gt;Cursor 最强的地方，是把 AI 深度嵌进编辑器体验。&lt;/p&gt;
&lt;p&gt;它最适合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;边写边改&lt;/li&gt;
&lt;li&gt;快速补全&lt;/li&gt;
&lt;li&gt;局部重构&lt;/li&gt;
&lt;li&gt;在编辑器里低摩擦调用 AI&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它的优势是自然、顺手、低摩擦。&lt;/p&gt;
&lt;p&gt;但它的重心依然是“围绕代码编辑本身”。&lt;/p&gt;
&lt;h3 id=&#34;claude-code更像任务执行中枢&#34;&gt;Claude Code：更像任务执行中枢
&lt;/h3&gt;&lt;p&gt;Claude Code 的吸引力，一直不在“像 IDE”，而在“像一个可以被调度的执行系统”。&lt;/p&gt;
&lt;p&gt;它更适合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;理解整个项目&lt;/li&gt;
&lt;li&gt;分步骤推进复杂任务&lt;/li&gt;
&lt;li&gt;跨文件、跨目录、跨仓做改动&lt;/li&gt;
&lt;li&gt;在终端、脚本、文件、测试之间来回穿梭&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它天然更接近“工作流调度层”。&lt;/p&gt;
&lt;h3 id=&#34;codex更像正在产品化的-hosted-coding-agent&#34;&gt;Codex：更像正在产品化的 hosted coding agent
&lt;/h3&gt;&lt;p&gt;Codex 代表的是另一种方向：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;更托管&lt;/li&gt;
&lt;li&gt;更服务化&lt;/li&gt;
&lt;li&gt;更接近产品套餐体系&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OpenAI 给它新增 100 美元档位，本质上也是在试图把“coding agent”从能力，变成标准化可售卖服务。&lt;/p&gt;
&lt;p&gt;所以三者真正的差异，不是“谁模型更强”这么简单，而是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cursor 抢的是编辑器内的主场&lt;/li&gt;
&lt;li&gt;Claude Code 抢的是任务执行与工作流中枢&lt;/li&gt;
&lt;li&gt;Codex 抢的是 hosted agent 服务层&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这就是为什么未来的竞争会越来越像“操作系统战争”。&lt;/p&gt;
&lt;p&gt;大家争的不是某个功能，而是你&lt;strong&gt;默认从哪一层开始工作&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-code-ai-programming-operating-system/imgs/tool-positioning-map.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-code-ai-programming-operating-system/imgs/tool-positioning-map_hu_cf93fa98643ed1c9.png 480w, https://blog.ccino.org/p/claude-code-ai-programming-operating-system/imgs/tool-positioning-map_hu_abb6afd216a7606d.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Cursor、Claude Code、Codex 的定位分化&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;四为什么这件事对中国开发者尤其重要&#34;&gt;四、为什么这件事对中国开发者尤其重要？
&lt;/h2&gt;&lt;p&gt;很多国外讨论的重点，会放在产品发布、融资、估值和功能演示上。&lt;/p&gt;
&lt;p&gt;但对中国开发者来说，更值得关心的是另一件事：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;如果 AI 编程工具真的开始变成操作系统，我们的工作方式会怎么变？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;我觉得至少有三点变化会非常明显。&lt;/p&gt;
&lt;h3 id=&#34;1-从写代码能力转向编排能力&#34;&gt;1. 从“写代码能力”转向“编排能力”
&lt;/h3&gt;&lt;p&gt;以后真正拉开差距的，不一定是你能不能手写复杂逻辑，而是你能不能：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;把任务拆清楚&lt;/li&gt;
&lt;li&gt;把上下文给完整&lt;/li&gt;
&lt;li&gt;判断哪个 agent 该先做什么&lt;/li&gt;
&lt;li&gt;在多个并行结果中做取舍&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是说，开发者的核心能力会越来越像：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;产品经理的任务定义能力&lt;/li&gt;
&lt;li&gt;Tech Lead 的拆解能力&lt;/li&gt;
&lt;li&gt;架构师的全局判断能力&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;而不只是某种语言的熟练度。&lt;/p&gt;
&lt;h3 id=&#34;2-单点高手优势会减弱系统型选手优势会放大&#34;&gt;2. 单点高手优势会减弱，系统型选手优势会放大
&lt;/h3&gt;&lt;p&gt;以前一个人很强，可能是因为他 API 背得熟、语法写得快、debug 靠经验。&lt;/p&gt;
&lt;p&gt;未来这些能力仍然有价值，但更值钱的会是另一种能力：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;把工具、模型、agent、代码库、测试链路、部署流程串成一个完整系统。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;谁能把系统搭起来，谁就拥有更大的杠杆。&lt;/p&gt;
&lt;h3 id=&#34;3-独立开发者和内容创作者会最先受益&#34;&gt;3. 独立开发者和内容创作者会最先受益
&lt;/h3&gt;&lt;p&gt;Claude Code 这类工具一旦成为“工作流中枢”，最先被放大的往往不是大公司，而是那些本来就强调速度与杠杆的小团队：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;独立开发者&lt;/li&gt;
&lt;li&gt;技术内容创作者&lt;/li&gt;
&lt;li&gt;小型创业团队&lt;/li&gt;
&lt;li&gt;会自己写脚本、搭流程、做产品的人&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;因为他们没有复杂组织包袱，一旦拿到更强的工作流工具，效率会被成倍放大。&lt;/p&gt;
&lt;p&gt;这也是为什么最近越来越多创作者开始讨论：AI 不只是帮我写代码，而是在重写我一个人能完成的工作边界。&lt;/p&gt;
&lt;h2 id=&#34;五真正值得警惕的不是-ai-太强而是你还在用旧方法使用它&#34;&gt;五、真正值得警惕的，不是 AI 太强，而是你还在用旧方法使用它
&lt;/h2&gt;&lt;p&gt;很多人会说：AI 编程工具确实越来越强，但离真正取代工程师还远。&lt;/p&gt;
&lt;p&gt;这句话当然没错。&lt;/p&gt;
&lt;p&gt;但更重要的问题不是“它有没有完全取代你”，而是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;它已经足够改变工作流了，而你是否还在用旧方法理解它。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果你还把 Claude Code 当成：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一个终端版 ChatGPT&lt;/li&gt;
&lt;li&gt;一个更会写代码的聊天机器人&lt;/li&gt;
&lt;li&gt;一个偶尔帮忙生成脚本的助手&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;那你会错过它最关键的变化。&lt;/p&gt;
&lt;p&gt;真正的变化不是“它更会写”，而是“它开始接管流程”。&lt;/p&gt;
&lt;p&gt;而一旦工具开始接管流程，开发者的角色也会跟着变化：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;从执行者变成编排者&lt;/li&gt;
&lt;li&gt;从写作者变成审阅者&lt;/li&gt;
&lt;li&gt;从单线程操作员变成多任务调度者&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;谁先适应这种变化，谁就会在下一轮生产力升级里占据优势。&lt;/p&gt;
&lt;h2 id=&#34;六结语claude-code-的下一战不在代码而在入口&#34;&gt;六、结语：Claude Code 的下一战，不在代码，而在入口
&lt;/h2&gt;&lt;p&gt;我越来越相信，AI 编程工具的胜负手，不在下一次 benchmark 谁更高，也不完全在谁生成的代码更漂亮。&lt;/p&gt;
&lt;p&gt;真正的胜负手在于：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;谁能成为你每天开始工作的那个默认入口。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;你打开电脑之后，是先打开编辑器、先打开终端、先开 agent 面板，还是先进入某个 AI 工作台？&lt;/p&gt;
&lt;p&gt;这个顺序，决定了未来工具链的权力分配。&lt;/p&gt;
&lt;p&gt;如果 Anthropic 真把 Claude Code 做成一个兼具桌面形态、多仓能力、多面板协作、任务协调机制的系统，那它争夺的就不是“一个工具位”，而是“AI 编程时代的操作系统位”。&lt;/p&gt;
&lt;p&gt;从这个角度看，这轮升级最值得关注的根本不是某个具体功能，而是 Anthropic 释放出的信号：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Claude Code 的终点，可能从来都不是一个命令行工具。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;它想做的，是让开发者未来的复杂任务，都在它这里开始、被它协调、最终由它推动完成。&lt;/p&gt;
&lt;p&gt;一旦这件事成立，Claude Code 的竞争对象就不会只是 Cursor 或 Codex。&lt;/p&gt;
&lt;p&gt;它竞争的，是下一代开发工作流本身。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;参考来源与扩展阅读：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.testingcatalog.com/anthropic-tests-claude-code-upgrade-to-rival-codex-superapp/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic tests Claude Code upgrade to rival Codex Superapp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.thelec.net/news/articleView.html?idxno=6496&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI Adds $100 Monthly Tier for Codex Coding Agent&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=nUnW4Qr7bto&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Code NEW Update is INSANE!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/technology/comments/1rng7sr/claude_code_deletes_developers_production_setup/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Code deletes developers&amp;rsquo; production setup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/levelsio/status/2043320100397199422&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;levelsio：Claude Code 跨服务器协作实验&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
</description>
        </item>
        <item>
        <title>一个周六做完 6 周研究：Firecrawl &#43; Claude，几美元成本重做高价咨询流程</title>
        <link>https://blog.ccino.org/p/firecrawl-claude-consulting-workflow-2026/</link>
        <pubDate>Sun, 12 Apr 2026 16:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/firecrawl-claude-consulting-workflow-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/firecrawl-claude-consulting-workflow-2026/imgs/cover.png" alt="Featured image of post 一个周六做完 6 周研究：Firecrawl &#43; Claude，几美元成本重做高价咨询流程" /&gt;&lt;p&gt;如果有人告诉你：一个人，一个周六，外加几美元 API 费，就做出了一份传统咨询公司可能报价 20 万到 40 万美元的战略研究报告，你第一反应多半会是——这里面一定有夸张成分。&lt;/p&gt;
&lt;p&gt;这篇文章的起点，来自 Reddit 上 r/ClaudeAI 的一个高热讨论帖。原帖标题很直接，叫 &lt;strong&gt;“Firecrawl + Claude just replaced McKinsey consultants”&lt;/strong&gt;。发帖者分享了自己如何用 Firecrawl 抓取目标公司的公开网页资料，再交给 Claude 做竞争分析和市场进入判断，并据此得出一个极具传播性的结论：原本可能需要咨询团队数周完成的研究，现在一个人用一个周末和几美元 API 成本就能做出第一版。&lt;/p&gt;
&lt;p&gt;也正因为这个来源本身带着很强的社交媒体传播色彩，所以它最值得讨论的，不是“麦肯锡是不是真的被替代了”，而是这个案例到底揭示了什么样的新工作流。&lt;/p&gt;
&lt;p&gt;很多人对 AI 进入知识工作还有一种旧印象：它最多帮你润色文案、写个摘要、整理会议纪要，离真正影响高价值专业服务还很远。可最近几个月，一批更有代表性的案例开始出现：AI 不再只是“帮你写”，而是在整条知识工作流水线上，开始压缩原本最贵、最耗时、也最流程化的那部分。&lt;/p&gt;
&lt;p&gt;按发帖者的描述，这个流程大致是：先用 Firecrawl 把 12 家目标公司的官网、产品页、定价页、博客和招聘页面系统性抓下来，再补充财经新闻、融资公告等公开信息，最后把这些材料交给 Claude 做竞争情报整理、市场地图分析和进入策略判断。&lt;/p&gt;
&lt;p&gt;帖子里最有冲击力的说法是：这类项目如果交给传统咨询公司，报价可能在 20 万到 40 万美元之间，周期往往要 4 到 6 周；而自己动手，边际成本只是几美元 API 费用，加上一个周末。&lt;/p&gt;
&lt;p&gt;当然，这种表达里有明显的放大成分。AI 并没有真的“替代整个麦肯锡”，它替代的其实是咨询项目里最容易标准化、最耗时间、也最适合机器处理的那一大段：公开信息收集、初步归纳、结构化比较和第一版洞察生成。&lt;/p&gt;
&lt;p&gt;但也正因为如此，这个案例才值得写。它真正有价值的地方，不是情绪化地喊一句“咨询行业完了”，而是把一个原本属于专业服务公司的工作流，拆成了普通创业者、产品经理、投资研究员也能复用的工具链。&lt;/p&gt;
&lt;p&gt;换句话说，最值得关注的不是 AI 又写出一篇像模像样的报告，而是 &lt;strong&gt;Firecrawl + Claude 正在把高成本调研工作，变成一个可以复制执行的流程模板&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id=&#34;为什么一份咨询报告能卖到几十万美元&#34;&gt;为什么一份咨询报告，能卖到几十万美元？
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/firecrawl-claude-consulting-workflow-2026/imgs/workflow-comparison.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/firecrawl-claude-consulting-workflow-2026/imgs/workflow-comparison_hu_fd9a032f8a83530c.png 480w, https://blog.ccino.org/p/firecrawl-claude-consulting-workflow-2026/imgs/workflow-comparison_hu_2d8ff4bb1d282ef2.png 1024w&#34;
	loading=&#34;lazy&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;很多人看到“40 页报告”时，会低估背后的劳动量。&lt;/p&gt;
&lt;p&gt;一份像样的竞争情报或市场进入分析，通常至少包含四层工作：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;信息采集&lt;/strong&gt;：把目标公司官网、产品说明、案例、博客、招聘、投资人材料、媒体报道、第三方测评全部找齐。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;信息清洗&lt;/strong&gt;：去掉重复内容、营销话术和无关页面，留下可用事实。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;结构化分析&lt;/strong&gt;：围绕产品定位、目标客户、价格体系、销售方式、区域策略、组织变化等维度做横向比较。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;形成判断&lt;/strong&gt;：最后才是咨询公司最值钱的部分——基于材料得出结论，提出进入路径和优先级建议。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;传统咨询贵，并不只是因为“洞察值钱”，更因为前面三步本身就极其耗人。&lt;/p&gt;
&lt;p&gt;一个顾问团队如果真的按标准流程做，往往需要实习生或分析师先大规模搜集资料，再由顾问做归纳，再由经理级别的人拉框架、写结论、改 PPT。你花的钱，不只是买一份结论，也是在为大量低效但必要的信息体力劳动买单。&lt;/p&gt;
&lt;p&gt;而 AI 工作流厉害的地方就在于：&lt;strong&gt;它把原来最费人力的那部分，压缩成了自动化步骤。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;firecrawl-为什么让这类研究流程更容易复制&#34;&gt;Firecrawl 为什么让这类研究流程更容易复制？
&lt;/h2&gt;&lt;p&gt;如果只是把网页复制进 Claude，为什么不直接手动操作？为什么还要专门用 Firecrawl？&lt;/p&gt;
&lt;p&gt;因为“复制几段文字给模型”并不等于“完成了一次可用的研究数据采集”。&lt;/p&gt;
&lt;p&gt;直接复制粘贴有三个明显问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;覆盖不全&lt;/strong&gt;：你通常只会复制首页或产品介绍页，真正关键的信息可能藏在博客、FAQ、案例或招聘描述里。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;结构混乱&lt;/strong&gt;：不同网站层级不同，人工复制很容易漏页、漏字段、漏上下文。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;规模上不去&lt;/strong&gt;：研究 2 家公司还行，研究 12 家、20 家时，手工方式几乎不可持续。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Firecrawl 的价值，不只是“会爬网页”，而是它更像一个为 LLM 准备数据的采集器。它可以把整站内容按更适合模型理解的方式抓取下来，统一成 Markdown 或结构化文本，减少噪音，提高后续提示词处理的稳定性。&lt;/p&gt;
&lt;p&gt;简单说，Firecrawl 解决的是“研究材料怎么批量、完整、可喂给模型地拿到手”这个问题；Claude 解决的则是“拿到材料之后，怎么提炼出有用洞察”。&lt;/p&gt;
&lt;p&gt;前者负责原料，后者负责分析。两者拼起来，才像一个真正能工作的“AI 咨询助理”。&lt;/p&gt;
&lt;h2 id=&#34;这套低成本研究流程到底怎么搭出来&#34;&gt;这套低成本研究流程，到底怎么搭出来？
&lt;/h2&gt;&lt;p&gt;如果把这个案例抽象成一套任何人都能复用的流程，大致可以分成 4 步。&lt;/p&gt;
&lt;h3 id=&#34;第一步先定义研究问题而不是先抓数据&#34;&gt;第一步：先定义研究问题，而不是先抓数据
&lt;/h3&gt;&lt;p&gt;绝大多数人做 AI 调研失败，不是因为模型不够强，而是因为一开始就没有定义好研究任务。&lt;/p&gt;
&lt;p&gt;你不能只说：“帮我研究一下这个行业。”&lt;/p&gt;
&lt;p&gt;你要先明确输出到底是什么。比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;我要做一个 AI 销售工具，目标市场是北美中小企业，想知道有哪些直接竞争对手。&lt;/li&gt;
&lt;li&gt;我要判断是否进入某个垂直 SaaS 赛道，需要知道现有玩家的定价、渠道和差异化卖点。&lt;/li&gt;
&lt;li&gt;我要为投资 memo 做准备，需要快速梳理某条赛道头部公司的市场格局。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;只有问题够清楚，后面的抓取范围、分析维度和报告结构才会稳定。&lt;/p&gt;
&lt;p&gt;一个实用的起手式是先写出这三个问题：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;我要回答什么商业问题？&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;我要研究哪些公司？&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;最后希望模型输出什么格式？&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;比如你可以先把输出定义为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;市场地图&lt;/li&gt;
&lt;li&gt;竞品对比表&lt;/li&gt;
&lt;li&gt;定价比较&lt;/li&gt;
&lt;li&gt;差异化定位总结&lt;/li&gt;
&lt;li&gt;市场进入建议&lt;/li&gt;
&lt;li&gt;风险与机会判断&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样 Claude 才不是在“自由发挥”，而是在为一个明确结构填内容。&lt;/p&gt;
&lt;h3 id=&#34;第二步列出目标公司清单和信息范围&#34;&gt;第二步：列出目标公司清单和信息范围
&lt;/h3&gt;&lt;p&gt;接下来不是立刻开爬，而是先做研究边界设计。&lt;/p&gt;
&lt;p&gt;建议每家公司至少抓这几类页面：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;首页 / 产品页&lt;/li&gt;
&lt;li&gt;定价页&lt;/li&gt;
&lt;li&gt;客户案例 / 行业解决方案页&lt;/li&gt;
&lt;li&gt;博客 / 资源中心&lt;/li&gt;
&lt;li&gt;招聘页&lt;/li&gt;
&lt;li&gt;About / 团队介绍页&lt;/li&gt;
&lt;li&gt;新闻稿 / 融资公告&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;为什么这些页重要？&lt;/p&gt;
&lt;p&gt;因为它们分别对应不同信号：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;产品页&lt;/strong&gt; 说明它到底卖什么。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;定价页&lt;/strong&gt; 暴露商业模式。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;案例页&lt;/strong&gt; 说明目标客户是谁。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;博客页&lt;/strong&gt; 能看出内容战略和行业叙事。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;招聘页&lt;/strong&gt; 则经常透露组织重点，比如是强化 enterprise sales，还是押注 AI infra。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;很多真正有用的情报，并不在官网首页，而在招聘 JD 和客户案例里。&lt;/p&gt;
&lt;h3 id=&#34;第三步用-firecrawl-抓可分析的数据不是抓越多越好&#34;&gt;第三步：用 Firecrawl 抓“可分析的数据”，不是抓“越多越好”
&lt;/h3&gt;&lt;p&gt;到这一步才轮到工具。&lt;/p&gt;
&lt;p&gt;Firecrawl 的正确用法，不是盲目把全站全抓下来，而是围绕你的研究问题设置抓取策略。核心原则有三个：&lt;/p&gt;
&lt;h4 id=&#34;1优先抓高信号页面&#34;&gt;1）优先抓高信号页面
&lt;/h4&gt;&lt;p&gt;不是每个页面都值得进模型上下文。对于咨询分析而言，最有价值的页面往往是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;pricing&lt;/li&gt;
&lt;li&gt;product&lt;/li&gt;
&lt;li&gt;solutions&lt;/li&gt;
&lt;li&gt;case studies&lt;/li&gt;
&lt;li&gt;blog&lt;/li&gt;
&lt;li&gt;careers&lt;/li&gt;
&lt;li&gt;press / news&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果一上来就把文档站、帮助中心、隐私政策、Terms 全抓进去，最后只会把 Claude 的注意力淹没在噪音里。&lt;/p&gt;
&lt;h4 id=&#34;2每家公司单独成包&#34;&gt;2）每家公司单独成包
&lt;/h4&gt;&lt;p&gt;不要把 12 家公司的网页一次性混在一起给模型。更好的做法是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;每家公司先生成一份独立资料包&lt;/li&gt;
&lt;li&gt;先做单公司摘要&lt;/li&gt;
&lt;li&gt;再进入多公司横向比较&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这是因为 Claude 在面对大量材料时，先做“逐家公司归纳”，再做“跨公司分析”，质量明显更稳。&lt;/p&gt;
&lt;h4 id=&#34;3外部资料单独补充&#34;&gt;3）外部资料单独补充
&lt;/h4&gt;&lt;p&gt;官网内容只能说明“公司想让你看到什么”，它不等于完整现实。&lt;/p&gt;
&lt;p&gt;所以你还要补充：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;财经新闻&lt;/li&gt;
&lt;li&gt;融资新闻&lt;/li&gt;
&lt;li&gt;创始人采访&lt;/li&gt;
&lt;li&gt;公开产品测评&lt;/li&gt;
&lt;li&gt;行业报告里的引用信息&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一家公司官网会强调愿景，但媒体采访和融资稿里往往会讲真实增长逻辑；官网写“适合所有企业”，但招聘信息可能说明它其实主打某个垂直行业。&lt;/p&gt;
&lt;p&gt;这种交叉验证，是让 AI 报告从“整理官网”升级为“像研究报告”的关键。&lt;/p&gt;
&lt;h3 id=&#34;第四步firecrawl-的使用边界成本与选型判断&#34;&gt;第四步：Firecrawl 的使用边界、成本与选型判断
&lt;/h3&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/firecrawl-claude-consulting-workflow-2026/imgs/api-vs-firecrawl.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/firecrawl-claude-consulting-workflow-2026/imgs/api-vs-firecrawl_hu_26fbab71b95394f7.png 480w, https://blog.ccino.org/p/firecrawl-claude-consulting-workflow-2026/imgs/api-vs-firecrawl_hu_77e804805c156674.png 1024w&#34;
	loading=&#34;lazy&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;写到这里，更重要的反而不是继续神化工具，而是把 Firecrawl 能做什么、不能做什么说清楚。&lt;/p&gt;
&lt;p&gt;这里有三条非常值得直接写进正文的提醒：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;社交媒体平台不是 Firecrawl 的强项。&lt;/strong&gt; 像 Facebook、Instagram、X 这类需要登录的平台，Firecrawl 往往爬不到。如果目标就是抓这类站点，应该优先考虑 Apify 之类更适合登录态和复杂交互场景的工具。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;要先有成本意识。&lt;/strong&gt; Firecrawl 免费额度是 500 Credits，用完就没有了。如果使用频率高，Hobby 方案是 &lt;strong&gt;16 美元 / 月，3000 Credits&lt;/strong&gt;。这意味着它更适合“有明确研究目标再抓”，而不是不加控制地全站乱爬。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;它也不是对所有站点都稳定。&lt;/strong&gt; 有些网站的反爬虫机制很强，尤其是带 Cloudflare 防护的站点，Firecrawl 也不一定能 100% 抓到。所以在研究流程里，不能默认“只要交给 Firecrawl 就一定拿得到数据”。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这里最值得保留的一句原则其实是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;有 API 的平台优先用 API，没有 API 的平台再用 Firecrawl。工具是死的，场景是活的。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这句话很重要，因为它决定了你怎么选工具。&lt;/p&gt;
&lt;p&gt;如果你的研究对象本来就有稳定 API，比如公开数据库、官方内容接口、结构化平台数据，那直接走 API 通常更便宜、更稳定、也更适合复用。Firecrawl 更适合的，是那些没有标准 API、但网页信息又足够丰富的公开站点，比如公司官网、产品页、案例页、博客、招聘页这类内容密集页面。&lt;/p&gt;
&lt;p&gt;所以，把 Firecrawl 放进 Claude 工作流里的正确姿势，不是把它当成“万能网页抓取器”，而是把它当成 &lt;strong&gt;在没有 API 可用时，用来补齐网页资料采集的一层能力&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;对这篇文章来说，这个提醒甚至比“怎么接进去”更关键。因为真正成熟的工作流，不是谁都用同一把锤子，而是先判断场景，再决定该用 API、Firecrawl，还是别的抓取工具。&lt;/p&gt;
&lt;h2 id=&#34;claude-最重要的能力不是写作而是把研究过程拆成可重复的分析步骤&#34;&gt;Claude 最重要的能力，不是写作，而是把研究过程拆成可重复的分析步骤
&lt;/h2&gt;&lt;p&gt;很多人调用 Claude 时，喜欢一步到位：把材料全贴进去，再说一句“请给我一份报告”。&lt;/p&gt;
&lt;p&gt;这很省事，但质量通常一般。&lt;/p&gt;
&lt;p&gt;更好的方式是分层处理。&lt;/p&gt;
&lt;h3 id=&#34;第一层单家公司摘要&#34;&gt;第一层：单家公司摘要
&lt;/h3&gt;&lt;p&gt;先让 Claude 对每家公司分别输出同样结构的摘要，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;公司定位&lt;/li&gt;
&lt;li&gt;核心产品&lt;/li&gt;
&lt;li&gt;目标客户&lt;/li&gt;
&lt;li&gt;定价方式&lt;/li&gt;
&lt;li&gt;市场叙事&lt;/li&gt;
&lt;li&gt;销售模式&lt;/li&gt;
&lt;li&gt;近期战略动作&lt;/li&gt;
&lt;li&gt;可疑信号 / 未明确之处&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这一层的目的不是写漂亮，而是建立统一格式，方便后面比较。&lt;/p&gt;
&lt;h3 id=&#34;第二层横向对比&#34;&gt;第二层：横向对比
&lt;/h3&gt;&lt;p&gt;等每家公司都有了统一摘要，再让 Claude 做比较：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;谁和谁是直接竞争？&lt;/li&gt;
&lt;li&gt;谁在打 SMB，谁在打 Enterprise？&lt;/li&gt;
&lt;li&gt;谁的定价最低，谁在走高客单价路线？&lt;/li&gt;
&lt;li&gt;哪些产品卖点高度同质化？&lt;/li&gt;
&lt;li&gt;哪些公司在通过行业化方案拉开差距？&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;到了这一步，Claude 才真正从“摘要器”升级为“分析器”。&lt;/p&gt;
&lt;h3 id=&#34;第三层策略建议&#34;&gt;第三层：策略建议
&lt;/h3&gt;&lt;p&gt;最后才让 Claude 回答最重要的问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果我要进入这个市场，最佳切入口是什么？&lt;/li&gt;
&lt;li&gt;应该先打哪个客户段？&lt;/li&gt;
&lt;li&gt;应该避开哪些已经拥挤的位置？&lt;/li&gt;
&lt;li&gt;产品上最值得差异化的点是什么？&lt;/li&gt;
&lt;li&gt;销售和内容策略上应该怎么设计？&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这一步的价值，不在于模型绝对正确，而在于它能把前面庞杂的信息压缩成一组可讨论的判断框架。你再基于这些判断进行人工修正，效率会高很多。&lt;/p&gt;
&lt;h2 id=&#34;一套实用提示词结构&#34;&gt;一套实用提示词结构
&lt;/h2&gt;&lt;p&gt;如果你真想复现这个案例，提示词最好不要只写一段话，而应该按任务拆开。&lt;/p&gt;
&lt;p&gt;下面是一种更实用的结构。&lt;/p&gt;
&lt;h3 id=&#34;提示词-1单家公司归纳&#34;&gt;提示词 1：单家公司归纳
&lt;/h3&gt;
    &lt;blockquote&gt;
        &lt;p&gt;你是一名 B2B SaaS 战略分析师。请基于以下网页资料，提炼这家公司的：定位、目标客户、核心功能、定价策略、主要使用场景、销售模式、行业聚焦、近期战略信号，并指出信息缺失和可能的推断风险。输出请使用固定小标题。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;h3 id=&#34;提示词-2多家公司对比&#34;&gt;提示词 2：多家公司对比
&lt;/h3&gt;
    &lt;blockquote&gt;
        &lt;p&gt;基于以下 12 家公司的标准化摘要，请从市场细分、定价、目标客户、差异化卖点、渠道策略和品牌叙事六个维度做横向对比，输出一张结构化竞争地图，并指出最拥挤和最空白的市场位置。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;h3 id=&#34;提示词-3市场进入建议&#34;&gt;提示词 3：市场进入建议
&lt;/h3&gt;
    &lt;blockquote&gt;
        &lt;p&gt;假设我是一家新进入者，资源有限，希望在 12 个月内验证 PMF。请基于上面的竞争格局，提出 3 条可执行的市场进入策略，每条策略要包括：目标客户、核心卖点、起步产品范围、建议定价、首批获客路径，以及为什么这样做能避开头部玩家的正面竞争。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;你会发现，真正让结果变好的，不是某一句“神 prompt”，而是把研究流程拆成几个稳定阶段，让模型每一步都只做一件事。&lt;/p&gt;
&lt;h2 id=&#34;它真的替代了麦肯锡吗还没有但已经压缩了前半段研究流程&#34;&gt;它真的替代了麦肯锡吗？还没有，但已经压缩了前半段研究流程
&lt;/h2&gt;&lt;p&gt;说实话，还没有。&lt;/p&gt;
&lt;p&gt;如果把麦肯锡真正能提供的价值拆开，你会发现 AI 目前主要替代的是其中的“研究与初步整理层”，而不是完整咨询交付。&lt;/p&gt;
&lt;p&gt;AI 现在能明显加速的是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;公开信息搜集&lt;/li&gt;
&lt;li&gt;初步竞品映射&lt;/li&gt;
&lt;li&gt;定价和定位比较&lt;/li&gt;
&lt;li&gt;第一版报告结构生成&lt;/li&gt;
&lt;li&gt;假设列表与机会点归纳&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但 AI 仍然很难替代的部分包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一手专家访谈&lt;/li&gt;
&lt;li&gt;企业内部数据调取&lt;/li&gt;
&lt;li&gt;高层政治判断&lt;/li&gt;
&lt;li&gt;组织变革建议落地&lt;/li&gt;
&lt;li&gt;关键结论的责任背书&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这也是为什么我更愿意把这个案例定义成：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Firecrawl + Claude 替代的不是整个咨询公司，而是传统咨询项目里最标准化、最容易复制、也最贵的那一段基础研究流程。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这已经足够重要了。&lt;/p&gt;
&lt;p&gt;因为对大量中小公司、创业团队、独立研究者来说，他们原本根本买不起咨询服务。AI 并不是把原有客户从麦肯锡手里抢走，而是在创造一个过去根本不存在的“轻量级战略研究市场”。&lt;/p&gt;
&lt;h2 id=&#34;对谁最有价值&#34;&gt;对谁最有价值？
&lt;/h2&gt;&lt;p&gt;这套工作流最适合的，不是所有人，而是以下几类角色：&lt;/p&gt;
&lt;h3 id=&#34;1-创业者&#34;&gt;1. 创业者
&lt;/h3&gt;&lt;p&gt;你准备进入一个新赛道时，不可能每次都花几周做市场调研。用这套流程，你可以在一个周末内先得到一版可讨论的竞争格局。&lt;/p&gt;
&lt;h3 id=&#34;2-产品经理&#34;&gt;2. 产品经理
&lt;/h3&gt;&lt;p&gt;做新功能立项、行业方案设计、竞品复盘时，这套方法能显著降低“资料收集”的体力消耗。&lt;/p&gt;
&lt;h3 id=&#34;3-投资研究和-bd-团队&#34;&gt;3. 投资研究和 BD 团队
&lt;/h3&gt;&lt;p&gt;需要快速理解一个行业、筛目标公司、做前期商业判断时，这比传统手工搜集快太多。&lt;/p&gt;
&lt;h3 id=&#34;4-内容研究型创作者&#34;&gt;4. 内容研究型创作者
&lt;/h3&gt;&lt;p&gt;如果你写行业分析、赛道评论、深度报道，也完全可以用这套流程先搭好资料底盘，再做人工加工。&lt;/p&gt;
&lt;h2 id=&#34;真正的门槛不在工具而在研究框架&#34;&gt;真正的门槛，不在工具，而在研究框架
&lt;/h2&gt;&lt;p&gt;看完这种案例后，很多人第一反应是：我是不是也该去学 Firecrawl？是不是只要会调用 Claude，就能产出咨询级报告？&lt;/p&gt;
&lt;p&gt;不完全是。&lt;/p&gt;
&lt;p&gt;工具确实降低了执行门槛，但真正拉开结果差距的，仍然是你怎么提问题、怎么定维度、怎么识别信号。&lt;/p&gt;
&lt;p&gt;同样一批网页数据，低水平使用者只能让 Claude 写出一篇“公司简介合集”；而会研究的人，能让 Claude 帮自己抽出市场结构、识别空白位置、形成进入判断。&lt;/p&gt;
&lt;p&gt;所以这件事最重要的启发不是“Prompt engineering 很神”，而是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;未来高价值知识工作的核心竞争力，可能不再是你会不会搜资料，而是你能不能把问题定义清楚，并把 AI 编排成一条稳定的分析流水线。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;真正会被重估的不只是咨询公司而是一整类知识服务流程&#34;&gt;真正会被重估的，不只是咨询公司，而是一整类知识服务流程
&lt;/h2&gt;&lt;p&gt;Firecrawl + Claude 只是一个开始。&lt;/p&gt;
&lt;p&gt;今天它替代的是公开竞争情报研究，明天就可能是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;招股书初步拆解&lt;/li&gt;
&lt;li&gt;行业白皮书生成&lt;/li&gt;
&lt;li&gt;客户名单筛选与画像归纳&lt;/li&gt;
&lt;li&gt;供应链公开信息对比&lt;/li&gt;
&lt;li&gt;海外市场进入前的竞品扫描&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些工作有一个共同点：以前都需要大量人工去网页里搬运和整理，现在则开始被“抓取工具 + 大模型 + 工作流设计”三件套重新定义。&lt;/p&gt;
&lt;p&gt;所以，这个案例真正值得警惕的，不是麦肯锡会不会被干掉，而是大量“高收费但流程化”的知识服务，会先一步被压缩成标准化 AI 工作流。&lt;/p&gt;
&lt;p&gt;而一旦流程被标准化，价格就会掉，交付速度就会升，原来只有大公司买得起的能力，也会被普通团队拿到手。&lt;/p&gt;
&lt;p&gt;这才是这件事真正震撼的地方。&lt;/p&gt;
&lt;h2 id=&#34;结语&#34;&gt;结语
&lt;/h2&gt;&lt;p&gt;“一个周六替代麦肯锡”当然是标题党，但它抓住了一个真实趋势：&lt;/p&gt;
&lt;p&gt;不是 AI 变成了真正的顶级顾问，而是越来越多原本由顾问团队完成的前置研究工作，正在被自动化工作流吃掉。&lt;/p&gt;
&lt;p&gt;Firecrawl 负责把互联网变成可消费的数据底盘，Claude 负责把材料压缩成结构化判断。两者叠加之后，最先被重估的不是写作，不是摘要，而是那些长期依赖“信息搜集 + 结构化分析”收费的专业服务环节。&lt;/p&gt;
&lt;p&gt;如果你是创业者、产品经理、投资人或者研究者，现在最值得学的，可能不是怎么继续手动收集资料，而是怎么把你的研究方法，翻译成一套 AI 能执行的流程。&lt;/p&gt;
&lt;p&gt;因为未来真正值钱的，不再是“谁更会查资料”，而是“谁更会组织一群模型和工具，为自己完成研究”。&lt;/p&gt;
&lt;p&gt;更准确地说，它压缩的是昂贵的前置研究，而不是自动生成一份可以不经审查直接执行的战略结论。&lt;/p&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/ClaudeAI/comments/1siki9t/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reddit: Firecrawl + Claude just replaced McKinsey consultants&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.firecrawl.dev/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Firecrawl 官网&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;扩展阅读&#34;&gt;扩展阅读
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=tDGiWn0flK8&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Nate Herk: From Zero to Your First Agentic AI Workflow in 26 Minutes (Claude Code)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>AI Agent 最残酷的现实出来了：81% 公司还没真正部署</title>
        <link>https://blog.ccino.org/p/databricks-ai-agent-deployment-gap-2026/</link>
        <pubDate>Sun, 12 Apr 2026 15:30:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/databricks-ai-agent-deployment-gap-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/databricks-ai-agent-deployment-gap-2026/imgs/cover.jpeg" alt="Featured image of post AI Agent 最残酷的现实出来了：81% 公司还没真正部署" /&gt;&lt;p&gt;过去一年，如果你只看新品发布会、融资新闻和社交媒体，很容易得出一个判断：AI Agent 已经成了企业软件的新标配，差别只是有人上得快一点，有人慢一点。&lt;/p&gt;
&lt;p&gt;但 Databricks 最新一组数据，直接把这个判断捅穿了。&lt;/p&gt;
&lt;p&gt;SaaStr 在 4 月 11 日援引 Databricks《State of AI Agents》报告称：&lt;strong&gt;真正完成 AI Agent 部署的组织，只有 19%。&lt;/strong&gt; 更残酷的是，&lt;strong&gt;已经上线的那一小部分团队，却贡献了 97% 的数据库相关 Agent 工作负载。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这组数据最扎眼的地方，不只是“部署率不高”，而是它清楚地告诉所有人：&lt;strong&gt;Agent 时代并没有进入全民普及，而是已经提前进入了分化。&lt;/strong&gt; 少数公司开始把它接进真实业务、跑出真实产出；多数公司还停留在概念讨论、局部试点，或者一堆看起来很像进展的 PPT 里。&lt;/p&gt;
&lt;p&gt;换句话说，2026 年 AI Agent 最重要的现实，不是它有多热，而是：&lt;strong&gt;真正能落地的公司，已经在和只会讨论的公司迅速拉开距离。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/databricks-ai-agent-deployment-gap-2026/imgs/deployment-gap.jpeg&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/databricks-ai-agent-deployment-gap-2026/imgs/deployment-gap_hu_ec8ff2940a9cbbe3.jpeg 480w, https://blog.ccino.org/p/databricks-ai-agent-deployment-gap-2026/imgs/deployment-gap_hu_796496061535a3d7.jpeg 1024w&#34;
	loading=&#34;lazy&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;真正刺眼的从来不是-19而是红利已经被少数公司吃走了&#34;&gt;真正刺眼的，从来不是 19%，而是红利已经被少数公司吃走了
&lt;/h2&gt;&lt;p&gt;19% 这个数字当然不高，但真正该让人警惕的，从来不是“低部署率”本身，而是后面那句：&lt;strong&gt;97% 的数据库相关 Agent 工作负载，集中在已经部署的那一小部分组织里。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这说明企业 Agent 不是在均匀扩散，而是在头部公司快速集中。&lt;/p&gt;
&lt;p&gt;一项技术如果还处在“大家都在试”的阶段，通常会呈现更平均的分布：有人跑得快一点，有人慢一点，但整体差距不会太离谱。可 Databricks 这组数据呈现出的不是平均扩散，而是典型的“少数公司先把绝大多数红利吃走”的结构。&lt;/p&gt;
&lt;p&gt;这背后反映的是一个越来越清晰的事实：&lt;strong&gt;AI Agent 的门槛，从来不只是模型能力。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;今天几乎没有人会认真怀疑模型够不够强。无论是 Claude、GPT，还是其他主流模型，做总结、写报告、调用工具、执行简单多步任务，能力都已经够用了。企业迟迟上不去，不是因为“模型还差最后一点”，而是因为 Agent 一旦要进生产环境，问题就会立刻从“生成质量”切换成“组织协同”。&lt;/p&gt;
&lt;p&gt;它要不要接权限？&lt;br&gt;
它能不能访问内部系统？&lt;br&gt;
谁来定义它的动作边界？&lt;br&gt;
出了错谁回滚？&lt;br&gt;
数据能不能审计？&lt;br&gt;
结果怎么验收？&lt;br&gt;
ROI 怎么算？&lt;/p&gt;
&lt;p&gt;这些问题没有一个是模型发布会能回答的。&lt;/p&gt;
&lt;p&gt;所以 Databricks 这组数据真正揭示的，是企业 AI 讨论已经悄悄换题了。过去大家讨论的是“Agent 能不能跑起来”，现在真正决定成败的，是&lt;strong&gt;它能不能被组织接住。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;多数公司不是输给模型而是输给了业务系统根本接不住-agent&#34;&gt;多数公司不是输给模型，而是输给了“业务系统根本接不住 Agent”
&lt;/h2&gt;&lt;p&gt;很多人理解 Agent，还停留在一个相对轻盈的层面：会调用工具、会拆任务、会连续执行几步动作，看起来像一个“更主动的 AI”。&lt;/p&gt;
&lt;p&gt;但企业真正需要的 Agent，从来不是那个样子。&lt;/p&gt;
&lt;p&gt;企业要的，不是一个在 demo 里能自动完成 8 步流程的漂亮演示，而是一个&lt;strong&gt;能在权限、流程、审计、责任边界都明确的前提下，稳定接入真实业务系统的执行体&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;问题也正是从这里开始变难。&lt;/p&gt;
&lt;p&gt;你让 Agent 帮员工查资料，容易。&lt;br&gt;
你让 Agent 帮财务调账、帮销售改 CRM、帮客服触发退款、帮分析师直接读数据库，就完全不是一回事了。&lt;/p&gt;
&lt;p&gt;因为只要 Agent 触碰的是“真实系统”，它就不再只是一个聊天工具，而开始变成组织流程的一部分。它的每一步动作，都要纳入企业原本已经存在的治理框架。&lt;/p&gt;
&lt;p&gt;这也是为什么很多公司内部的 AI 项目，看起来进展很快，实际上却迟迟上不了生产：&lt;br&gt;
原型能跑，权限没接好；&lt;br&gt;
接口能通，流程没人兜底；&lt;br&gt;
功能能演示，责任边界没人敢签字。&lt;/p&gt;
&lt;p&gt;所以今天多数公司真正缺的，不是更强的模型，而是四种更难补、也更决定成败的能力：&lt;/p&gt;
&lt;p&gt;第一，是&lt;strong&gt;系统接入能力&lt;/strong&gt;。&lt;br&gt;
Agent 不是单独存在的，它必须接 CRM、ERP、知识库、数据库、工单系统、审批系统。模型再聪明，进不去系统，也只能停留在“会聊天”。&lt;/p&gt;
&lt;p&gt;第二，是&lt;strong&gt;权限设计能力&lt;/strong&gt;。&lt;br&gt;
企业不可能把所有系统权限直接交给一个 Agent。怎么分层授权、怎么限制动作范围、怎么避免越权，这是工程问题，更是治理问题。&lt;/p&gt;
&lt;p&gt;第三，是&lt;strong&gt;流程重构能力&lt;/strong&gt;。&lt;br&gt;
很多团队以为把一个 Agent 塞进原有流程就行了，结果发现原流程本身就是给人设计的，并不适合机器执行。Agent 真正落地，往往意味着流程本身也要改。&lt;/p&gt;
&lt;p&gt;第四，是&lt;strong&gt;结果治理能力&lt;/strong&gt;。&lt;br&gt;
谁来校验 Agent 的输出？出了问题怎么追责？什么时候允许自动执行，什么时候必须人工确认？这些都是企业必须提前回答的问题。&lt;/p&gt;
&lt;p&gt;所以很多公司看起来是在“上 AI”，本质上却还没进入“上 Agent”阶段。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/databricks-ai-agent-deployment-gap-2026/imgs/system-governance.jpeg&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/databricks-ai-agent-deployment-gap-2026/imgs/system-governance_hu_cd0acf499ff4d049.jpeg 480w, https://blog.ccino.org/p/databricks-ai-agent-deployment-gap-2026/imgs/system-governance_hu_4a1fc78cae9062e8.jpeg 1024w&#34;
	loading=&#34;lazy&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;最先跑出价值的偏偏不是最性感的-agent&#34;&gt;最先跑出价值的，偏偏不是最性感的 Agent
&lt;/h2&gt;&lt;p&gt;Databricks 这组数据里一个很重要的信号是：已经上线的 Agent 工作负载，大量集中在数据库相关场景。&lt;/p&gt;
&lt;p&gt;这并不意外。&lt;/p&gt;
&lt;p&gt;因为 Agent 最容易真正创造价值的地方，从来不是那些最炫、最像人的场景，而是那些&lt;strong&gt;高频、结构化、边界清晰、结果可验证&lt;/strong&gt;的场景。&lt;/p&gt;
&lt;p&gt;数据库查询、内部分析、运维排障、知识检索、报表生成，这些任务有几个共同特点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;输入相对标准化&lt;/li&gt;
&lt;li&gt;动作链条比较清晰&lt;/li&gt;
&lt;li&gt;结果容易验证&lt;/li&gt;
&lt;li&gt;风险虽然存在，但边界相对明确&lt;/li&gt;
&lt;li&gt;能够直接转化成时间节省或效率提升&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类场景非常适合 Agent 先落地。不是因为它们“最有想象力”，而是因为它们最容易先跑出 ROI。&lt;/p&gt;
&lt;p&gt;这也是今天很多企业 AI 讨论里最容易出现的一个误判：大家总被那些“像人一样自主协作”的 Agent demo 吸引，却忽视了真正最先产生商业价值的，往往是那些一点也不性感的任务。&lt;/p&gt;
&lt;p&gt;企业技术 adoption 一直都是这样。&lt;/p&gt;
&lt;p&gt;最先改变业务结果的，不一定是最惊艳的产品形态，而往往是那些能稳定、持续、低摩擦接入现有流程的工具。Agent 也不会例外。&lt;/p&gt;
&lt;p&gt;对企业来说，真正的红利不是“我的 Agent 看起来多聪明”，而是“它到底能不能在高频流程里稳定替我干活”。&lt;/p&gt;
&lt;h2 id=&#34;2026-年企业-ai-真正的分水岭已经不是模型能力而是组织能力&#34;&gt;2026 年企业 AI 真正的分水岭，已经不是模型能力，而是组织能力
&lt;/h2&gt;&lt;p&gt;如果说 2025 年大家还在争论模型谁更强，那么 2026 年真正拉开差距的，已经越来越不是模型本身，而是组织有没有能力把模型变成系统能力。&lt;/p&gt;
&lt;p&gt;这件事的本质，其实很像云计算早期的发展阶段。&lt;/p&gt;
&lt;p&gt;当年不是所有公司都同时吃到云的红利。真正先受益的，是那些最早完成架构改造、流程适配和团队协同的公司。买一堆服务器不等于完成数字化，上一个大模型 API 也不等于完成 Agent 化。&lt;/p&gt;
&lt;p&gt;AI Agent 也是一样。&lt;/p&gt;
&lt;p&gt;未来企业之间真正的差距，未必体现在“你用的是哪一家模型”，而更可能体现在这些更现实的问题上：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你的内部系统有没有标准化接口？&lt;/li&gt;
&lt;li&gt;你的数据权限有没有被梳理清楚？&lt;/li&gt;
&lt;li&gt;你的业务流程是不是还能被机器执行？&lt;/li&gt;
&lt;li&gt;你的团队里有没有人既懂业务又懂自动化编排？&lt;/li&gt;
&lt;li&gt;你的组织是否愿意为 Agent 的上线建立新的治理机制？&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些东西决定的，不是 Agent 演示得漂不漂亮，而是它能不能长期活在生产环境里。&lt;/p&gt;
&lt;p&gt;所以我们今天其实正在看到一场很重要的变化：&lt;strong&gt;企业 AI 的竞争，正在从“模型采购”转向“组织能力建设”。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这也是 Databricks 这组数据最值得国内团队认真看的地方。它提醒我们，不要再把 Agent 当成一个“模型升级后的自然结果”。它更像是一场组织能力考试。&lt;/p&gt;
&lt;h2 id=&#34;对大多数国内团队来说真正该补的不是-agent-框架而是-agent-ready-的业务底座&#34;&gt;对大多数国内团队来说，真正该补的不是 Agent 框架，而是 Agent-ready 的业务底座
&lt;/h2&gt;&lt;p&gt;过去一段时间，国内关于 Agent 的讨论也非常热：工作流、MCP、Skills、自动化、数字员工，概念一个比一个丰富。&lt;/p&gt;
&lt;p&gt;但真正要走向企业落地，最关键的一步其实很朴素：&lt;strong&gt;别再先问 Agent 能做什么，而要先问你的业务系统能不能接住它。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果一家公司的数据还散落在不同系统里、接口体系不稳定、权限边界模糊、流程大量依赖人工经验，那么 Agent 很难真正释放价值。它不是不能用，而是只能停留在外围辅助层。&lt;/p&gt;
&lt;p&gt;反过来，那些最先把内部知识库、数据库、工单流、审批流、客户系统整理清楚的团队，哪怕模型能力没有领先太多，也更容易率先把 Agent 用起来。&lt;/p&gt;
&lt;p&gt;所以对大多数团队来说，接下来最值得补的，可能不是“再学一种新的 Agent 框架”，而是这些更不性感、却更决定结果的底层能力：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;系统接口标准化&lt;/li&gt;
&lt;li&gt;数据权限梳理&lt;/li&gt;
&lt;li&gt;流程拆解与自动化设计&lt;/li&gt;
&lt;li&gt;人机协作边界定义&lt;/li&gt;
&lt;li&gt;可审计、可回滚、可治理的上线机制&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;说得更直接一点：&lt;strong&gt;未来真正的壁垒，不是谁最会聊 Agent，而是谁最先把业务系统 Agent-ready。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;写在最后落后的可能不是产品节奏而是整个组织的反应速度&#34;&gt;写在最后：落后的可能不是产品节奏，而是整个组织的反应速度
&lt;/h2&gt;&lt;p&gt;Databricks 这组数据最有价值的地方，不是告诉我们 AI Agent 没火，而是提醒我们：&lt;strong&gt;它已经热到足以让公司之间出现现实分化了。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;19% 的部署率，说明大多数公司还没真正迈过那道门。&lt;br&gt;
97% 的工作负载集中，说明先迈过去的人已经开始吃走主要红利。&lt;/p&gt;
&lt;p&gt;这就是今天 AI Agent 最残酷、也最真实的现实：&lt;/p&gt;
&lt;p&gt;不是大家都准备好了，&lt;br&gt;
而是少数公司已经在兑现价值，&lt;br&gt;
多数公司还在讨论它值不值得做。&lt;/p&gt;
&lt;p&gt;等到所有人都开始认真部署时，领先者往往已经不是“先用了几个月”那么简单，而是已经把权限、流程、系统和组织能力都提前重做了一遍。&lt;/p&gt;
&lt;p&gt;到那时，落后的就不只是产品节奏，而是整个组织的反应速度。&lt;/p&gt;
&lt;p&gt;所以比“该不该上 Agent”更重要的问题其实是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;你的公司，准备好接住它了吗？&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;参考来源：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.saastr.com/databricks-only-19-of-organizations-have-deployed-ai-agents-but-theyre-already-creating-97-of-databases/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SaaStr: Databricks Only 19% of Organizations Have Deployed AI Agents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.anthropic.com/engineering/managed-agents&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic Engineering - Scaling Managed Agents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://platform.claude.com/cookbook/managed-agents-cma-prompt-versioning-and-rollback&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Platform Cookbook - Managed Agents tutorial&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;扩展阅读：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;../../post/anthropic-managed-agents-2026/&#34; &gt;Anthropic 把 AI Agent 做成正式产品了：能回滚、能版本化，才是真上线&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;../../post/lovable-vibe-coding-100m-arr/&#34; &gt;146人做到单月$1亿ARR：Lovable凭什么成为Vibe Coding最大赢家？&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Anthropic 把 AI Agent 做成正式产品了：能回滚、能版本化，才是真上线</title>
        <link>https://blog.ccino.org/p/anthropic-managed-agents-2026/</link>
        <pubDate>Sat, 11 Apr 2026 15:15:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/anthropic-managed-agents-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/anthropic-managed-agents-2026/imgs/cover.png" alt="Featured image of post Anthropic 把 AI Agent 做成正式产品了：能回滚、能版本化，才是真上线" /&gt;&lt;p&gt;过去一年大家看 AI Agent 的 Demo 都看麻了：今天有个能自己写出十万行代码的编译器，明天有个帮你自动订机票的外卖助理。但你要是一线开发者，心里肯定清楚，把这些看似花哨的 Agent 塞进生产环境，简直是一场灾难。&lt;/p&gt;
&lt;p&gt;为什么说把 Agent 推上线会让人崩溃？因为只要你稍微改两个字的 Prompt，那个貌似超级聪明的 AI 可能会突然抽风，一通连环调用直接把库清空，或者陷进死循环疯狂烧钱。&lt;/p&gt;
&lt;p&gt;在这个大背景下，很多人都默认了一件事：没治理能力、不能兜底的 Agent，最多就是个摆在极客桌面的玩具。&lt;/p&gt;
&lt;p&gt;但今天不一样了。Anthropic 没搞什么惊天动地的大参数模型发布，只静悄悄弄了个“Managed Agents（托管式智能体）”公测。这可能是我近期看到的最实在的基建动作——这也意味着，AI Agent 终于有底气宣告自己迈进了“可上线、可回滚、可治理”的正轨。&lt;/p&gt;
&lt;h2 id=&#34;1-别再自己手捏底层轮子了&#34;&gt;1. 别再自己手捏底层轮子了
&lt;/h2&gt;&lt;p&gt;以前我们要让 Agent 真的在业务里跑起来，得自己写一大套反人类的调度逻辑：怎么管越来越长的上下文历史，怎么兜住模型总是解析错的 JSON，高并发场景下怎么加锁防崩溃。这感觉就像你在用汇编语言手搓 Web 应用。&lt;/p&gt;
&lt;p&gt;Anthropic 这波 Managed Agents 更新，相当于直接给出了一套带面板的 PaaS（平台即服务）。你不用再搞那些琐碎的状态拼接，交给云端原生结构化托管就行。它的核心不光是多了一个大模型的 API，而更像是一套自带着“安全底盘、黑匣子和紧急制动”的座舱。&lt;/p&gt;
&lt;h2 id=&#34;2-所谓生产刚需版本控制和一键热回滚&#34;&gt;2. 所谓生产刚需：版本控制和一键热回滚
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/anthropic-managed-agents-2026/imgs/versioning-rollback.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/anthropic-managed-agents-2026/imgs/versioning-rollback_hu_5cc894f7773941f5.png 480w, https://blog.ccino.org/p/anthropic-managed-agents-2026/imgs/versioning-rollback_hu_4e3be24e050d88a9.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Managed Agents 的版本控制与一键回滚示意图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;很多工程师肯定都深有体会：昨晚压测跑得很稳的 Prompt 逻辑，今天产品经理随口说“加个边缘防呆说明”，你改完两句推上去，结果好家伙，剩下的正常场景全瘫痪了。&lt;/p&gt;
&lt;p&gt;在 Claude 最新给出的 &lt;code&gt;managed-agents&lt;/code&gt; 手册里，Anthropic 终于按照正经软件工程（CI/CD）的规矩办事了：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;自动化版本控制：&lt;/strong&gt; 你的系统指令不再是随便到处扔的代码字符串，也不是被外部强行拼接的黑盒，而是有了生命周期和确定 ID 的正规版本号（比如咱们推一个 Agent v1.0.2 上去）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;一键热回滚（Rollback）：&lt;/strong&gt; 刚推上线的 Agent 开始出现幻觉胡言乱语？不用慌得鸡飞狗跳，点下控制台或者切个接口，请求能瞬间切回上个不出错的稳定版本。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这才是踏踏实实的干活儿态度：不给投资人画大饼，老老实实把 AI 塞回现代软件工程的治理框架里。&lt;/p&gt;
&lt;h2 id=&#34;3-把大脑和手强行拆开&#34;&gt;3. 把“大脑”和“手”强行拆开
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/anthropic-managed-agents-2026/imgs/brain-hands-decoupling.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/anthropic-managed-agents-2026/imgs/brain-hands-decoupling_hu_b2d8ca6cc77a9875.png 480w, https://blog.ccino.org/p/anthropic-managed-agents-2026/imgs/brain-hands-decoupling_hu_999cae1316223555.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;云端大脑与执行层解耦架构图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;和这次公测一起发出来的一篇他们官方工程博客《Scaling Managed Agents: Decoupling the brain from the hands》中，提了一个很有意思的架构理念：必须把 AI 的“大脑”和执行动作的“双手”解密。&lt;/p&gt;
&lt;p&gt;以前大家抄开源库，大模型推理和本地代码跑工具基本是死死绑在一起的。只要某个节点网络抖了一下，或是大模型突然没按要求吐 JSON，整个跑代码的链条直接卡死。&lt;/p&gt;
&lt;p&gt;针对这个痛点，Anthropic 把这层混沌关系一刀切了：大脑全封闭在云端推理，只负责给出一个干干净净的“行动意图”；具体的执行命令呢，交给标准化、受信任的中间基建去调取。这样一来，大模型那些神经刀的“非确定性”就再也无法反弹绑架你的业务代码环境。同时只要账号权限一隔离，多端分发简直轻松加愉快。&lt;/p&gt;
&lt;h2 id=&#34;4-所以我们还用继续手搓工作流吗&#34;&gt;4. 所以，我们还用继续手搓工作流吗？
&lt;/h2&gt;&lt;p&gt;看到这儿肯定有人要问了：我已经拿 LangChain、又或者自己敲了一套极客味道拉满的脚本工作流，非得转到这什么托管服务上不可？&lt;/p&gt;
&lt;p&gt;这事儿得分两头看。&lt;/p&gt;
&lt;p&gt;如果你的目标就是突破限制，玩类似“16个AI组个合唱团去造操作系统”的前沿实验，那原生脚手架绝对香，你手握底层协议生杀大权。&lt;/p&gt;
&lt;p&gt;但要是你手头负责的，是一台每天给十万客户查额度、理赔退税的刚性 Agent 系统，这时候不宕机、不出公关大乱子，比什么花式架构都值钱。面对这种要拼 SLA 保障的场景，有个原厂提供的、抗压且完全隔离容错的成熟系统，绝对是最稳的靠山。&lt;/p&gt;
&lt;h2 id=&#34;最后说两句&#34;&gt;最后说两句
&lt;/h2&gt;&lt;p&gt;其实这波产品的发布也侧面撕开了一个真相：靠某段神奇 Prompt 耍个杂技拿去各种大会上作秀的日子，基本快翻篇了。&lt;/p&gt;
&lt;p&gt;2026 跑入下半局之后，大家除了堆那点百亿级别死参数外，最猛的绞肉机战场在哪？在“治理生命周期的基建”。怎么做好隔离、怎么防发散、怎么搞定灰布线和毫秒回滚……只有把这种极度无聊枯燥，但又必须严丝合缝的控制机制真正扎牢了，大家天天喊着的“AI 淘汰一半打工人”的这波工业革命，才算是动了真格。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;阅读更多：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.anthropic.com/engineering/managed-agents&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic Engineering - Scaling Managed Agents: Decoupling the brain from the hands&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://platform.claude.com/cookbook/managed-agents-cma-prompt-versioning-and-rollback&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Platform - Managed Agents tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://platform.claude.com/docs/en/release-notes/api&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Platform Release Notes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;扩展阅读：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;../../post/claude-opus-4-6-agent-teams-practice/&#34; &gt;16 个 AI 智能体写出 10 万行编译器：Claude Agent Teams 到底怎么玩？&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;../../post/claude-skills-ai-agent-team/&#34; &gt;Claude Skills 实战：打造你的 AI Agent 团队&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>OpenClaw 之后，Hermes Agent 为什么更值得关注：AI 开始学会你的做事方式</title>
        <link>https://blog.ccino.org/p/hermes-agent-after-openclaw-2026/</link>
        <pubDate>Sat, 11 Apr 2026 10:30:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/hermes-agent-after-openclaw-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/hermes-agent-after-openclaw-2026/imgs/cover.jpg" alt="Featured image of post OpenClaw 之后，Hermes Agent 为什么更值得关注：AI 开始学会你的做事方式" /&gt;&lt;p&gt;最近 AI Agent 的讨论很多。&lt;/p&gt;
&lt;p&gt;但如果你仔细看，大多数所谓 Agent 其实还停留在一个很早期的阶段：它们能调用工具、能写点代码、能完成单次任务，但&lt;strong&gt;每次都像第一次见你&lt;/strong&gt;。你让它今天帮你整理资料，明天再来一次，它依旧不知道你的偏好、不理解你的工作方式，也不会因为昨天踩过坑，今天就少犯一点错。&lt;/p&gt;
&lt;p&gt;这也是为什么，很多 Agent demo 看起来很惊艳，真正拿到日常工作里，却总有一种“它很聪明，但不太熟你”的感觉。&lt;/p&gt;
&lt;p&gt;而最近持续更新的开源项目 &lt;strong&gt;Hermes Agent&lt;/strong&gt;，想解决的正是这个问题。&lt;/p&gt;
&lt;p&gt;GitHub 上，Nous Research 推出的 &lt;strong&gt;Hermes Agent&lt;/strong&gt; 已更新到 &lt;strong&gt;v0.8.0（2026-04-08）&lt;/strong&gt;。它最值得关注的地方，不是“又一个 AI Agent 框架”，而是它在认真回答一个更关键的问题：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AI Agent 能不能在长期使用中逐渐学习你的做事方式，沉淀你的工作流，并且越用越像一个真正的数字同事？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果这个方向成立，那么 AI Agent 的竞争逻辑，可能很快就会变。&lt;/p&gt;
&lt;h2 id=&#34;不是更强的聊天机器人而是更像长期搭档的-agent&#34;&gt;不是更强的聊天机器人，而是更像“长期搭档”的 Agent
&lt;/h2&gt;&lt;p&gt;Hermes Agent 从表面看，和很多 Agent 项目一样，也有一套比较完整的产品形态。&lt;/p&gt;
&lt;p&gt;它可以跑在本地 CLI，也支持 Telegram、Discord、Slack、WhatsApp、Email 等入口；可以本地运行，也支持 Docker、SSH、Modal 等部署方式；支持多模型和自定义端点，不把用户绑定死在单一模型供应商上。&lt;/p&gt;
&lt;p&gt;这些能力当然重要，但它们都还不是 Hermes 最核心的卖点。&lt;/p&gt;
&lt;p&gt;Hermes 真正想打的，不是“我也能调用工具”，而是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;我能不能在你不断使用我的过程中，慢慢形成对你的理解。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这听起来很像一句营销话术，但 Hermes 给出的不是一句口号，而是一套非常工程化的实现思路：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;把长期信息沉淀为持久记忆&lt;/li&gt;
&lt;li&gt;把任务经验沉淀为 skills&lt;/li&gt;
&lt;li&gt;把历史会话放入可检索的数据库&lt;/li&gt;
&lt;li&gt;在重复工作中不断修正自己的执行方式&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;换句话说，它想做的不是“帮你完成一次任务”，而是“在反复协作里，逐渐成为适合你的 Agent”。&lt;/p&gt;
&lt;p&gt;这件事的意义，比单次任务成功率高一点、上下文窗口再长一点，可能都更大。&lt;/p&gt;
&lt;h2 id=&#34;hermes-最值得看的地方它试图让-agent-真的会学习&#34;&gt;Hermes 最值得看的地方：它试图让 Agent 真的“会学习”
&lt;/h2&gt;&lt;p&gt;今天很多人一提到“自我进化 AI”，脑子里想到的还是模型自己更新权重、自己训练自己、自己变得更聪明。&lt;/p&gt;
&lt;p&gt;但在现实里，这种叙事太重、太远，也太不适合普通开发者和个人用户。&lt;/p&gt;
&lt;p&gt;Hermes Agent 给出的是另一条更务实的路线：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;它不试图让模型在底层变聪明，而是让 Agent 在行为层面变得更会做事。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这背后的方法很关键。&lt;/p&gt;
&lt;p&gt;根据官方博客，Hermes 的“自我改进”并不是修改模型权重，而是在执行任务后，对自己的过程进行总结，把有价值的经验写成技能文档或记忆条目。下一次遇到类似任务时，它不再从零开始，而是直接调用这些沉淀下来的方法。&lt;/p&gt;
&lt;p&gt;这意味着 Hermes 的成长，不是抽象的“变智能”，而是非常具体的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;记住你喜欢什么样的输出风格&lt;/li&gt;
&lt;li&gt;记住你项目里哪些坑以前踩过&lt;/li&gt;
&lt;li&gt;记住某类任务应该先做什么、后做什么&lt;/li&gt;
&lt;li&gt;记住哪些规范最好不要再忘&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这件事听上去没有“模型参数量提升”那么性感，但它更接近日常工作的真实价值。&lt;/p&gt;
&lt;p&gt;因为对大多数人来说，我们并不缺一个会说漂亮话的 AI。我们缺的是一个&lt;strong&gt;第二次做同类任务时，真的比第一次更顺手的 AI。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;三层记忆系统才是它和普通-agent-拉开差距的地方&#34;&gt;三层记忆系统，才是它和普通 Agent 拉开差距的地方
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/hermes-agent-after-openclaw-2026/imgs/memory-system.jpg&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/hermes-agent-after-openclaw-2026/imgs/memory-system_hu_ad5c02075f8eec0c.jpg 480w, https://blog.ccino.org/p/hermes-agent-after-openclaw-2026/imgs/memory-system_hu_2ca82fcc9d0aabd9.jpg 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Hermes Agent 三层记忆系统&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;Hermes Agent 另一个很有代表性的设计，是它的三层记忆架构。&lt;/p&gt;
&lt;p&gt;这个设计之所以重要，是因为它体现出一个越来越清晰的行业判断：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Agent 的“记忆”不能只靠上下文窗口硬塞。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Hermes 把记忆大致拆成三层：&lt;/p&gt;
&lt;h3 id=&#34;第一层长期持久记忆&#34;&gt;第一层：长期持久记忆
&lt;/h3&gt;&lt;p&gt;这一层主要保存稳定信息，比如用户偏好、环境约定、项目背景、常见踩坑经验。&lt;/p&gt;
&lt;p&gt;这些内容不是为了让模型“随时想起一切”，而是为了在每次新会话开始时，给它一个长期背景。这样它不会每次都从零认识你，也不会每次都重新理解项目。&lt;/p&gt;
&lt;h3 id=&#34;第二层技能记忆skills&#34;&gt;第二层：技能记忆（Skills）
&lt;/h3&gt;&lt;p&gt;这也是 Hermes 最有意思的地方。&lt;/p&gt;
&lt;p&gt;很多 Agent 即便能“记住事实”，也记不住方法。它知道你是谁，却不一定知道你通常怎么做事。&lt;/p&gt;
&lt;p&gt;Hermes 的 skills 机制，等于是在给 Agent 建一个不断积累的方法库。&lt;/p&gt;
&lt;p&gt;比如它在多次任务后发现：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你写文章时喜欢先讲结论，再讲机制，再讲影响&lt;/li&gt;
&lt;li&gt;你做项目排查时通常先看日志，再看配置，再看依赖&lt;/li&gt;
&lt;li&gt;你处理重复工作时更喜欢标准化流程而不是自由发挥&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些经验都可以逐渐沉淀成 skills。下一次它就不是“记得你说过什么”，而是开始“记得你是怎么做事的”。&lt;/p&gt;
&lt;p&gt;这就是普通聊天助手和长期 Agent 的关键差别。&lt;/p&gt;
&lt;h3 id=&#34;第三层历史会话检索&#34;&gt;第三层：历史会话检索
&lt;/h3&gt;&lt;p&gt;Hermes 还会把历史会话存进可全文检索的数据库里，在需要时再搜索和提取。&lt;/p&gt;
&lt;p&gt;这个设计非常现实。&lt;/p&gt;
&lt;p&gt;因为真正长期使用 AI 的人都会遇到一个问题：你并不总需要“永久记住一切”，但你经常需要“在某个时刻找回以前说过的话、做过的事、定过的规则”。&lt;/p&gt;
&lt;p&gt;全文检索型的会话记忆，比一股脑全塞进上下文，要更省成本，也更可控。&lt;/p&gt;
&lt;p&gt;这背后其实说明，Hermes 想解决的不是“Agent 有没有记忆”，而是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Agent 应该如何在成本、准确性和长期可用性之间，建立一套真正能落地的记忆结构。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;为什么-hermes-放在-openclaw-之后看会更有意思&#34;&gt;为什么 Hermes 放在 OpenClaw 之后看，会更有意思
&lt;/h2&gt;&lt;p&gt;如果你最近一直在关注开源 Agent 生态，那你会发现，Hermes Agent 这条线放在 &lt;strong&gt;OpenClaw 之后&lt;/strong&gt; 来看，会更容易看清它真正的价值。&lt;/p&gt;
&lt;p&gt;前段时间围绕 OpenClaw 的讨论，核心几乎都集中在几个现实问题上：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;订阅与 API 成本到底怎么分摊&lt;/li&gt;
&lt;li&gt;现有 workflow 被平台策略影响后怎么迁移&lt;/li&gt;
&lt;li&gt;多模型路由怎么做，才能降低供应商锁定&lt;/li&gt;
&lt;li&gt;出过安全事件之后，企业还能不能放心落地&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;换句话说，OpenClaw 代表的是开源 Agent 的&lt;strong&gt;上一阶段焦虑&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;先把它跑起来，先把它接进工作流，先把成本、安全、迁移和生态依赖这些现实问题处理掉。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;而 Hermes Agent 更像是在这个基础上，把问题往前推了一步。&lt;/p&gt;
&lt;p&gt;它关心的重点不再只是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;这个 Agent 能不能接进工作流&lt;/li&gt;
&lt;li&gt;能不能换模型&lt;/li&gt;
&lt;li&gt;能不能部署在自己的环境里&lt;/li&gt;
&lt;li&gt;会不会因为平台策略变化被卡住&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;而是进一步追问：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;当这些基础问题逐渐被接受之后，Agent 能不能开始真正积累经验、形成长期记忆，并逐渐适应用户自己的做事方式？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这就是 Hermes 和 OpenClaw 最值得对比的地方。&lt;/p&gt;
&lt;p&gt;如果说 OpenClaw 把大家带进了“Agent 真能拿来干活吗”的阶段，那么 Hermes 想回答的，是“Agent 干过几轮之后，会不会越来越会干”。&lt;/p&gt;
&lt;p&gt;这个差别非常关键。&lt;/p&gt;
&lt;p&gt;因为前者讨论的是&lt;strong&gt;接入能力&lt;/strong&gt;，后者讨论的是&lt;strong&gt;沉淀能力&lt;/strong&gt;；前者更像是在解决“有没有生产力”，后者是在解决“生产力能不能复利”。&lt;/p&gt;
&lt;p&gt;从这个角度看，Hermes 并不是简单替代 OpenClaw 的另一个项目，而更像是把开源 Agent 的竞争维度，从“框架可用性”推进到“长期协作质量”。&lt;/p&gt;
&lt;h2 id=&#34;对比-openclaw你会更容易理解-hermes-真正区别是什么&#34;&gt;对比 OpenClaw，你会更容易理解 Hermes 真正区别是什么
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/hermes-agent-after-openclaw-2026/imgs/openclaw-vs-hermes.jpg&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/hermes-agent-after-openclaw-2026/imgs/openclaw-vs-hermes_hu_ee29b407ddb4f125.jpg 480w, https://blog.ccino.org/p/hermes-agent-after-openclaw-2026/imgs/openclaw-vs-hermes_hu_b2be24727976e6cd.jpg 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;OpenClaw 与 Hermes Agent 对比&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;OpenClaw 之前之所以会吸引大量用户，一个重要原因是它解决了一个非常直接的问题：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;把模型能力尽快接到真实工作流里。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;它让很多开发者第一次认真思考：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agent 能不能成为个人工作流的一部分&lt;/li&gt;
&lt;li&gt;技能和自动化流程能不能形成自己的生态&lt;/li&gt;
&lt;li&gt;如果不想被单一平台锁死，架构该怎么设计&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以 OpenClaw 的价值，更接近“让 Agent 普及起来”。&lt;/p&gt;
&lt;p&gt;但 Hermes 优点，并不是这件事。&lt;/p&gt;
&lt;p&gt;Hermes 的优点是另一种更长期的确定性：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;同样是一个 Agent，它是不是会随着使用越来越懂你，而不是只会一次次重复从零开始。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这两者并不冲突，但关注点完全不同。&lt;/p&gt;
&lt;p&gt;你可以粗略把它们理解成两种不同阶段的产品问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;OpenClaw 式问题&lt;/strong&gt;：怎么把 Agent 接进来，怎么控制成本与风险，怎么避免平台锁定&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hermes 式问题&lt;/strong&gt;：Agent 接进来之后，怎么让它留下经验，怎么让它以后越来越顺手&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也正因为如此，Hermes 这类项目对重度用户会更有吸引力。&lt;/p&gt;
&lt;p&gt;因为轻度用户只在乎一次任务能不能完成，而重度用户更在乎一件事：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;我解释了十次的东西，你第十一次能不能自己记住。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这也是为什么，Hermes 的关键词不是“更多工具”“更多平台”“更强 demo”，而是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;memory&lt;/li&gt;
&lt;li&gt;skills&lt;/li&gt;
&lt;li&gt;self-improving&lt;/li&gt;
&lt;li&gt;long-term adaptation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它想构建的不是一次性自动化，而是一种可以持续积累的工作关系。&lt;/p&gt;
&lt;h2 id=&#34;对开发者来说hermes-真正有吸引力的是什么&#34;&gt;对开发者来说，Hermes 真正有吸引力的是什么
&lt;/h2&gt;&lt;p&gt;如果你是开发者，Hermes 的吸引力其实很直接。&lt;/p&gt;
&lt;p&gt;第一，它是开源的。&lt;/p&gt;
&lt;p&gt;这意味着你可以清楚看到它是怎么做 skills、怎么管理记忆、怎么组织历史检索的，而不是只能听产品宣传。&lt;/p&gt;
&lt;p&gt;第二，它不强绑定单一模型。&lt;/p&gt;
&lt;p&gt;这点非常关键。因为对很多开发者和团队来说，Agent 好不好用，不只是取决于能力，还取决于：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;成本能不能接受&lt;/li&gt;
&lt;li&gt;模型能不能替换&lt;/li&gt;
&lt;li&gt;部署够不够自由&lt;/li&gt;
&lt;li&gt;数据能不能掌握在自己手里&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这恰好也让它和 OpenClaw 形成了一种很有意思的对照。&lt;/p&gt;
&lt;p&gt;OpenClaw 把很多人带进了 AI workflow 的世界，但也让大家更早地撞上了平台依赖、成本重算、迁移压力和安全边界这些问题。Hermes 则更像是在这之后提供另一种想象：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;如果基础设施和模型路由都能自己掌控，那 Agent 的下一步，应该不是继续堆入口和堆集成，而是开始积累你的方法论。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;换句话说，OpenClaw 更像是让你先拥有一个可跑的 Agent 系统，Hermes 更像是在问：这个系统能不能随着时间变成“你的系统”。&lt;/p&gt;
&lt;p&gt;第三，它代表了一种很现实的产品思路：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;先把行为层做好，再谈更宏大的 AGI 叙事。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;说得更直白一点，很多用户根本不需要一个会谈宇宙哲学的超级 Agent，他们需要的是一个：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;能帮自己处理重复事务&lt;/li&gt;
&lt;li&gt;记住自己的习惯&lt;/li&gt;
&lt;li&gt;减少重复解释成本&lt;/li&gt;
&lt;li&gt;每周比上周更顺手一点&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果一个 Agent 真能做到这几点，它就已经足够有产品价值了。&lt;/p&gt;
&lt;h2 id=&#34;开源-agent-的下一阶段可能不是更炫而是更持久&#34;&gt;开源 Agent 的下一阶段，可能不是“更炫”，而是“更持久”
&lt;/h2&gt;&lt;p&gt;Hermes Agent 之所以值得写，不在于它又做出了一个炫技 demo，而在于它代表了一种更成熟的判断：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Agent 的竞争，正在从“单次能力展示”转向“长期关系经营”。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;以前大家比的是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;谁能自主调用更多工具&lt;/li&gt;
&lt;li&gt;谁能完成更复杂的任务链&lt;/li&gt;
&lt;li&gt;谁看起来更像一个自动化员工&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;接下来大家更可能比的是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;谁更懂用户&lt;/li&gt;
&lt;li&gt;谁更会复用历史经验&lt;/li&gt;
&lt;li&gt;谁能形成越来越强的个性化工作流&lt;/li&gt;
&lt;li&gt;谁能在长期使用中不断降低用户的沟通成本&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果这个趋势成立，那么 Agent 领域真正重要的分水岭，就不再只是模型强弱，而是有没有办法把“经验”沉淀成系统能力。&lt;/p&gt;
&lt;p&gt;而 Hermes，正是这条路上的一个很典型样本。&lt;/p&gt;
&lt;p&gt;它未必已经完美，也未必已经成熟到所有人都能直接拿来生产可用，但它至少比很多只会展示一段酷炫视频的 Agent 项目，更接近那个真正重要的问题：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AI 到底能不能学会你的做事方式。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果答案是能，那 AI Agent 的下一轮竞争，可能才刚刚开始。&lt;/p&gt;
&lt;h2 id=&#34;写在最后&#34;&gt;写在最后
&lt;/h2&gt;&lt;p&gt;Hermes Agent 最值得关注的，不是“开源圈又出了一个新项目”，而是它把一个过去很虚的概念，做成了一个可以拆解、可以理解、可以讨论的产品方向：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Agent 不只是帮你干活，而是在长期协作里逐渐学会怎么替你干活。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这句话的差别看上去不大，但背后的产品意义非常大。&lt;/p&gt;
&lt;p&gt;前者只是工具升级，后者才可能是下一代个人 AI 助手真正成立的前提。&lt;/p&gt;
&lt;p&gt;也许未来最重要的 Agent，不一定是第一次见你时最聪明的那个。&lt;/p&gt;
&lt;p&gt;而是三个月后，最懂你怎么做事的那个。&lt;/p&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/nousresearch/hermes-agent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NousResearch/hermes-agent - GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/NousResearch/hermes-agent/releases/tag/v2026.4.3&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hermes Agent v0.7.0 / v2026.4.3 Release&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://hermes-agent.ai/blog/self-improving-ai-guide&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hermes Agent - Self-Improving AI Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://hermes-agent.ai/blog/hermes-agent-memory-system&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hermes Agent - Memory System&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;扩展阅读&#34;&gt;扩展阅读
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.anthropic.com/engineering/managed-agents&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic Engineering - Scaling Managed Agents: Decoupling the brain from the hands&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://platform.claude.com/cookbook/managed-agents-cma-prompt-versioning-and-rollback&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Platform Cookbook - Managed Agents tutorial: prompt versioning and rollback&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>OpenClaw 被封后一周：迁不迁、怎么迁、要多花多少钱</title>
        <link>https://blog.ccino.org/p/openclaw-migration-cost-recalculation-2026/</link>
        <pubDate>Fri, 10 Apr 2026 20:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/openclaw-migration-cost-recalculation-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/openclaw-migration-cost-recalculation-2026/imgs/cover-openclaw-migration.png" alt="Featured image of post OpenClaw 被封后一周：迁不迁、怎么迁、要多花多少钱" /&gt;&lt;p&gt;4 月 4 日政策变更当天，社区讨论几乎都还是情绪表达。一周过去，大家问得更多的已经不是“该不该骂”，而是三个更现实的问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;继续用 OpenClaw 还是换栈？&lt;/li&gt;
&lt;li&gt;账单会涨多少？&lt;/li&gt;
&lt;li&gt;哪条迁移路线最稳？&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这个变化不难理解。对真正依赖这套工作流的人来说，最重要的从来不是“站队”，而是&lt;strong&gt;别把生产节奏打断&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;所以这篇只谈决策，不复读新闻。&lt;/p&gt;
&lt;h2 id=&#34;先把本质说清楚不是涨价是成本归位&#34;&gt;先把本质说清楚：不是涨价，是成本归位
&lt;/h2&gt;&lt;p&gt;这次调整之后，很多原本被“订阅打包吸收”的调用，开始变成显性的 API 成本。&lt;/p&gt;
&lt;p&gt;更准确地说，真正冒出来的不只是单价，而是以前没认真算过的那部分消耗：批量整理、低价值改写、例行巡检，这些原本躲在订阅池里的流程，现在都会一笔一笔回到账单上。&lt;/p&gt;
&lt;p&gt;换句话说：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;以前，调用成本被隐藏在订阅里；&lt;/li&gt;
&lt;li&gt;现在，调用成本回到每一条任务本身。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这会直接改变使用习惯：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;提示词更短，输出更克制；&lt;/li&gt;
&lt;li&gt;自动化任务从“能自动就自动”变成“值不值自动”；&lt;/li&gt;
&lt;li&gt;单模型方案开始向多模型分层转。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;我的判断是，这一轮真正会被拉开差距的，不是最会写 Prompt 的团队，而是最先把任务分级、预算边界和回退机制补齐的团队。&lt;/p&gt;
&lt;h2 id=&#34;三条迁移路线基本覆盖大多数团队&#34;&gt;三条迁移路线，基本覆盖大多数团队
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/openclaw-migration-cost-recalculation-2026/imgs/migration-routes-comparison.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/openclaw-migration-cost-recalculation-2026/imgs/migration-routes-comparison_hu_f5b996390d868b95.png 480w, https://blog.ccino.org/p/openclaw-migration-cost-recalculation-2026/imgs/migration-routes-comparison_hu_cc67f08af8b81f83.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;三条迁移路线对比图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;路线-a保留-openclaw使用-claude-api-key&#34;&gt;路线 A：保留 OpenClaw，使用 Claude API Key
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;适合&lt;/strong&gt;：已有大量技能和流程沉淀、短期不能停机的团队。&lt;/p&gt;
&lt;p&gt;这基本是“先保不断工”的方案。改动最小，恢复最快，但账单波动也会最先暴露出来。&lt;/p&gt;
&lt;p&gt;如果你选这条路，第一件事不是优化 Prompt，而是先把两件基础设施补上：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;token 预算上限 + 告警；&lt;/li&gt;
&lt;li&gt;任务分级（高价值保留，低价值降频）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;路线-b保留-openclaw上多模型路由&#34;&gt;路线 B：保留 OpenClaw，上多模型路由
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;适合&lt;/strong&gt;：对成本敏感，且任务天然分层的团队。&lt;/p&gt;
&lt;p&gt;典型分层方式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;高风险决策：高性能模型；&lt;/li&gt;
&lt;li&gt;常规文案/整理：中档模型；&lt;/li&gt;
&lt;li&gt;批量改写/分类：低成本模型或本地模型。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;优点&lt;/strong&gt;：成本弹性大，单供应商风险更低。&lt;br&gt;
&lt;strong&gt;缺点&lt;/strong&gt;：维护复杂度上升，输出一致性需要额外治理。&lt;/p&gt;
&lt;h2 id=&#34;路线-c迁出-openclaw改用其他-agentcli-工作流&#34;&gt;路线 C：迁出 OpenClaw，改用其他 Agent/CLI 工作流
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;适合&lt;/strong&gt;：已经决定做架构去耦，愿意接受短期重构成本的团队。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;优点&lt;/strong&gt;：长期自主性更高。&lt;br&gt;
&lt;strong&gt;缺点&lt;/strong&gt;：前期重建成本最高，组织配合要求也更高。&lt;/p&gt;
&lt;p&gt;不建议“一刀切全量迁移”。更现实的做法是：关键链路先迁，新旧并跑 1-2 周再切流。&lt;/p&gt;
&lt;p&gt;如果一定要说一个优先级，我会把“先保住最赚钱、最常用、最不能停的那条链路”放在所有迁移动作前面，其他都往后排。&lt;/p&gt;
&lt;h2 id=&#34;成本别只看单价要看总拥有成本tco&#34;&gt;成本别只看单价，要看总拥有成本（TCO）
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/openclaw-migration-cost-recalculation-2026/imgs/tco-cost-breakdown.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/openclaw-migration-cost-recalculation-2026/imgs/tco-cost-breakdown_hu_948e07f11c625f45.png 480w, https://blog.ccino.org/p/openclaw-migration-cost-recalculation-2026/imgs/tco-cost-breakdown_hu_367ada278557541c.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;迁移总拥有成本拆解图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;很多团队迁移时只盯 API 单价，这通常会算错账。至少要同时算四层：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;模型调用成本（token）；&lt;/li&gt;
&lt;li&gt;维护成本（路由、兼容、监控）；&lt;/li&gt;
&lt;li&gt;故障成本（回滚、停摆、人工兜底）；&lt;/li&gt;
&lt;li&gt;机会成本（团队被迁移占用，业务迭代推迟）。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;比如有些团队最后发现，真正把预算吃掉的并不是高价值任务，而是那些看起来不贵、但每天都在跑的边角流程。&lt;/p&gt;
&lt;p&gt;一个实用公式：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;月总成本 = 模型费用 + 工程维护人天 + 故障损失 + 迁移摊销
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果你只算第一项，最后往往会发现“看起来省钱，实际上更贵”。&lt;/p&gt;
&lt;p&gt;我更倾向于把迁移看成一次经营动作，而不是一次纯技术替换：账单只是结果，真正决定成本的是任务边界画得够不够清、人工兜底留得够不够少。&lt;/p&gt;
&lt;h2 id=&#34;最容易踩的四个坑&#34;&gt;最容易踩的四个坑
&lt;/h2&gt;&lt;h2 id=&#34;1-只迁模型不迁提示词&#34;&gt;1) 只迁模型，不迁提示词
&lt;/h2&gt;&lt;p&gt;同一提示词在不同模型上，服从方式和输出习惯都不一样。直接平移，质量波动几乎是必然。&lt;/p&gt;
&lt;h2 id=&#34;2-只看-token不看返工时长&#34;&gt;2) 只看 token，不看返工时长
&lt;/h2&gt;&lt;p&gt;账单变低了，但人工修稿和复核翻倍，总成本并不会变低。&lt;/p&gt;
&lt;h2 id=&#34;3-自动化过度&#34;&gt;3) 自动化过度
&lt;/h2&gt;&lt;p&gt;过去在订阅池里“看不见”的低价值流程，现在会真实吞预算。该砍就砍。&lt;/p&gt;
&lt;h2 id=&#34;4-没有供应商回退预案&#34;&gt;4) 没有供应商回退预案
&lt;/h2&gt;&lt;p&gt;单一路线一旦异常，业务会被卡住。关键链路至少要有一条可切换备份。&lt;/p&gt;
&lt;h2 id=&#34;一份可落地的-7-天迁移计划&#34;&gt;一份可落地的 7 天迁移计划
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Day 1&lt;/strong&gt;：盘点流程，按价值与频率分级；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Day 2&lt;/strong&gt;：给高频任务加预算与成功率监控；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Day 3&lt;/strong&gt;：确定主路线和备路线；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Day 4-5&lt;/strong&gt;：灰度迁移 20% 流量；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Day 6&lt;/strong&gt;：修 Prompt、修路由、修告警阈值；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Day 7&lt;/strong&gt;：扩大到 60%-80%，保留回滚开关。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这里有个很实际的原则：只要成功率连续下滑，或者人工返工时长明显上升，就先别急着继续放量。&lt;/p&gt;
&lt;p&gt;这套节奏的重点是：&lt;strong&gt;先保连续性，再追最优成本。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;给国内开发者的五条长期建议&#34;&gt;给国内开发者的五条长期建议
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;业务层和模型 SDK 解耦，预留替换面；&lt;/li&gt;
&lt;li&gt;统一输出 schema，降低模型切换摩擦；&lt;/li&gt;
&lt;li&gt;关键任务做双供应商热备；&lt;/li&gt;
&lt;li&gt;监控别只盯价格，要同时看延迟和成功率；&lt;/li&gt;
&lt;li&gt;每月做一次“切换演练”，防止预案只停留在文档里。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;结语&#34;&gt;结语
&lt;/h2&gt;&lt;p&gt;OpenClaw 这次事件，表面上看是订阅策略变化，实际暴露出来的是另一件事：很多 AI 工作流过去跑得顺，不等于它真的经得起精细化核算。&lt;/p&gt;
&lt;p&gt;以后比拼的，也不只是“谁先接上新模型”，而是谁能把三件事一起管住：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;质量稳定；&lt;/li&gt;
&lt;li&gt;成本可算；&lt;/li&gt;
&lt;li&gt;路线可切。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;把这三件事做成基础能力，下一次平台策略再变，你就不会被动。&lt;/p&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://techcrunch.com/2026/04/04/anthropic-says-claude-code-subscribers-will-need-to-pay-extra-for-openclaw-support/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;TechCrunch: Anthropic says Claude Code subscribers will need to pay extra for OpenClaw usage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://thenextweb.com/news/anthropic-openclaw-claude-subscription-ban-cost&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;TNW: Anthropic blocks OpenClaw from Claude subscriptions in cost crackdown&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/ClaudeAI/comments/1sbshwj/anthropic_just_gave_us_1_month_worth_of/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reddit: Anthropic just gave us 1 month worth of subscription value as usage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/ClaudeAI/comments/1sbsfst/claude_is_killing_openclaw_oauth_use_starting/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reddit: Claude is killing Openclaw oauth use starting tomorrow&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>开源模型首次登顶：智谱 GLM-5.1 在代码能力上超越了 Claude Opus 4.6</title>
        <link>https://blog.ccino.org/p/zhipu-glm51-tops-swe-bench-pro-2026/</link>
        <pubDate>Fri, 10 Apr 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/zhipu-glm51-tops-swe-bench-pro-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/zhipu-glm51-tops-swe-bench-pro-2026/imgs/cover.png" alt="Featured image of post 开源模型首次登顶：智谱 GLM-5.1 在代码能力上超越了 Claude Opus 4.6" /&gt;&lt;p&gt;2026 年 4 月 7 日，一张截图在 AI 圈悄悄流传：SWE-bench Pro 全球排行榜的第一名，变成了一个中文名字——&lt;strong&gt;GLM-5.1&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;发布它的公司叫 Z.ai，也就是曾经的智谱 AI。&lt;/p&gt;
&lt;p&gt;得分 58.4，超过 Claude Opus 4.6 的 57.3，超过 GPT-5.4 的 57.7，超过 Gemini 3.1 Pro 的 55.1。&lt;strong&gt;开源，免费，MIT 协议。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这是中国大模型第一次在软件工程最重要的基准测试上登顶全球。但在你转发庆祝之前，有一些细节值得认真看。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;什么是-swe-bench-pro为什么它重要&#34;&gt;什么是 SWE-bench Pro，为什么它重要
&lt;/h2&gt;&lt;p&gt;SWE-bench 是目前公认的软件工程能力最权威的评测标准之一，由普林斯顿大学研究团队设计。它的逻辑很简单：给模型一个真实 GitHub 仓库的 Bug 报告，让它自动修复，然后用原始测试套件验证是否真的修好了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;没有选择题，没有简答题——只看能不能真的修 Bug。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;SWE-bench Pro 是进阶版，题目难度更高，来自更复杂的生产级代码库。能在这里得高分，意味着模型不只是会&amp;quot;写看起来像代码的东西&amp;quot;，而是真正能理解代码意图、定位问题根源、生成可运行的修复。&lt;/p&gt;
&lt;p&gt;这为什么重要？因为这正是开发者每天在做的事情。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;glm-51-的成绩单&#34;&gt;GLM-5.1 的成绩单
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/zhipu-glm51-tops-swe-bench-pro-2026/imgs/benchmark-comparison.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/zhipu-glm51-tops-swe-bench-pro-2026/imgs/benchmark-comparison_hu_51268aae6fbc7737.png 480w, https://blog.ccino.org/p/zhipu-glm51-tops-swe-bench-pro-2026/imgs/benchmark-comparison_hu_87105626bc5b4de5.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;SWE-bench Pro 基准测试对比&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;模型&lt;/th&gt;
          &lt;th&gt;SWE-bench Pro&lt;/th&gt;
          &lt;th&gt;性质&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;GLM-5.1&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;58.4&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;开源（MIT）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GPT-5.4&lt;/td&gt;
          &lt;td&gt;57.7&lt;/td&gt;
          &lt;td&gt;闭源付费&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Claude Opus 4.6&lt;/td&gt;
          &lt;td&gt;57.3&lt;/td&gt;
          &lt;td&gt;闭源付费&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Gemini 3.1 Pro&lt;/td&gt;
          &lt;td&gt;55.1&lt;/td&gt;
          &lt;td&gt;闭源付费&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;在这一项测试上，GLM-5.1 是全球第一。而且它是&lt;strong&gt;完全开源&lt;/strong&gt;的——代码、权重、训练细节全部开放，MIT 协议，可商用。&lt;/p&gt;
&lt;p&gt;这意味着任何人都可以在自己的服务器上运行一个&amp;quot;超越 Claude Opus 4.6 的代码模型&amp;quot;，成本几乎为零。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;但有一个细节不能忽视&#34;&gt;但有一个细节不能忽视
&lt;/h2&gt;&lt;p&gt;SWE-bench Pro 只是代码能力的一个维度。&lt;/p&gt;
&lt;p&gt;如果把测试范围扩大到&lt;strong&gt;代码综合能力榜单&lt;/strong&gt;（结合 Terminal-Bench 2.0 和 NL2Repo），排名就变了：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;模型&lt;/th&gt;
          &lt;th&gt;综合代码能力&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Claude Opus 4.6&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;57.5&lt;/strong&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GPT-5.4&lt;/td&gt;
          &lt;td&gt;56.8&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GLM-5.1&lt;/td&gt;
          &lt;td&gt;54.9&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Claude 在综合评估中仍然领先。GLM-5.1 在 Bug 修复这个单项上是第一，但在需要跨文件理解、长上下文操作、自然语言转代码等综合场景下，差距依然存在。&lt;/p&gt;
&lt;p&gt;这不是说 GLM-5.1 的胜利是假的——但&amp;quot;国产模型全面超越 Claude&amp;quot;的说法也过于夸大。更准确的描述是：&lt;strong&gt;在特定的、最接近真实开发场景的任务上，开源中国模型已经可以与世界最强的闭源模型掰手腕。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;最让人意外的能力连续工作-8-小时&#34;&gt;最让人意外的能力：连续工作 8 小时
&lt;/h2&gt;&lt;p&gt;GLM-5.1 还有一个特性值得单独说——它支持&lt;strong&gt;持续 8 小时的自主执行任务&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;它可以独立完成一个完整的&amp;quot;实验—分析—优化&amp;quot;循环：写代码、跑测试、看结果、调整参数、再跑测试……不需要人在旁边盯着。&lt;/p&gt;
&lt;p&gt;目前大多数模型的 Agent 能力在遇到复杂任务时很快就会&amp;quot;迷路&amp;quot;，或者在上下文过长后开始犯低级错误。GLM-5.1 的 8 小时自主运行，如果数据真实可靠，代表着一种质的提升——AI 开始能够独立完成工程师要花一整个工作日才能完成的任务。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;为什么智谱选择开源&#34;&gt;为什么智谱选择开源
&lt;/h2&gt;&lt;p&gt;这里有一个值得思考的问题：GLM-5.1 在 SWE-bench Pro 上击败了所有闭源对手，然后选择把模型开源。为什么？&lt;/p&gt;
&lt;p&gt;可以从几个角度理解：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. 开源是竞争策略，不是慈善。&lt;/strong&gt; Llama 系列让 Meta 拿到了大量外部开发者为其生态做贡献；智谱开源 GLM-5.1，同样是在建立护城河——让更多人用、更多人贡献、更多公司围绕这个模型构建服务。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. 商业化走另一条路。&lt;/strong&gt; GLM-5.1 提供 API 付费访问，开源模型权重本身并不是收入来源，而是获客手段。这和 Anthropic、OpenAI 的商业逻辑完全不同。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. 对 Anthropic 和 OpenAI 的压制。&lt;/strong&gt; 当一个开源免费的模型能在关键指标上达到顶尖闭源模型的水平，付费使用 Claude 的理由就少了一个。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;这对国内-ai-产业意味着什么&#34;&gt;这对国内 AI 产业意味着什么
&lt;/h2&gt;&lt;p&gt;两年前，业界的普遍认知是：国产开源模型能达到 GPT-3.5 的水平就不错了，到达 GPT-4 级别还要等。&lt;/p&gt;
&lt;p&gt;现在，2026 年 4 月，一个国产开源模型在软件工程基准上拿到了全球第一。&lt;/p&gt;
&lt;p&gt;这个速度，超出了几乎所有人的预期。&lt;/p&gt;
&lt;p&gt;但这也提出了新的问题：SWE-bench Pro 代表的是&amp;quot;修复给定 Bug&amp;quot;的能力——这是相对标准化、可量化的任务。真实的软件工程还包括需求理解、架构设计、跨团队协作……这些能力的评测，还没有统一标准。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;国产模型赢了这场比赛，但整个赛道还很长。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;普通开发者现在可以做什么&#34;&gt;普通开发者现在可以做什么
&lt;/h2&gt;&lt;p&gt;如果你感兴趣，GLM-5.1 已经开源在 Hugging Face，MIT 协议。&lt;/p&gt;
&lt;p&gt;几个实际的使用路径：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;本地部署&lt;/strong&gt;：有 GPU 的开发者可以直接下载运行，对比 Claude Code 在你自己的项目上的表现&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;API 调用&lt;/strong&gt;：Z.ai 和第三方 API 平台（如 APIYI）已经提供 GLM-5.1 的 API，价格低于 Claude&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;基准测试复现&lt;/strong&gt;：SWE-bench 是开源的，可以用自己的代码库来测试看看差距在哪&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最重要的是：&lt;strong&gt;不要只看排行榜，在你自己的任务上测一测才算数。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;最后&#34;&gt;最后
&lt;/h2&gt;&lt;p&gt;GLM-5.1 登顶 SWE-bench Pro，是一个真实的里程碑。不是宣传稿，不是水分，是同行评审的基准测试。&lt;/p&gt;
&lt;p&gt;但它不是&amp;quot;国产 AI 全面超越 OpenAI 和 Anthropic&amp;quot;的证明——在综合能力、长上下文、多模态等维度上，差距依然存在。&lt;/p&gt;
&lt;p&gt;这场比赛的节奏，比任何人预期的都快。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://venturebeat.com/technology/ai-joins-the-8-hour-work-day-as-glm-ships-5-1-open-source-llm-beating-opus-4&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;VentureBeat: GLM-5.1 ships, beating Opus 4.6 and GPT-5.4 on SWE-Bench Pro&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://dataconomy.com/2026/04/08/z-ais-glm-5-1-tops-swe-bench-pro-beating-major-ai-rivals/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Z.ai&amp;rsquo;s GLM-5.1 Tops SWE-Bench Pro - Dataconomy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.modemguides.com/blogs/ai-news/glm-5-1-open-source-benchmarks-local-ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GLM-5.1 Open Source: #1 on SWE-Bench Pro&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.qbitai.com/2026/04/397898.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;量子位：开源模型首超Opus4.6！智谱GLM-5.1登场&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://techbriefly.com/2026/04/08/z-ai-launches-glm-5-1-model-surpassing-competitors-in-benchmarks/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;TechBriefly: Z.ai launches GLM-5.1 model, surpassing competitors in benchmarks&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>你花$20订阅的Claude，推理能力已悄悄少了三分之二</title>
        <link>https://blog.ccino.org/p/anthropic-opus46-reasoning-drop-hidden-2026/</link>
        <pubDate>Thu, 09 Apr 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/anthropic-opus46-reasoning-drop-hidden-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/anthropic-opus46-reasoning-drop-hidden-2026/imgs/cover.png" alt="Featured image of post 你花$20订阅的Claude，推理能力已悄悄少了三分之二" /&gt;&lt;p&gt;四月初，r/ClaudeAI 社区里出现了一个帖子，标题很平静：&lt;strong&gt;&amp;ldquo;Something happened to Opus 4.6&amp;rsquo;s reasoning effort&amp;rdquo;&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;帖主没有愤怒，没有指责，只是上传了一张对比截图：同样的提示词，同样的任务，几周前的Opus 4.6会调用几千个thinking token仔细推理，而现在——它的思考几乎消失了。&lt;/p&gt;
&lt;p&gt;这个帖子最终获得了 &lt;strong&gt;⬆️2917 赞和 427 条评论&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;几天后，另一个帖子出现了，措辞就没那么客气了：&lt;strong&gt;&amp;ldquo;Anthropic stayed quiet until someone showed Claude&amp;rsquo;s thinking depth dropped 67%&amp;rdquo;&lt;/strong&gt;。又是 &lt;strong&gt;⬆️1669 赞，242 条评论&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;两帖合计超过4500赞，成为本周 r/ClaudeAI 最热话题之一。&lt;/p&gt;
&lt;p&gt;Anthropic到底做了什么？更重要的是，它&lt;strong&gt;没做什么&lt;/strong&gt;？&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;事件还原用户如何发现的&#34;&gt;事件还原：用户如何发现的
&lt;/h2&gt;&lt;p&gt;要理解这件事，得先明白Claude的&amp;quot;扩展思考&amp;quot;（Extended Thinking）功能是怎么工作的。&lt;/p&gt;
&lt;p&gt;当你使用Opus 4.6的推理模式时，模型会先用一段&amp;quot;内部思考&amp;quot;来分析问题，这段思考会消耗token——就像你在纸上打草稿，打得越多，推理越深入，答案往往越准确。&lt;/p&gt;
&lt;p&gt;几位重度用户发现，&lt;strong&gt;4月初的Opus 4.6在推理任务上的thinking token数量，相比一个月前大幅减少&lt;/strong&gt;。他们做了系统性测试：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用相同的数学证明题测试，thinking token从早期的约 &lt;strong&gt;8,000-12,000 个&lt;/strong&gt;降到了 &lt;strong&gt;2,000-4,000 个&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;用同样的代码架构设计题，推理深度下降约 &lt;strong&gt;67%&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;最终答案质量可感知地变差，尤其是需要多步骤推理的任务&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这不是玄学，是可量化的性能退化。&lt;/p&gt;
&lt;p&gt;问题来了：&lt;strong&gt;Anthropic什么时候公告过这件事？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;没有。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;67意味着什么&#34;&gt;67%，意味着什么？
&lt;/h2&gt;&lt;p&gt;有人可能会问：thinking token少一点，有那么严重吗？&lt;/p&gt;
&lt;p&gt;严重。&lt;/p&gt;
&lt;p&gt;打个比方：你雇了一个工程师解决复杂bug，他原来会花3小时仔细分析代码路径，现在只花1小时草草看一遍就给你答案。答案可能看起来差不多，但在真正复杂的问题上，差距会暴露出来。&lt;/p&gt;
&lt;p&gt;Claude的Extended Thinking正是为了解决这类&amp;quot;需要深度推理&amp;quot;的任务而设计的：数学证明、代码架构、法律分析、战略规划。这些场景里，thinking token的削减直接等于推理质量的削减。&lt;/p&gt;
&lt;p&gt;更让用户不满的是：&lt;strong&gt;为这个功能付钱的，正是那些最需要深度推理的用户&lt;/strong&gt;。Claude Pro订阅每月 $20，Claude Max 高达每月 $100-$200，宣传卖点之一就是Opus模型的扩展思考能力。&lt;/p&gt;
&lt;p&gt;你买的是一辆V8发动机，发现它偷偷换成了V4，而销售手册还没更新。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/anthropic-opus46-reasoning-drop-hidden-2026/imgs/thinking-token-comparison.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/anthropic-opus46-reasoning-drop-hidden-2026/imgs/thinking-token-comparison_hu_ee9ad724e2bad21e.png 480w, https://blog.ccino.org/p/anthropic-opus46-reasoning-drop-hidden-2026/imgs/thinking-token-comparison_hu_e6c7029fce782786.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;thinking token对比：之前8000-12000，现在只剩2000-4000，骤降67%&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;anthropic的沉默&#34;&gt;Anthropic的沉默
&lt;/h2&gt;&lt;p&gt;在社区爆发之前，没有任何来自Anthropic官方的公告、changelog 或说明。&lt;/p&gt;
&lt;p&gt;这个模式其实已经有迹可循。2024年，OpenAI被用户发现悄悄削减了GPT-4 Turbo的上下文质量，也是社区先发现，官方后跟进。当时引发了一轮关于&amp;quot;AI公司是否有义务通知模型变更&amp;quot;的大讨论，最后不了了之。&lt;/p&gt;
&lt;p&gt;现在轮到Anthropic。&lt;/p&gt;
&lt;p&gt;在用户数据摆出来、帖子大规模传播之后，才有Anthropic的工作人员在评论区现身回应，表示&amp;quot;正在调查&amp;quot;，或者给出含糊的技术解释。&lt;/p&gt;
&lt;p&gt;这种&amp;quot;等用户发现再回应&amp;quot;的模式，本质上是一种&lt;strong&gt;信息不对称的默认选项&lt;/strong&gt;——如果没有足够多有技术能力的用户去检测、测量和发声，普通用户永远不会知道他们使用的模型被降级了。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;这不是孤例ai厂商的静默降级历史&#34;&gt;这不是孤例：AI厂商的&amp;quot;静默降级&amp;quot;历史
&lt;/h2&gt;&lt;p&gt;AI行业有一个不成文的惯例：&lt;strong&gt;模型可以随时更新，不需要通知用户&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这在技术上是合理的——模型需要持续优化，版本迭代是常态。但问题在于，&amp;ldquo;优化&amp;quot;和&amp;quot;降级&amp;quot;之间的界限从来没有被清晰定义过，而厂商显然不会主动区分。&lt;/p&gt;
&lt;p&gt;几个有记录的案例：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;OpenAI GPT-4（2023-2024年）&lt;/strong&gt;：多位研究者发表论文，证明GPT-4在数学、代码和推理任务上的性能随时间系统性下降。OpenAI最初否认，后来承认进行了&amp;quot;效率优化&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;GPT-4o的视觉能力（2024年）&lt;/strong&gt;：用户发现GPT-4o在图像理解任务上的质量大幅下降，事后发现是Anthropic调整了模型的视觉权重以降低计算成本。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Claude 2 到 Claude 2.1&lt;/strong&gt;：Anthropic在版本更新时削减了部分推理能力，这次有官方changelog，但描述极为模糊。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Opus 4.6 thinking depth（2026年）&lt;/strong&gt;：本次事件。&lt;/p&gt;
&lt;p&gt;规律很清晰：当优化带来成本节省时，厂商倾向于悄悄执行。当用户发现时，先沉默，再给出技术性解释（&amp;ldquo;这是权衡&amp;rdquo;、&amp;ldquo;整体体验更好了&amp;rdquo;），然后继续。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;为什么厂商会这样做&#34;&gt;为什么厂商会这样做？
&lt;/h2&gt;&lt;p&gt;理解这个问题，需要站在商业逻辑的角度。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Thinking token极其昂贵。&lt;/strong&gt; 每一个thinking token都要消耗真实算力，在模型规模越来越大、用户量越来越多的情况下，thinking深度是最容易也最值得压缩的成本项。用户感知不明显，但财报感知非常明显。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;没有法律约束。&lt;/strong&gt; 目前没有任何规定要求AI公司在模型性能变化时通知用户。服务条款通常写明&amp;quot;功能可能随时变更&amp;quot;，一句话就覆盖了所有情况。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;用户验证成本高。&lt;/strong&gt; 大多数用户没有能力系统性测试模型性能变化，即使感觉&amp;quot;最近Claude变笨了&amp;quot;，也很难量化。这种模糊性保护了厂商。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;竞争压力。&lt;/strong&gt; 承认自家模型降级，相当于给竞争对手递刀子，没有厂商愿意主动做这件事。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;你能做什么&#34;&gt;你能做什么？
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;1. 建立自己的基准测试集&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;选取10-15个你真实工作中常用的、需要深度推理的任务，定期用同样的prompt测试当前模型。这是发现性能变化最直接的方法。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. 关注 thinking token 数量&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果你使用Claude的Extended Thinking，可以在API层面观察每次调用的thinking token消耗。如果某段时间内这个数字系统性下降，就值得警惕。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 用API记录thinking usage的简单方法&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;messages&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;create&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;claude-opus-4-6&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;max_tokens&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;16000&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;thinking&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;enabled&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;budget_tokens&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;10000&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;messages&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[{&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;role&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;user&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;content&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;your_prompt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 检查实际使用的thinking tokens&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;block&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;block&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;type&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;thinking&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Thinking tokens used: &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;block&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;thinking&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;split&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;())&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;3. 参与社区监督&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;r/ClaudeAI 这次的事件表明，用户集体的观察和数据整理是唯一有效的外部监督机制。当你注意到性能异常时，发帖、分享数据，比沉默更有价值。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. 考虑保留历史基准&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果你依赖Claude完成关键业务，定期保存一批&amp;quot;金标准&amp;quot;问答对，用于纵向对比，建立自己的模型性能追踪体系。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;最后说一句&#34;&gt;最后说一句
&lt;/h2&gt;&lt;p&gt;Anthropic的品牌形象一直建立在&amp;quot;负责任的AI&amp;quot;上——这是他们的核心叙事，也是他们区别于OpenAI的最大卖点。&lt;/p&gt;
&lt;p&gt;但&amp;quot;负责任&amp;quot;如果只体现在安全政策上，而不体现在对付费用户的基本透明度上，那这个品牌承诺就是残缺的。&lt;/p&gt;
&lt;p&gt;用户有权知道，他们付钱使用的模型，昨天和今天是否还是同一个模型。&lt;/p&gt;
&lt;p&gt;这不是过分的要求。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;参考来源&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://reddit.com/r/ClaudeAI/comments/1sfw9b5/something_happened_to_opus_46s_reasoning_effort/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Something happened to Opus 4.6&amp;rsquo;s reasoning effort — r/ClaudeAI&lt;/a&gt;（⬆️2917 💬427）&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://reddit.com/r/ClaudeAI/comments/1ses1qm/anthropic_stayed_quiet_until_someone_showed/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic stayed quiet until someone showed Claude&amp;rsquo;s thinking depth dropped 67% — r/ClaudeAI&lt;/a&gt;（⬆️1669 💬242）&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Anthropic 封杀 OpenClaw 订阅：AI 平台的「围墙花园」战争正式打响</title>
        <link>https://blog.ccino.org/p/anthropic-blocks-openclaw-platform-war-2026/</link>
        <pubDate>Mon, 06 Apr 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/anthropic-blocks-openclaw-platform-war-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/anthropic-blocks-openclaw-platform-war-2026/imgs/cover.png" alt="Featured image of post Anthropic 封杀 OpenClaw 订阅：AI 平台的「围墙花园」战争正式打响" /&gt;
    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;我们的订阅模式，不是为这类第三方工具的使用模式设计的。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;—— Boris Cherny，Claude Code 负责人，2026年4月4日&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;01-正午十二点一条公告炸了社区&#34;&gt;01 正午十二点，一条公告炸了社区
&lt;/h2&gt;&lt;p&gt;2026年4月4日，太平洋时间正午十二点整。&lt;/p&gt;
&lt;p&gt;Anthropic 发出通知：&lt;strong&gt;从即刻起，Claude Pro 和 Max 订阅额度不再覆盖 OpenClaw 及其他第三方工具的调用。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Reddit 的 r/ClaudeAI 在接下来的24小时里经历了它今年流量最高的一天。&lt;/p&gt;
&lt;p&gt;「Anthropic just gave us 1 month worth of subscription value as usage」——这条帖子的标题听起来像好消息，但 1320 个赞和 341 条评论里，大多数人的情绪是困惑和愤怒。「就是说，补偿是有的，但我们以后要额外付钱。」一位用户写道。&lt;/p&gt;
&lt;p&gt;另一条帖子的标题更直接：「Claude is killing Openclaw oauth use starting tomorrow」——403 赞，233 条评论，前五条热评全是「WTF」。&lt;/p&gt;
&lt;p&gt;这场骚动的本质是什么？一个订阅了 Claude Max（$100/月）、把 OpenClaw 作为日常工作流核心的开发者，现在面临的不是选择，而是一道算术题。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;02-到底发生了什么一条时间线&#34;&gt;02 到底发生了什么：一条时间线
&lt;/h2&gt;&lt;p&gt;要搞清楚这件事，先梳理几个关键时间节点。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2026年1月&lt;/strong&gt;：OpenClaw GitHub stars 突破 10 万，社区将其誉为「AI Agent 界的 Homebrew」。创始人 Peter Steinberger 宣布将加入 OpenAI，但 OpenClaw 作为开源项目继续维护。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2026年Q1&lt;/strong&gt;：OpenClaw GitHub stars 从 10 万增至 25 万，增幅 136%；支持技能从 2857 个增至 13729 个，增幅 380%；全球活跃自托管实例超过 42000 个。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2026年4月4日正午（PT）&lt;/strong&gt;：Anthropic 宣布政策变更——&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude Pro/Max 订阅额度&lt;strong&gt;不再&lt;/strong&gt;可用于 OpenClaw 及任何第三方工具框架的调用&lt;/li&gt;
&lt;li&gt;政策立即生效，覆盖所有现有订阅用户&lt;/li&gt;
&lt;li&gt;政策将在近期扩展至所有类似第三方工具，不只是 OpenClaw&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;补偿方案&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一次性发放等额一个月订阅费的额度（有效期至4月17日）&lt;/li&gt;
&lt;li&gt;最高 30% 的预购额度包折扣&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;继续使用 OpenClaw + Claude 的两条路&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;购买独立的 pay-as-you-go 使用包，与订阅费分开计费&lt;/li&gt;
&lt;li&gt;在 OpenClaw 中自带独立 API Key，绕过订阅限制，按 API 费率计费&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&#34;03-成本测算影响到底有多大&#34;&gt;03 成本测算：影响到底有多大？
&lt;/h2&gt;&lt;p&gt;这是很多用户最关心的问题。我们来算一笔账。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;场景一：轻度用户&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;每天用 OpenClaw 处理 20-30 条任务，以 Claude Sonnet 4.6 为主模型，每月约消耗 200 万 input tokens + 100 万 output tokens。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;方案&lt;/th&gt;
          &lt;th&gt;月费用&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;之前（订阅覆盖）&lt;/td&gt;
          &lt;td&gt;$20（Pro）或 $100（Max）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;现在（自带 API Key）&lt;/td&gt;
          &lt;td&gt;订阅费 + $6（input）+ $15（output）= +$21/月&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;结论&lt;/strong&gt;：轻度用户新增约 $21/月，总成本翻倍。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;场景二：重度用户&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;将 OpenClaw 作为主力工作工具，每天跑多条自动化流程、处理邮件、整理文件、调用代码工具，每月约消耗 1000 万 input tokens + 500 万 output tokens（混合 Sonnet + Opus）。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;方案&lt;/th&gt;
          &lt;th&gt;月费用&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;之前（订阅覆盖）&lt;/td&gt;
          &lt;td&gt;$100（Max）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;现在（自带 API Key）&lt;/td&gt;
          &lt;td&gt;$100 + $30~$150（视模型比例）= +$30~$150/月&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;结论&lt;/strong&gt;：重度用户新增成本 $30-$150，相当于再交一份订阅费甚至更多。&lt;/p&gt;
&lt;p&gt;特别值得注意的是：如果你用的是 Claude Opus 4.6（Anthropic 目前最强模型），API 费率是 input $15/百万 token、output $75/百万 token——是 Sonnet 的整整 5 倍。重度使用 Opus 的用户，成本冲击最大。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;04-两种声音理性与愤怒并存&#34;&gt;04 两种声音：理性与愤怒并存
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Anthropic 的官方立场&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Claude Code 负责人 Boris Cherny 在 X 上发了一条长文，解释这次政策变更背后的逻辑：&lt;/p&gt;
&lt;p&gt;订阅产品的定价，是基于「典型订阅用户」的使用模式设计的。而第三方工具框架（如 OpenClaw）的用户，调用量往往是普通订阅用户的数倍乃至数十倍——他们在跑持续的自动化任务，而不是偶尔和 Claude 对话。&lt;/p&gt;
&lt;p&gt;「我们的订阅是为人和 Claude 的对话场景设计的，不是为了让自动化工具无限制调用的。」&lt;/p&gt;
&lt;p&gt;听起来合理。一个 $100/月的订阅，如果你用来跑 24/7 的 AI Agent，确实不是这个价格能支撑的商业逻辑。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;OpenClaw 社区的反应&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;理解归理解，但愤怒同样真实。社区的核心抱怨是：&lt;strong&gt;提前通知不够，过渡期太短。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;「我花了三个月把公司的工作流全迁到 OpenClaw + Claude，现在给我两天时间决定要不要接受新成本？」一位用户在 Reddit 写道。&lt;/p&gt;
&lt;p&gt;还有一种更结构性的不满：&lt;strong&gt;这体现了 Anthropic 对第三方生态的态度&lt;/strong&gt;。今天是 OpenClaw，明天是 n8n，后天是其他任何把 Claude 作为后端的工具。这条政策一旦确立，意味着所有基于 Claude 构建的第三方自动化工具，最终都要面临同样的处境。&lt;/p&gt;
&lt;p&gt;有意思的是，OpenClaw 的创始人 Peter Steinberger 在事件发酵后专门发推感谢 Boris Cherny，称他「在整个过程中一直非常坦诚」——这让外界猜测：两家之间的沟通比我们看到的要早得多，而这次「封杀」或许并非毫无预兆。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;05-深层逻辑anthropic-为什么这么做&#34;&gt;05 深层逻辑：Anthropic 为什么这么做？
&lt;/h2&gt;&lt;p&gt;从商业角度，这个决定的逻辑其实相当清晰。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;模型成本压力是真实的。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;训练 Claude Opus 4.6 的成本，没有人公开说过具体数字，但行业普遍估计顶级大模型单次训练成本在数亿美元量级。推理成本同样昂贵——每一个 token 的输出，都在消耗真实的算力和电力。当成千上万个 OpenClaw 实例 7×24 小时不间断调用时，这个成本压力是真实的、指数级的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;订阅模式的边界在哪里？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;一个 $100/月的 Netflix 订阅，可以有5个人共用，每天看8小时，但没有人会要求 Netflix 给你无限带宽下载所有电影用于离线存储。AI 订阅的「合理使用」边界，在过去两年一直是模糊的。这次，Anthropic 用行动划了一条线。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;更深的战略意图：谁来控制 AI Agent 层？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这是真正值得关注的问题。&lt;/p&gt;
&lt;p&gt;OpenClaw 目前是全球最流行的 AI Agent 框架之一，Q1 2026 stars 增长 136%，支持 22 个 LLM 模型，拥有 13000+ 个社区技能。它本质上是一个&lt;strong&gt;模型无关&lt;/strong&gt;的中间层——用户安装 OpenClaw，然后决定背后用 Claude、Gemini 还是本地模型。&lt;/p&gt;
&lt;p&gt;从 Anthropic 的角度看，这意味着：OpenClaw 帮助用户建立了工作流，但用户对 Claude 的粘性是弱的——随时可以换成其他模型，切换成本极低。&lt;/p&gt;
&lt;p&gt;而 Anthropic 自己的 Claude Code，是&lt;strong&gt;深度绑定 Claude&lt;/strong&gt; 的工具。用 Claude Code，你的工作流就是 Claude 的工作流。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;这次政策变更，实质上是 Anthropic 在 AI Agent 层面的一次「选边站」：支持自家生态，收紧第三方接入。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这不是 Anthropic 独有的剧本。iOS vs. 侧载，微信小程序 vs. H5，App Store vs. PWA——每一个平台巨头，在做大之后都走过类似的路。AI 平台时代，同样的故事正在重演。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;06-应对方案现在怎么办&#34;&gt;06 应对方案：现在怎么办？
&lt;/h2&gt;&lt;p&gt;如果你正在用 OpenClaw + Claude，以下是三条可行路径：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;方案一：自带 API Key（最直接）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在 OpenClaw 设置中填入独立的 Anthropic API Key，继续使用 Claude 模型，按 API 费率计费。&lt;/p&gt;
&lt;p&gt;适合：重度用户，有清晰的使用量和预算控制；接受 token 计费，不想频繁换模型。&lt;/p&gt;
&lt;p&gt;注意：API 费率显著高于订阅成本，建议先用一周记录实际用量，再决定是否值得。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;方案二：迁移到 Gemini 或其他免费模型&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;OpenClaw 支持 22 个 LLM 模型。Google Gemini 1.5 Pro 每月有 50 万 token 免费额度，Gemini 2.5 Pro 的能力已接近 Claude Sonnet 水平。&lt;/p&gt;
&lt;p&gt;适合：日常任务不依赖 Claude 特有能力（如 Claude 的长上下文理解、代码能力）；追求零成本。&lt;/p&gt;
&lt;p&gt;注意：模型切换后需要重新调试提示词，部分复杂任务效果可能有所下降。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;方案三：混合策略&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;日常轻量任务（文件整理、简单总结）走本地模型（如 Ollama + Llama 4 Scout），需要高质量输出时才调用 Claude API。&lt;/p&gt;
&lt;p&gt;适合：有一定技术背景，愿意维护本地模型环境；希望在成本和质量间取得平衡。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;07-更大的图景欢迎来到-ai-平台战争&#34;&gt;07 更大的图景：欢迎来到 AI 平台战争
&lt;/h2&gt;&lt;p&gt;退一步看，这件事的意义远不止于「OpenClaw 用户要多花钱」。&lt;/p&gt;
&lt;p&gt;我们正在进入 AI 应用层的「平台化」时代。就像移动互联网的前十年，巨头们争的是操作系统和应用商店，AI 的下一个五年，争的是&lt;strong&gt;谁来控制 Agent 层&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;从这个角度，Anthropic 的行动是有迹可循的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude Code 的持续迭代，背后是构建开发者的直接依赖&lt;/li&gt;
&lt;li&gt;限制第三方工具的订阅覆盖，是在收紧「模型无关」生态的扩张&lt;/li&gt;
&lt;li&gt;将来，「Anthropic 认证工具」和「不认证工具」之间的差距，可能会越来越大&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OpenClaw 的应对策略也值得关注。作为开源项目，它正在快速扩展对多模型的支持——这次 Anthropic 的限制，反而可能加速 OpenClaw 与 Gemini、Llama、Mistral 的深度整合，最终成为一个真正&lt;strong&gt;不依赖任何单一厂商&lt;/strong&gt;的 Agent 框架。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;对普通开发者而言，这件事传递的信号是：在 AI 工具链上，永远不要只押一个平台。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;花了三个月把工作流深度绑定在某一个模型+工具组合上，最终会面临今天这些 OpenClaw 用户的处境——补偿是有的，但迁移的隐性成本，没有任何公告能够覆盖。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;2026年4月，AI 平台的围墙花园战争正式打响。第一个受害者是 OpenClaw 用户，但不会是最后一个。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://techcrunch.com/2026/04/04/anthropic-says-claude-code-subscribers-will-need-to-pay-extra-for-openclaw-support/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;TechCrunch: Anthropic says Claude Code subscribers will need to pay extra for OpenClaw usage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://thenextweb.com/news/anthropic-openclaw-claude-subscription-ban-cost&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;TNW: Anthropic blocks OpenClaw from Claude subscriptions in cost crackdown&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.pymnts.com/artificial-intelligence-2/2026/anthropic-says-claude-code-users-will-need-to-pay-more-for-openclaw/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PYMNTS: Anthropic Says Claude Code Users Will Need to Pay More for OpenClaw&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.indexbox.io/blog/anthropic-changes-claude-code-subscription-for-third-party-tools-in-2026/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;IndexBox: Anthropic Adjusts Claude Code Policy for External Tools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/ClaudeAI/comments/1sbshwj/anthropic_just_gave_us_1_month_worth_of/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reddit r/ClaudeAI: Anthropic just gave us 1 month worth of subscription value&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/ClaudeAI/comments/1sbsfst/claude_is_killing_openclaw_oauth_use_starting/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reddit r/ClaudeAI: Claude is killing Openclaw oauth use starting tomorrow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://linux.do/t/topic/1896469&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Linux.do: Claude 负责人正式宣布4月4日起 Claude 订阅额度不包含 OpenClaw&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://help.apiyi.com/en/anthropic-claude-subscription-third-party-tools-openclaw-policy-en.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Apiyi.com: Interpreting Anthropic&amp;rsquo;s Third-Party Tool Ban&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Google 开源了一个怪物：Gemma 4 的 26B 版本跑起来只有 4B 的算力开销</title>
        <link>https://blog.ccino.org/p/gemma4-open-source-revolution-2026/</link>
        <pubDate>Mon, 06 Apr 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/gemma4-open-source-revolution-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/gemma4-open-source-revolution-2026/imgs/cover.png" alt="Featured image of post Google 开源了一个怪物：Gemma 4 的 26B 版本跑起来只有 4B 的算力开销" /&gt;
    &lt;blockquote&gt;
        &lt;p&gt;在本地 AI 排行榜上，Gemma 4 把几乎所有对手都打下去了——只有 Claude Opus 4.6 和 GPT-5.2 还站着。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;2026 年 4 月 2 日，Google DeepMind 发布了 Gemma 4。&lt;/p&gt;
&lt;p&gt;这次不是悄悄发布，而是一出手就拿出了四款模型，从手机能跑的 E2B 到服务器级别的 31B Dense，全系 Apache 2.0 开源，商用无限制。&lt;/p&gt;
&lt;p&gt;结果在 Reddit LocalLLaMA 社区，一个帖子获得了 821 个赞：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;ldquo;Gemma 4 just casually destroyed every model on our leaderboard except Opus 4.6 and GPT-5.2.&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;随手就把排行榜上的模型全干掉了&amp;rdquo;——这句话在社区里传了好几天。&lt;/p&gt;
&lt;p&gt;发生了什么？&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;一gemma-4-到底有多强&#34;&gt;一、Gemma 4 到底有多强
&lt;/h2&gt;&lt;p&gt;先看数字。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Benchmark&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;Gemma 4 &lt;strong&gt;31B&lt;/strong&gt;&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;Gemma 4 &lt;strong&gt;26B MoE&lt;/strong&gt;&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;Gemma 4 E4B&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;Gemma 3 27B（上代）&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;MMLU Pro&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;85.2%&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;82.6%&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;69.4%&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;67.6%&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AIME 2026（数学竞赛）&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;89.2%&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;88.3%&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;42.5%&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;20.8%&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GPQA Diamond（博士级科学）&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;84.3%&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;82.3%&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;58.6%&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;42.4%&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Codeforces ELO（编程竞赛）&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;2150&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;1718&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;940&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;110&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;几个对比让这个数据更有感觉：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;上代 Gemma 3 27B 的 AIME 分数是 20.8%，这代 31B 是 89.2%&lt;/strong&gt;。同量级参数，数学能力直接翻了 4 倍多。&lt;/li&gt;
&lt;li&gt;Codeforces ELO 2150 意味着什么？人类竞赛程序员里，这个分数大约对应前 0.3%。&lt;/li&gt;
&lt;li&gt;在全球开源模型排行榜（Arena AI）上，&lt;strong&gt;31B 版本排名第 3，26B MoE 版本排名第 6&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;和 Qwen 3.5 比：Gemma 4 31B 在 MMLU Pro 上（85.2% vs ~82%）略有优势，但两者都处于同一档位——&lt;strong&gt;这是真正的顶级开源模型之争&lt;/strong&gt;，不再是&amp;quot;比闭源差一截的替代品&amp;quot;。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;二26b-跑起来只用-4b-的算力这是怎么回事&#34;&gt;二、26B 跑起来只用 4B 的算力——这是怎么回事
&lt;/h2&gt;&lt;p&gt;这是 Gemma 4 最有意思的地方，也是为什么叫&amp;quot;怪物&amp;quot;。&lt;/p&gt;
&lt;p&gt;Gemma 4 26B 的全称是 &lt;strong&gt;Gemma 4 26B A4B&lt;/strong&gt;——A4B 代表 &amp;ldquo;Active 4B&amp;rdquo;，意思是&lt;strong&gt;推理时只激活 3.8B 参数&lt;/strong&gt;，但整体参数量是 26B。&lt;/p&gt;
&lt;p&gt;这用的是 &lt;strong&gt;MoE（Mixture of Experts，混合专家）架构&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;模型内部有很多&amp;quot;专家网络&amp;quot;，每次推理时，一个路由机制决定激活哪些专家来处理当前的 token。大多数参数大部分时间都是闲置的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;实际效果&lt;/strong&gt;：26B MoE 的推理速度和 4B 模型相当，但性能接近 26B 模型。&lt;/p&gt;
&lt;p&gt;换个说法：你用 4B 模型的算力和速度，跑出了 26B 的效果。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;对比维度&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;26B MoE (A4B)&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;标准 26B Dense&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;总参数量&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;26B&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;26B&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;推理激活参数&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;3.8B&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;26B&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;推理速度&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;≈ 4B 模型&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;慢 6-7 倍&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;性能&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;接近 26B Dense&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;26B Dense&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;VRAM 占用&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;更低&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;更高&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/gemma4-open-source-revolution-2026/imgs/moe-architecture.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/gemma4-open-source-revolution-2026/imgs/moe-architecture_hu_4216d0743364de9a.png 480w, https://blog.ccino.org/p/gemma4-open-source-revolution-2026/imgs/moe-architecture_hu_52176c1470f03944.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;MoE架构对比：Standard Dense 26B 全节点激活 vs MoE 26B 只激活 3.8B，速度差异一目了然&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;这也解释了为什么 26B MoE 在排行榜上是第 6，而不是像直觉预期的那样输给 31B Dense 很多——&lt;strong&gt;它在效率上弥补了一部分性能差距&lt;/strong&gt;。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;三per-layer-embeddings小模型变强的真正秘密&#34;&gt;三、Per-Layer Embeddings：小模型变强的真正秘密
&lt;/h2&gt;&lt;p&gt;MoE 解释了 26B 的效率问题，但 Gemma 4 的 E2B 和 E4B 这两个小模型也明显强过上代，靠的是另一个技术：&lt;strong&gt;Per-Layer Embeddings（PLE，逐层嵌入）&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;理解这个之前，先理解传统方法的问题。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;传统 Transformer 的做法&lt;/strong&gt;：每个 token 进入模型时，做一次 embedding 查找，得到一个向量，然后这个向量流过所有的层，逐层累积上下文信息。问题是：&lt;strong&gt;这个初始向量需要&amp;quot;预装&amp;quot;所有层可能用到的信息&lt;/strong&gt;——负担很重，而且很多信息在特定层其实用不上。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PLE 的做法&lt;/strong&gt;：加一个额外的嵌入表，为每个 token 在&lt;strong&gt;每一层&lt;/strong&gt;单独提供一个小向量（256 维，而不是主嵌入的 1536 维）。这些向量存在闪存里，推理开始时一次性加载。&lt;/p&gt;
&lt;p&gt;效果是什么？&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;token &amp;ldquo;cat&amp;rdquo; 在第 2 层的含义可以是&amp;quot;我是一个名词&amp;quot;，在第 18 层的含义可以是&amp;quot;我是一种小动物&amp;quot;。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;每一层都能接收&amp;quot;当前这个 token 现在对我意味着什么&amp;quot;的专属信号，而不是只靠第一层的静态向量撑到最后。&lt;/p&gt;
&lt;p&gt;这让小模型能更充分地利用有限参数——&lt;strong&gt;不是堆参数，而是让每个参数都更精准地工作&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/gemma4-open-source-revolution-2026/imgs/per-layer-embeddings.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/gemma4-open-source-revolution-2026/imgs/per-layer-embeddings_hu_7b912c559ccc9aeb.png 480w, https://blog.ccino.org/p/gemma4-open-source-revolution-2026/imgs/per-layer-embeddings_hu_caea593e43b41ba3.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Per-Layer Embeddings对比：传统方式只有一个入口嵌入，PLE 为每一层单独提供信号，token 在不同层的&amp;#34;意义&amp;#34;各不相同&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;这也是为什么 E4B（4B 参数）在 AIME 2026 上能拿到 42.5%，而上代 27B（参数量是它的 7 倍）只有 20.8%。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;四gemma-4-的四个版本该选哪个&#34;&gt;四、Gemma 4 的四个版本：该选哪个
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;版本&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;实际参数&lt;/th&gt;
          &lt;th&gt;主要特性&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;最低硬件&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;推荐硬件&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;E2B&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;~2B 激活&lt;/td&gt;
          &lt;td&gt;手机/嵌入式，支持视频+音频&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;4GB RAM&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;手机/树莓派&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;E4B&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;~4B 激活&lt;/td&gt;
          &lt;td&gt;轻量多模态 Agent，支持音频&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;8GB RAM&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;M 系列 MacBook&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;26B MoE (A4B)&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;3.8B 激活&lt;/td&gt;
          &lt;td&gt;最佳性价比，速度≈4B&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;16GB VRAM&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;RTX 4090 / 4080&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;31B Dense&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;31B&lt;/td&gt;
          &lt;td&gt;最高性能，适合微调&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;24GB VRAM&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;H100 / A100&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;大多数开发者的选择&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;笔记本 / M 系列 Mac → &lt;strong&gt;E4B&lt;/strong&gt;：够用，速度快，支持多模态&lt;/li&gt;
&lt;li&gt;有 16-24GB VRAM 的台式机 → &lt;strong&gt;26B MoE&lt;/strong&gt;：性能最强，速度还快&lt;/li&gt;
&lt;li&gt;需要微调的研究场景 → &lt;strong&gt;31B Dense&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;五本地跑起来三分钟上手&#34;&gt;五、本地跑起来：三分钟上手
&lt;/h2&gt;&lt;h3 id=&#34;方式一ollama推荐&#34;&gt;方式一：Ollama（推荐）
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 运行 Gemma 4 E4B（轻量版，大多数人的起点）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama run gemma4:4b
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 运行 26B MoE（需要 16GB+ VRAM）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama run gemma4:27b
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Ollama 自动处理量化和下载，运行后本地起 OpenAI 兼容 API，可以直接接 Cursor、Open-WebUI、任何支持 OpenAI 格式的工具。&lt;/p&gt;
&lt;h3 id=&#34;方式二llamacpp更高性能&#34;&gt;方式二：llama.cpp（更高性能）
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 直接用 Hugging Face GGUF 格式&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-server -hf ggml-org/gemma-4-26b-a4b-it-GGUF:Q4_K_M
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;Q4_K_M&lt;/code&gt; 是 4bit 量化版本，26B MoE 在 Q4 下约需 &lt;strong&gt;10-12GB VRAM&lt;/strong&gt;，一块 RTX 4080 可以流畅运行。&lt;/p&gt;
&lt;h3 id=&#34;方式三lm-studio图形界面&#34;&gt;方式三：LM Studio（图形界面）
&lt;/h3&gt;&lt;p&gt;打开 LM Studio，搜索 &lt;code&gt;gemma-4&lt;/code&gt;，点击下载。模型加载后自动提供本地 API 服务。适合不想碰命令行的用户。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;六和其他模型对比该用-gemma-4-替代什么&#34;&gt;六、和其他模型对比：该用 Gemma 4 替代什么
&lt;/h2&gt;&lt;p&gt;坦诚说明差距：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;维度&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;Gemma 4 26B（本地）&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;Claude Sonnet 4.6（云端）&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;代码生成（复杂项目）&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;★★★★☆&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;★★★★★&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;数学推理&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;★★★★★&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;★★★★★&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;指令遵循&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;★★★★☆&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;★★★★★&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;长上下文&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;256K ✅&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;200K ✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;多模态（图片/视频）&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;✅ 原生支持&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;数据隐私&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;✅ 完全本地&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;❌ 上传云端&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;延迟&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;无网络延迟&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;取决于网络&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;成本&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;电费（趋近于零）&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;按 token 计费&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;真正适合替代 Claude/GPT 的场景&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;本地代码审查&lt;/strong&gt;：速度快、不上传代码、够用&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数学和逻辑推理&lt;/strong&gt;：Gemma 4 的强项，接近顶级闭源模型&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多模态本地应用&lt;/strong&gt;：截图分析、文档理解，数据不出本机&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;高吞吐批量处理&lt;/strong&gt;：不需要实时响应的任务，本地成本为零&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;仍然建议用 Claude 的场景&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;复杂多步骤工程任务（Claude Code 的 Agent 能力目前仍领先）&lt;/li&gt;
&lt;li&gt;需要工具调用和实时信息的场景&lt;/li&gt;
&lt;li&gt;写作质量要求很高的内容创作&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;这件事的意义&#34;&gt;这件事的意义
&lt;/h2&gt;&lt;p&gt;Gemma 4 之所以在社区里引发轰动，不只是因为它跑分高。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;更重要的信号是：开源模型与顶级闭源模型之间的差距，正在以比预期快得多的速度收窄。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;半年前，本地模型还处于&amp;quot;能用但将就&amp;quot;的阶段。现在，Gemma 4 31B 在数学竞赛题上的成绩（AIME 89.2%）已经超过了绝大多数闭源商业模型的公开数据。&lt;/p&gt;
&lt;p&gt;这条线在继续移动。&lt;/p&gt;
&lt;p&gt;对开发者的实际意义：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;本地 AI 工作流&lt;/strong&gt;正在变得可行——不只是代码补全，而是真正的任务自动化&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据隐私敏感场景&lt;/strong&gt;（医疗、法律、企业内部数据）有了更可信赖的本地选项&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;运行成本&lt;/strong&gt;正在接近于零——对高吞吐场景来说，这是量变引发质变&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Gemma 4 只是一个节点。它证明了 Google 在开源模型上认真了——Apache 2.0 授权、商用无限制，这是一个明确的市场信号。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;快速上手清单&#34;&gt;快速上手清单
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 确认显卡 VRAM：16GB 以上跑 26B MoE，8GB 以上跑 E4B&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 安装 Ollama：&lt;code&gt;ollama run gemma4:4b&lt;/code&gt; 先试跑&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 或下载 LM Studio，搜索 gemma-4，一键启动&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 把 Open-WebUI 的模型切换到本地 Gemma 4&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 测试你最常用的代码/推理任务，感受实际效果&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;参考资料&#34;&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.google/innovation-and-ai/technology/developers-tools/gemma-4/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Gemma 4: Byte for byte, the most capable open models - Google Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/blog/gemma4&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Welcome Gemma 4: Frontier multimodal intelligence on device - HuggingFace&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://newsletter.maartengrootendorst.com/p/a-visual-guide-to-gemma-4&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;A Visual Guide to Gemma 4 - Maarten Grootendorst&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.lushbinary.com/blog/gemma-4-developer-guide-benchmarks-architecture-local-deployment-2026/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Gemma 4 Developer Guide: Benchmarks &amp;amp; Local Deployment - Lushbinary&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://qubrid.com/blog/google-gemma-4-technical-deep-dive-architecture-moe-benchmarks-production-guide&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google Gemma 4 Deep Dive: Architecture, MoE &amp;amp; Benchmarks - Qubrid AI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://reddit.com/r/LocalLLaMA/comments/1sdcotc&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reddit: Gemma 4 just casually destroyed every model on our leaderboard - r/LocalLLaMA&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://reddit.com/r/LocalLLaMA/comments/1sd5utm&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reddit: Per-Layer Embeddings - A simple explanation - r/LocalLLaMA&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://reddit.com/r/LocalLLaMA/comments/1scucfg&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reddit: Gemma 4 26b is the perfect all around local model - r/LocalLLaMA&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>教 Claude 说「洞穴人语言」，Token 消耗直降 75%</title>
        <link>https://blog.ccino.org/p/claude-token-caveman-75-percent/</link>
        <pubDate>Sun, 05 Apr 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/claude-token-caveman-75-percent/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/claude-token-caveman-75-percent/imgs/cover.png" alt="Featured image of post 教 Claude 说「洞穴人语言」，Token 消耗直降 75%" /&gt;&lt;p&gt;4 月 3 日，Reddit r/ClaudeAI 上出现了一个很奇怪的帖子。&lt;/p&gt;
&lt;p&gt;帖子标题叫《Taught Claude to talk like a caveman to use 75% less tokens》——&amp;ldquo;我教会了 Claude 像穴居人一样说话，Token 消耗减少了 75%&amp;quot;。配图是一张对话截图：Claude 的回复不再是流畅的英文段落，而变成了这样：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;File broken. Need fix. Use class not function. Move logic here.&amp;rdquo;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;8900 赞，412 条评论。一天内登上 r/ClaudeAI 热帖第一。&lt;/p&gt;
&lt;p&gt;这不是一个玩笑。它触及了一个很多人忽视的问题：&lt;strong&gt;你真的需要 AI 说这么多话吗？&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;为什么-token-很重要&#34;&gt;为什么 Token 很重要
&lt;/h2&gt;&lt;p&gt;在聊实验本身之前，先说一件基本事实：&lt;strong&gt;Claude 的费用和速度，都跟 Token 直接挂钩。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;输出 Token 是双重成本来源：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;API 用户&lt;/strong&gt;：按 Token 计费，输出 Token 比输入贵 3-5 倍&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Claude Code 用户&lt;/strong&gt;：每个对话轮次的 Token 都在消耗订阅额度，越省越多轮&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;速度&lt;/strong&gt;：输出越少，响应越快，交互体验更流畅&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以 Claude Sonnet 为例，输出 Token 的价格约是输入的 5 倍。如果你在用 Claude Code 跑一个长任务，Claude 每次回复都在写大段解释——你其实在花钱买自己不需要的废话。&lt;/p&gt;
&lt;p&gt;更关键的是：&lt;strong&gt;Claude 的冗余输出远比你想象的多。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;当你问 Claude &amp;ldquo;这段代码有什么问题&amp;rdquo;，它会回答：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;I&amp;rsquo;d be happy to help you review this code! Looking at your implementation, I can see there are a few potential issues worth addressing. First, let me examine the overall structure&amp;hellip;&amp;rdquo;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;然后才是真正有用的内容。这段开场白占了多少 Token？大约 30-50 个。每次都这样，一天下来，是纯粹的 Token 浪费。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;穴居人语法实验&#34;&gt;穴居人语法实验
&lt;/h2&gt;&lt;p&gt;原帖作者 @ffatty 的思路很简单：&lt;strong&gt;既然 Claude 擅长遵守 System Prompt，就直接告诉它用最少的词说话。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;他使用的 System Prompt 是这样一类指令（原理类似）：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;You are a caveman. Speak only in short, essential words.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;No articles (a, an, the). No filler phrases.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;No greetings or apologies. Only facts. Only keywords.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Example: &amp;#34;Code broken. Use function. Fix line 42.&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;效果是：Claude 的输出从流畅的英文段落，变成了纯粹由关键词和动词构成的&amp;quot;电报语&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;对比示例：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-token-caveman-75-percent/imgs/illus-comparison.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-token-caveman-75-percent/imgs/illus-comparison_hu_b4119fb13c347a45.png 480w, https://blog.ccino.org/p/claude-token-caveman-75-percent/imgs/illus-comparison_hu_c0a4bfc82d702201.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;普通模式 vs 洞穴人模式 Token 对比&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;同样的问题——&amp;ldquo;这段 Python 函数有什么问题？&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;普通模式（~120 Token）&lt;/strong&gt;：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;Looking at your Python function, I can identify a few issues that might be causing problems. The main concern is that you&amp;rsquo;re modifying the list while iterating over it, which can lead to unexpected behavior. Additionally, the variable naming could be clearer, and you might want to add error handling for edge cases&amp;hellip;&amp;rdquo;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;穴居人模式（~30 Token）&lt;/strong&gt;：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;List modified during iteration. Bug. Use copy. Rename vars. Add try/except.&amp;rdquo;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;语义完全保留，Token 减少约 75%。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;system-prompt-模板可直接复制&#34;&gt;System Prompt 模板（可直接复制）
&lt;/h2&gt;&lt;p&gt;以下是三个可以直接用的 System Prompt 版本，适合不同场景：&lt;/p&gt;
&lt;h3 id=&#34;版本一极简穴居人模式省-token-最多&#34;&gt;版本一：极简穴居人模式（省 Token 最多）
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Respond like a caveman. Drop all articles, filler words, pleasantries.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Use only nouns, verbs, essential adjectives.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Max 2 sentences unless more is truly needed.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Format: &amp;#34;Topic. Action. Result.&amp;#34; Never start with &amp;#34;I&amp;#34; or &amp;#34;Sure&amp;#34;.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;适用&lt;/strong&gt;：Claude Code 任务、快速调试问答、不需要解释的简单指令&lt;/p&gt;
&lt;h3 id=&#34;版本二结构化简洁模式可读性更好&#34;&gt;版本二：结构化简洁模式（可读性更好）
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Be maximally concise. No greetings, no apologies, no filler.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Answer directly. If explaining, use bullet points only.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Skip context I already know. Start with the answer, not the reasoning.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Max response: 100 words unless I ask for more.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;适用&lt;/strong&gt;：代码审查、技术咨询、快速判断&lt;/p&gt;
&lt;h3 id=&#34;版本三claude-code-专用模式&#34;&gt;版本三：Claude Code 专用模式
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;You are a senior engineer. Be terse. No explanations unless asked.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;When fixing code: show only the changed lines + brief comment.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;When answering questions: one sentence if possible.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Never repeat my question back to me. Never say &amp;#34;Great question!&amp;#34;.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;适用&lt;/strong&gt;：Claude Code 长任务，减少每轮输出，让 Agent 循环更快&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;实测哪些场景省得最多&#34;&gt;实测：哪些场景省得最多
&lt;/h2&gt;&lt;p&gt;实验帖子下面的评论验证了更多场景，我整理了几个最有代表性的：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;场景&lt;/th&gt;
          &lt;th&gt;普通模式 Token&lt;/th&gt;
          &lt;th&gt;穴居人模式 Token&lt;/th&gt;
          &lt;th&gt;节省比例&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;代码 Bug 定位&lt;/td&gt;
          &lt;td&gt;~120&lt;/td&gt;
          &lt;td&gt;~28&lt;/td&gt;
          &lt;td&gt;77%&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;技术方案咨询&lt;/td&gt;
          &lt;td&gt;~200&lt;/td&gt;
          &lt;td&gt;~55&lt;/td&gt;
          &lt;td&gt;72%&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;错误信息解读&lt;/td&gt;
          &lt;td&gt;~90&lt;/td&gt;
          &lt;td&gt;~25&lt;/td&gt;
          &lt;td&gt;72%&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;文件结构建议&lt;/td&gt;
          &lt;td&gt;~150&lt;/td&gt;
          &lt;td&gt;~40&lt;/td&gt;
          &lt;td&gt;73%&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;概念解释（需要解释时）&lt;/td&gt;
          &lt;td&gt;~250&lt;/td&gt;
          &lt;td&gt;~180&lt;/td&gt;
          &lt;td&gt;28%&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-token-caveman-75-percent/imgs/illus-chart.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-token-caveman-75-percent/imgs/illus-chart_hu_5e1cd6a3902e9ed1.png 480w, https://blog.ccino.org/p/claude-token-caveman-75-percent/imgs/illus-chart_hu_63628a8e26fa9bce.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;各场景 Token 节省率&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;规律很明显&lt;/strong&gt;：越是&amp;quot;我只需要结论&amp;quot;的场景，省得越多。如果你真的需要 Claude 给你解释原理，压缩空间就会变小——这是合理的。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;延伸三招穴居人之外的-token-优化&#34;&gt;延伸三招：穴居人之外的 Token 优化
&lt;/h2&gt;&lt;p&gt;穴居人语法只是开始。Reddit 评论区里还有三个被高频点赞的延伸技巧：&lt;/p&gt;
&lt;h3 id=&#34;1-强制-json-输出&#34;&gt;1. 强制 JSON 输出
&lt;/h3&gt;&lt;p&gt;如果你需要的是结构化数据，直接要求 JSON。AI 不会在 JSON 里写废话：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Respond ONLY in JSON. No prose. No explanation.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Format: {&amp;#34;issue&amp;#34;: &amp;#34;...&amp;#34;, &amp;#34;fix&amp;#34;: &amp;#34;...&amp;#34;, &amp;#34;risk&amp;#34;: &amp;#34;low|medium|high&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;一个 JSON 对象比一段散文段落少 60-70% 的 Token，而且机器可以直接解析。&lt;/p&gt;
&lt;h3 id=&#34;2-上下文裁剪别把整个文件扔给-claude&#34;&gt;2. 上下文裁剪——别把整个文件扔给 Claude
&lt;/h3&gt;&lt;p&gt;这是 Claude Code 用户最常见的 Token 浪费：把 500 行的文件全部作为上下文，但实际上只有 30 行相关。&lt;/p&gt;
&lt;p&gt;更好的做法：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在 prompt 里只提供相关代码段，而不是整个文件&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;@&lt;/code&gt; 引用具体函数，而不是整个模块&lt;/li&gt;
&lt;li&gt;在长对话里，定期开新对话（Claude Code 的 &lt;code&gt;/clear&lt;/code&gt;）清除上下文&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;相关联系&lt;/strong&gt;：Claude Code 的 &lt;code&gt;/compact&lt;/code&gt; 命令会自动压缩对话历史，这也是官方版的&amp;quot;Token 裁剪&amp;quot;。&lt;/p&gt;
&lt;h3 id=&#34;3-预设格式消除协商成本&#34;&gt;3. 预设格式，消除协商成本
&lt;/h3&gt;&lt;p&gt;每次问 Claude &amp;ldquo;请帮我……&amp;quot;，Claude 需要先理解你的格式需求，有时还会先问你确认。这些来回本身就在消耗 Token。&lt;/p&gt;
&lt;p&gt;解决方案：在 System Prompt 里直接规定所有输出格式：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;When reviewing code: list issues as numbered bullets, no more than 5.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;When suggesting fixes: show only diff, not full file.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;When unsure: ask ONE clarifying question, not multiple.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Never ask &amp;#34;Would you like me to...?&amp;#34;—just do it.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;一次性规定好，后续每轮对话都省去格式协商的 Token 开销。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;什么时候不该用穴居人模式&#34;&gt;什么时候不该用穴居人模式
&lt;/h2&gt;&lt;p&gt;有几个场景不适合极简输出：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. 需要学习的时候&lt;/strong&gt;
如果你是在学新技术、理解概念，穴居人语法会让 Claude 省掉所有的类比、举例和铺垫——而这些往往是你需要的。这时候正常模式更好。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. 生成给人看的内容&lt;/strong&gt;
博客草稿、邮件、文档——这些最终给人读，当然需要完整的语言。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. 处理模糊需求&lt;/strong&gt;
如果你的需求本身没想清楚，需要和 Claude 来回探讨，压缩输出会让对话变得难以跟进。先把需求想清楚，再切换到高效模式。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;在-claude-code-里怎么用&#34;&gt;在 Claude Code 里怎么用
&lt;/h2&gt;&lt;p&gt;Claude Code 支持项目级别的 &lt;code&gt;CLAUDE.md&lt;/code&gt; 文件，你可以把穴居人模式写进去，让整个项目的所有 Claude 交互都默认简洁：&lt;/p&gt;
&lt;p&gt;在你的项目根目录创建 &lt;code&gt;CLAUDE.md&lt;/code&gt;，添加：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 响应风格
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 简洁为先：不需要解释的步骤直接执行
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 报告结果时只说&amp;#34;做了什么&amp;#34;，不说&amp;#34;为什么这样做&amp;#34;（除非被问）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 发现问题直接列出，不用前言铺垫
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 代码变更只显示改动的行，不重复整个文件
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这样不需要每次手动切换模式，全局生效。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;还差一步量化你自己的节省&#34;&gt;还差一步：量化你自己的节省
&lt;/h2&gt;&lt;p&gt;如果你用的是 Claude API，可以直接在 response 里看 &lt;code&gt;usage.output_tokens&lt;/code&gt;，前后对比很直观。&lt;/p&gt;
&lt;p&gt;如果用 Claude Pro/Max，目前没有直接的 Token 计数器，但可以用一个间接方法：观察&lt;strong&gt;每轮对话的响应速度&lt;/strong&gt;。同样的问题，穴居人模式的响应通常快 2-3 秒，这就是 Token 减少带来的速度差。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Reddit 那个帖子的评论区里有人说了一句话，我觉得说到点子上了：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;We&amp;rsquo;ve been training ourselves to expect AI to sound smart by talking a lot. But what we actually need is AI to think well and talk little.&amp;rdquo;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;我们习惯了用&amp;quot;说话多&amp;quot;来判断 AI 是否聪明。但真正有价值的，是把废话都省掉之后剩下的那部分。&lt;/p&gt;
&lt;p&gt;穴居人语法是个极端实验，但它证明了一件事：&lt;strong&gt;Claude 的智能不在于它说了多少，而在于它知道什么。&lt;/strong&gt; 你只需要告诉它，少说点就好。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;试一下&lt;/strong&gt;：把这段 System Prompt 复制到你下一次的 Claude 对话里：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Be maximally concise. No greetings, no filler, no apologies.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Answer directly. Bullets only for lists. Max 80 words unless asked for more.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然后问它一个你平时会问的技术问题。看看节省了多少废话——以及答案有没有变差。&lt;/p&gt;
&lt;p&gt;大概率没有。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/ClaudeAI/comments/1sble09/taught_claude_to_talk_like_a_caveman_to_use_75/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Taught Claude to talk like a caveman to use 75% less tokens — Reddit r/ClaudeAI&lt;/a&gt;（⬆️8927，原始实验帖）&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.anthropic.com/en/docs/claude-code/memory&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Code 官方文档：CLAUDE.md 配置&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.anthropic.com/pricing&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic API 定价页面&lt;/a&gt;（查看 Input/Output Token 价格差异）&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.anthropic.com/en/api/messages&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude API 使用量统计字段说明&lt;/a&gt;（&lt;code&gt;usage.output_tokens&lt;/code&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;扩展阅读&#34;&gt;扩展阅读
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://fortune.com/2026/04/02/in-the-age-of-vibe-coding-trust-is-the-real-bottleneck/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;In the age of vibe coding, trust is the real bottleneck — Fortune&lt;/a&gt;：AI 编程的信任危机，与 Token 效率问题一脉相承&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.builder.io/blog/claude-code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How I use Claude Code (+ my best tips) — Builder.io&lt;/a&gt;：Claude Code 实战工作流，含上下文管理技巧&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://dev.to/kr8thor/building-ai-agent-workflows-in-n8n-the-2026-complete-guide-494&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Building AI Agent Workflows in n8n: The 2026 Complete Guide — DEV Community&lt;/a&gt;：自动化场景下 Token 成本控制的实际案例&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.ccino.org/p/prompt-engineering-dead-context-engineering-future/&#34; &gt;Prompt Engineering Is Dead. Long Live Context Engineering — 本站往期文章&lt;/a&gt;：从提示词到上下文设计的演进，Token 效率的更深层视角&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Karpathy亲手埋葬Vibe Coding：Agentic Engineering接管2026</title>
        <link>https://blog.ccino.org/p/karpathy-agentic-engineering-2026/</link>
        <pubDate>Fri, 03 Apr 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/karpathy-agentic-engineering-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/karpathy-agentic-engineering-2026/imgs/cover.png" alt="Featured image of post Karpathy亲手埋葬Vibe Coding：Agentic Engineering接管2026" /&gt;&lt;p&gt;一个词，一年时间，彻底改变了软件开发的话语体系。&lt;/p&gt;
&lt;p&gt;2025年初，Andrej Karpathy发了条推文，发明了&amp;quot;Vibe Coding&amp;quot;这个词：完全沉浸在感觉里，忘掉代码的存在，只告诉AI你想要什么……我甚至不读代码了，直接接受所有改动。&lt;/p&gt;
&lt;p&gt;这条推文引爆了整个开发者社区。一年之后，92%的美国开发者每天使用AI编程工具，41%的全球代码由AI生成，Lovable凭Vibe Coding做到单月$1亿ARR，整个行业都在谈论&amp;quot;人人都是开发者&amp;quot;的时代。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;然后，这个词的创造者本人宣告了它的死亡。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;2026年2月4日，Karpathy在X发帖：Vibe Coding已经过时（passé）。他给出了替代词——&lt;strong&gt;Agentic Engineering&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;创造者亲手埋葬自己的词，这本身就值得认真对待。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;karpathy说了什么&#34;&gt;Karpathy说了什么
&lt;/h2&gt;&lt;p&gt;他的新观点不是否定Vibe Coding，而是说这个方法需要进化。&lt;/p&gt;
&lt;p&gt;&amp;ldquo;感觉导向&amp;quot;适合快速原型、独立项目、探索想法。但当项目规模上去，当代码库开始有真实用户，当你需要保证质量而不只是能跑，Vibe就不够用了。&lt;/p&gt;
&lt;p&gt;他提出的方向叫&lt;strong&gt;Agentic Engineering&lt;/strong&gt;：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;不是你写代码，不是AI写代码，而是你指挥AI完成一系列有明确目标的任务——你负责架构决策和质量验收，AI负责执行和实现。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;区别很微妙，但影响很大。&lt;/p&gt;
&lt;p&gt;Vibe Coding是：我有个想法，我跟AI聊，看它给我什么，我接受。&lt;/p&gt;
&lt;p&gt;Agentic Engineering是：我知道要做什么，我把任务拆成AI能独立执行的单元，我验证每个单元的输出是否符合预期，再推进下一步。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;vibe-coding-的三个致命缺陷&#34;&gt;Vibe Coding 的三个致命缺陷
&lt;/h2&gt;&lt;p&gt;Karpathy不是第一次修正自己的观点。他擅长的是在正确的时间说正确的话——上一次是2025年初鼓励所有人用AI写代码，这一次是告诉你为什么那种方式走不远。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;缺陷一：没有设计。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Vibe Coding的本质是&amp;quot;提需求，拿结果&amp;rdquo;，跳过了架构设计环节。AI生成的代码往往能跑，但结构混乱。当功能迭代到第三版，代码债就开始反噬——而此时你对代码内部逻辑几乎一无所知，无从下手。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;缺陷二：没有测试。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;顺着感觉走意味着你不知道代码为什么能跑，自然也不知道在什么条件下会出错。2026年的调查数据显示：AI生成代码的bug密度是人工手写的&lt;strong&gt;1.7倍&lt;/strong&gt;，63%的开发者承认至少有一次花在调试AI代码上的时间，比自己写还长。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;缺陷三：没有审查。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;安全漏洞、权限逻辑错误、敏感数据处理不当——这些问题在Vibe Coding工作流里几乎必然被忽略，因为&amp;quot;顺感觉&amp;quot;本身就排斥批判性审视。最新安全研究显示，AI协作代码的安全漏洞数量是人类代码的&lt;strong&gt;2.74倍&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这三个缺陷在原型阶段无关痛痒，在生产系统里会集中引爆。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;为什么感觉不够了&#34;&gt;为什么感觉不够了
&lt;/h2&gt;&lt;p&gt;Reddit这周的热帖，5755个赞，562条评论：&lt;strong&gt;&amp;ldquo;Why the majority of vibe coded projects fail&amp;rdquo;&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;评论区里的开发者描述了同一种经历：&lt;/p&gt;
&lt;p&gt;项目初期非常爽，几天就做出能演示的东西。然后某个时间点之后，AI开始帮你修bug同时引入新bug，代码库变成一团谁都不知道内部逻辑的黑盒，最后要加新功能，AI反而改坏了三个旧功能。&lt;/p&gt;
&lt;p&gt;这不是工具问题，是方法论问题。&lt;/p&gt;
&lt;p&gt;数据层面：最新研究显示，AI协作代码的安全漏洞数量是人类代码的&lt;strong&gt;2.74倍&lt;/strong&gt;，严重问题多出约&lt;strong&gt;1.7倍&lt;/strong&gt;，逻辑错误和控制流缺陷显著更高。当你的项目规模小、没有真实用户时，这些数字不重要。但规模一旦上去，这些隐患会集中爆发。&lt;/p&gt;
&lt;p&gt;Vibe Coding的核心假设是：&lt;strong&gt;AI足够聪明，我不需要懂它在做什么&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这个假设在原型阶段成立。在生产代码里不成立。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;agentic-engineering的3个核心特征&#34;&gt;Agentic Engineering的3个核心特征
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;1. 任务比对话更重要&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Vibe Coding的工作单元是&amp;quot;对话&amp;quot;——你说一句，AI回一句，你接受，继续聊。&lt;/p&gt;
&lt;p&gt;Agentic Engineering的工作单元是&amp;quot;任务&amp;quot;——明确的输入、明确的预期输出、明确的验收标准。&lt;/p&gt;
&lt;p&gt;实际操作上，这意味着你在让AI干活之前，先想清楚：这个任务完成的标准是什么？我怎么知道它做对了？&lt;/p&gt;
&lt;p&gt;不是写一段话描述你的感觉，而是写一个Spec：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;任务：实现用户登录功能
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;输入：邮箱 + 密码
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;输出：JWT token，有效期24小时
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;验收标准：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 正确密码返回200 + token
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 错误密码返回401，不暴露账户是否存在
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- token包含userId和过期时间
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 密码用bcrypt hash存储
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;安全要求：防止暴力破解（单IP 5次/分钟限制）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;有了这个，AI的输出就有了可以对照的标准。你不需要读每一行代码，但你需要验证结果是否符合Spec。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. 你是架构师，AI是工程师&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Vibe Coding里，你是产品经理，AI是全能的外包团队，你只管提需求。&lt;/p&gt;
&lt;p&gt;Agentic Engineering里，你是架构师，AI是工程师团队。工程师很强，但方向和判断是你的。&lt;/p&gt;
&lt;p&gt;这个角色切换意味着：你需要知道你在构建什么，即使不需要知道每行代码怎么写。数据库怎么设计？服务怎么拆分？哪些地方有安全边界？这些判断不能完全外包给AI。&lt;/p&gt;
&lt;p&gt;不是说你要会写所有代码，而是你要能做&lt;strong&gt;技术判断&lt;/strong&gt;，哪怕你的技术判断只来自于跟AI深度讨论之后的理解。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. 验收是流程的一部分，不是可选项&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Vibe Coding的流程：提需求 → 接受输出 → 继续。&lt;/p&gt;
&lt;p&gt;Agentic Engineering的流程：定任务 → AI执行 → &lt;strong&gt;你验收&lt;/strong&gt; → 通过才继续。&lt;/p&gt;
&lt;p&gt;验收不是&amp;quot;运行一下看有没有报错&amp;quot;。验收是对照Spec检查：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;功能是否符合预期？&lt;/li&gt;
&lt;li&gt;边界情况有没有处理？&lt;/li&gt;
&lt;li&gt;有没有引入新问题？&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Claude Code的Code Review功能这周刚上线，正好对应这个需求——在推进下一步之前，让AI帮你系统性地检查刚完成的任务是否有问题。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/karpathy-agentic-engineering-2026/imgs/three-pillars.png&#34;
	width=&#34;2400&#34;
	height=&#34;1792&#34;
	srcset=&#34;https://blog.ccino.org/p/karpathy-agentic-engineering-2026/imgs/three-pillars_hu_4a45e5c5a3df4d8b.png 480w, https://blog.ccino.org/p/karpathy-agentic-engineering-2026/imgs/three-pillars_hu_c573c332a4fa4ff5.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Agentic Engineering三大特征：任务&amp;gt;对话、你是架构师、验收是必选项&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;133&#34;
		data-flex-basis=&#34;321px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;你的工作流该怎么升级&#34;&gt;你的工作流该怎么升级
&lt;/h2&gt;&lt;p&gt;不是推翻Vibe Coding，是在它的基础上加一层结构。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;阶段一：探索期，继续Vibe&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;新项目、新想法、验证可行性——这里Vibe Coding最爽。随便聊，快速出东西，不用在乎代码质量。这个阶段的目的是验证方向，不是写生产代码。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;阶段二：转折点识别&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;什么时候该切换模式？有几个信号：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;项目有了真实用户&lt;/li&gt;
&lt;li&gt;改一个功能开始怕影响其他功能&lt;/li&gt;
&lt;li&gt;AI建议的方案你已经看不懂逻辑&lt;/li&gt;
&lt;li&gt;代码库超过某个你无法整体把握的规模&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这个转折点每个项目不一样，但多数人是在出了几次生产事故之后才意识到应该更早切换。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;阶段三：Agentic模式&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;切换到Agentic模式后，每次让AI做一件事之前，先写Spec。Spec不需要很长，但要有：&lt;strong&gt;做什么、验收标准是什么&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;让AI执行之后，对照Spec验收，而不是直接运行看有没有崩。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Claude Code具体用法：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 不这么做（Vibe模式）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt; 帮我加一个用户登录功能
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 这么做（Agentic模式）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt; 实现登录API。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt; 规格：POST /auth/login，接受&lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;email, password&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt; 返回：成功200+JWT，失败401，密码用bcrypt
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt; 安全：限制暴力破解，错误信息不暴露账户存在
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt; 完成后列出你做的每个决策和原因，我来验收
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;区别不只是提示词更详细，而是你在要求AI&lt;strong&gt;解释它做的判断&lt;/strong&gt;，这样你才能对架构有控制权，而不是只能接受一个黑盒输出。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/karpathy-agentic-engineering-2026/imgs/workflow-upgrade.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/karpathy-agentic-engineering-2026/imgs/workflow-upgrade_hu_7c0d152558f0abc.png 480w, https://blog.ccino.org/p/karpathy-agentic-engineering-2026/imgs/workflow-upgrade_hu_2fc3601aa0813ee9.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;工作流升级路径：探索期→转折点→Agentic模式&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;工具层面的agentic实践&#34;&gt;工具层面的Agentic实践
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Claude Code&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;现在的Claude Code不只是&amp;quot;帮你写代码的AI&amp;quot;，它支持多步骤任务、工具调用、代码库范围的上下文理解。Agentic Engineering的工作方式跟它更配：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用 &lt;code&gt;/project&lt;/code&gt; 命令让它理解你的整体代码库&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;CLAUDE.md&lt;/code&gt; 写清楚你项目的架构约束和代码规范——这就是你的&amp;quot;架构意图&amp;quot;，AI的所有输出都会在这个框架内&lt;/li&gt;
&lt;li&gt;每完成一个任务，用刚上线的Code Review功能验收，而不是盲目继续&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Cursor&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Cursor的Composer模式更适合Agentic工作流。把任务写在Composer里，让它在整个代码库范围内执行，而不是只在当前文件聊。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;两者结合&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;很多人现在用Cursor做日常编辑和补全，Claude Code处理需要深度推理的复杂任务。这个组合在Agentic模式下效果更好——Cursor负责快速迭代，Claude Code负责需要全局视角的架构级任务。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;死亡是一种修辞但转型是真实的&#34;&gt;&amp;ldquo;死亡&amp;quot;是一种修辞，但转型是真实的
&lt;/h2&gt;&lt;p&gt;Karpathy说Vibe Coding已死，是一种修辞手法——他要制造足够强烈的信号，让一年来习惯了&amp;quot;感觉流&amp;quot;的开发者认真对待这次方向调整。&lt;/p&gt;
&lt;p&gt;实质是：工具在进化，方法论也必须进化。&lt;/p&gt;
&lt;p&gt;2025年Vibe Coding的意义是降低了入门门槛，让更多人能用AI做东西。2026年Agentic Engineering的意义是让这些东西能活得更长、质量更可靠。这两件事不矛盾——Vibe Coding让你快速从0到1，Agentic Engineering让你从1到10不崩盘。&lt;/p&gt;
&lt;p&gt;你不需要二选一，你需要知道什么时候该切换档位。&lt;/p&gt;
&lt;p&gt;《The New Stack》的Gene Kim（《Vibe Coding》书作者）说：&amp;ldquo;Vibe Coding是个不会消失的词，基因已经出瓶。&amp;ldquo;他说的是现象层面。Karpathy说的是方法论层面——两者并不矛盾，但后者更重要。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;大多数Vibe Coding项目的死法不是技术问题，是方法论追不上规模的问题。Karpathy比任何人都清楚这一点，因为这个词就是他发明的。&lt;/p&gt;
&lt;p&gt;该升级了。&lt;/p&gt;
&lt;hr&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;参考资料&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.technologyreview.com/2026/01/12/1130027/generative-coding-ai-software-2026-breakthrough-technology/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MIT Technology Review — Generative Coding: 10 Breakthrough Technologies 2026&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/Vibe_coding&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Vibe coding — Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/karpathy/status/2019137879310836075&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Karpathy on X — Vibe Coding一周年回顾与Agentic Engineering&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/ClaudeAI/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reddit r/ClaudeAI — Why the majority of vibe coded projects fail（本周热帖，⬆️5755）&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;扩展阅读&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://thenewstack.io/vibe-coding-is-passe/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;The New Stack — Vibe coding is passé: Karpathy有了新名字&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://thenewstack.io/vibe-coding-agentic-engineering/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;The New Stack — From vibes to engineering: AI agents如何超越自己的术语&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://addyosmani.com/blog/agentic-engineering/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Addy Osmani — Agentic Engineering（深度长文）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.ibm.com/think/topics/agentic-engineering&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;IBM Think — What is Agentic Engineering?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://medium.com/generative-ai-revolution-ai-native-transformation/openai-cofounder-andrej-karpathy-signals-the-shift-from-vibe-coding-to-agentic-engineering-ea4bc364c4a1&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Medium — Karpathy signals the shift from Vibe Coding to Agentic Engineering&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://the-decoder.com/former-tesla-ai-chief-andrej-karpathy-now-codes-mostly-in-english-just-three-months-after-calling-ai-agents-useless/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;The Decoder — Karpathy现在&amp;quot;大部分用英语编程&amp;rdquo;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.glideapps.com/blog/what-is-agentic-engineering&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Glide Blog — What is agentic engineering? Vibe Coding之后的进化&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Anthropic 意外「开源」Claude Code：51 万行源码泄露，开发者扒出了什么？</title>
        <link>https://blog.ccino.org/p/claude-code-source-leak/</link>
        <pubDate>Wed, 01 Apr 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/claude-code-source-leak/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/claude-code-source-leak/imgs/cover.png" alt="Featured image of post Anthropic 意外「开源」Claude Code：51 万行源码泄露，开发者扒出了什么？" /&gt;&lt;p&gt;2026 年 3 月 31 日，一个 59.8 MB 的文件，把 Anthropic 最神秘的工程细节彻底暴露在了互联网上。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;一个文件引发的开源事故&#34;&gt;一个文件引发的「开源事故」
&lt;/h2&gt;&lt;p&gt;事情的起因，是 Anthropic 在 npm 上发布 Claude Code v2.1.88 时，打包人员犯了一个低级错误：把一个本应仅用于内部调试的 &lt;code&gt;.map&lt;/code&gt; 文件，一起上传到了公开的 npm 仓库。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;.map&lt;/code&gt; 文件，全名 Source Map，是前端工程师的调试工具。当 JavaScript 代码被压缩混淆后，source map 会记录每一行压缩代码对应的原始源码位置。开发者本地调试时，用它把晦涩的压缩代码还原成可读的原始代码。&lt;/p&gt;
&lt;p&gt;Anthropic 的工程师把这个文件上传到了 npm，等于把整个 Claude Code 的原始 TypeScript 代码，原封不动地摆在了所有人面前。&lt;/p&gt;
&lt;p&gt;最先发现这件事的是安全研究员 Chaofan Shou。他注意到这个包体积异常，仔细一看，Source Map 文件里躺着 &lt;strong&gt;51 万行 TypeScript 源码&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;接下来的事情可想而知。&lt;/p&gt;
&lt;p&gt;几小时内，这份代码被镜像到了 GitHub，迅速获得超过 1100 个 Star、1900 次 Fork。Reddit 的 r/ClaudeAI 版块炸了锅，两个相关帖子合计收获超过 6100 赞、900+ 条评论。The Register 的编辑用了一句话总结这件事：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;Someone at Anthropic has some explaining to do.&amp;rdquo;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;Anthropic 随后承认这是&lt;strong&gt;人为失误&lt;/strong&gt;，并将其定性为「发布打包失误，而非安全漏洞」。但代码已经在互联网上流传，互联网不会忘记任何东西。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-code-source-leak/imgs/body1.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-code-source-leak/imgs/body1_hu_22ca82bdf3a5b5f7.png 480w, https://blog.ccino.org/p/claude-code-source-leak/imgs/body1_hu_8ab01138ccc0fccc.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Source Map 泄露原理：npm 包意外附带 59.8MB 的 .map 文件流程图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;开发者扒出了什么&#34;&gt;开发者扒出了什么？
&lt;/h2&gt;&lt;p&gt;这场意外「开源」最有价值的部分，不是代码本身，而是它暴露的设计思路。千名开发者在 48 小时内对这 51 万行代码进行了地毯式分析，发现了几个让人惊喜的细节。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. 工具系统：40 个能力模块，权限隔离&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Claude Code 的核心架构是一套插件式的「工具系统」，目前有大约 40 个工具。文件读写、Bash 执行、网页抓取、LSP 集成……每一项能力都是一个独立的、有权限门控的工具模块。&lt;/p&gt;
&lt;p&gt;光是基础工具定义文件，就有 &lt;strong&gt;29,000 行 TypeScript&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这种设计的好处是清晰：每个工具的权限边界明确，出了问题容易定位。对比一些「all-in-one」的竞品，Anthropic 在工程架构上明显更谨慎。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. 44 个未发布功能，已经写好了&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;源码里有 &lt;strong&gt;44 个 Feature Flag&lt;/strong&gt;，对应 44 个「编译完成但尚未上线」的功能。&lt;/p&gt;
&lt;p&gt;这不是设计稿，是真实可运行的代码，只是被一个配置开关压着没有释放。这意味着 Anthropic 在产品发布上保持了工程先行的节奏——功能已就绪，等待时机上线。&lt;/p&gt;
&lt;p&gt;具体是哪些功能，开发者社区正在逐一分析，部分功能已经被识别出来（涉及 memory 管理、多 agent 协作等方向），但 Anthropic 尚未官方确认。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. 三层记忆架构：Anthropic 如何解决「上下文熵增」问题&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;对竞争对手来说，源码里最有价值的可能是这部分：&lt;strong&gt;Claude Code 的记忆系统&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;长对话的核心难题是「上下文熵增」——随着对话越来越长，模型注意力被稀释，重要信息被埋没。Claude Code 用了一套三层架构来对抗这个问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;短期记忆&lt;/strong&gt;：当前对话上下文，实时更新&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;工作记忆&lt;/strong&gt;：任务相关的关键信息，主动提取并压缩&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;长期记忆&lt;/strong&gt;：跨会话保留的项目上下文，结构化存储&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这套设计解释了为什么 Claude Code 在处理大型代码库时，能够比竞品更「记得住」上下文。现在，这个方案的实现细节已经是公开信息了。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-code-source-leak/imgs/body2.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-code-source-leak/imgs/body2_hu_ca93df8c20bcab0.png 480w, https://blog.ccino.org/p/claude-code-source-leak/imgs/body2_hu_f23c43e8ee3efa6b.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;开发者深夜分析泄露源码：多屏显示架构图与 GitHub 星标飙升&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;工程文化的真实面目&#34;&gt;工程文化的真实面目
&lt;/h2&gt;&lt;p&gt;源码分析社区的普遍评价是：&lt;strong&gt;代码质量比预期中高&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;注释清晰，命名规范，架构分层合理，没有明显的「祖传代码」气息。有开发者评论说：「这看起来像一个真正在意代码可读性的团队写的，而不是为了赶进度堆出来的。」&lt;/p&gt;
&lt;p&gt;当然，也有批评的声音——51 万行代码里，有一些过度设计的抽象层，也有一些让人困惑的类型定义。但整体上，这次意外展示的工程品质让 Anthropic 在开发者社区收获了意外的好感。&lt;/p&gt;
&lt;p&gt;有意思的是，一位研究者迅速将源码改写为 Rust 版本，发到了 GitHub 上（&lt;a class=&#34;link&#34; href=&#34;https://github.com/Kuberwastaken/claude-code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Kuberwastaken/claude-code&lt;/a&gt;），并附上了详细的架构解析。&lt;/p&gt;
&lt;p&gt;这大概是 Anthropic 最不希望发生、但又最能说明问题的事：源码被人用另一门语言重写了，还做了解析文档。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;这次泄露的代价是什么&#34;&gt;这次泄露的代价是什么？
&lt;/h2&gt;&lt;p&gt;除了尴尬，这次泄露的实际代价值得认真讨论。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;对竞争对手&lt;/strong&gt;：Claude Code 的工具架构、记忆系统、Feature Flag 列表，现在都是公开信息。竞品团队可以直接参考这套设计，或者针对性地做差异化。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;对安全&lt;/strong&gt;：这是更值得担心的部分。了解 Claude Code 的内部工具调用逻辑，意味着攻击者可以设计专门针对 Claude Code 的恶意仓库——让它在不知情的情况下执行危险命令，或者泄露用户数据。Anthropic 需要认真考虑如何应对这一风险。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;对 Anthropic 自身&lt;/strong&gt;：讽刺的是，这次失误发生在 Anthropic 刚刚宣传 Claude Code 配额管理问题（Forbes 同期报道开发者反映配额消耗异常）的敏感时期。一个月内多次出现负面事件，对品牌是消耗。&lt;/p&gt;
&lt;p&gt;但也有人认为，Anthropic 其实因祸得福：代码质量经受住了公开检阅，工程口碑意外提升。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;互联网不会忘记&#34;&gt;互联网不会忘记
&lt;/h2&gt;&lt;p&gt;Anthropic 已经从 npm 删除了含有 Source Map 的版本。但就像 The Register 的标题所说：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;ldquo;Anthropic accidentally exposes Claude Code source code&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;——意外，已经发生了。&lt;/p&gt;
&lt;p&gt;代码已经在镜像仓库里，在开发者的硬盘里，在无数 Reddit 帖子和分析文章里。互联网是一个永久归档系统，删除只是姿态，留存才是事实。&lt;/p&gt;
&lt;p&gt;一个 &lt;code&gt;.npmignore&lt;/code&gt; 配置文件，让 Anthropic 完成了一次意料之外的「开源」。&lt;/p&gt;
&lt;p&gt;这是所有工程团队的教训：&lt;strong&gt;发布流程的每一个细节，都值得认真对待。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;扩展阅读&#34;&gt;扩展阅读
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.theregister.com/2026/03/31/anthropic_claude_code_source_code/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic accidentally exposes Claude Code source code（The Register）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://venturebeat.com/technology/claude-codes-source-code-appears-to-have-leaked-heres-what-we-know&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Code&amp;rsquo;s source code appears to have leaked: here&amp;rsquo;s what we know（VentureBeat）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://dev.to/gabrielanhaia/claude-codes-entire-source-code-was-just-leaked-via-npm-source-maps-heres-whats-inside-cjo&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Code&amp;rsquo;s Entire Source Code Was Just Leaked via npm Source Maps — Here&amp;rsquo;s What&amp;rsquo;s Inside（DEV Community）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://decrypt.co/362917/anthropic-accidentally-leaked-claude-code-source-internet-keeping-forever&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic Accidentally Leaked Claude Code&amp;rsquo;s Source — The Internet Is Keeping It Forever（Decrypt）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://eu.36kr.com/en/p/3746797195117063&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Code Open-Sourced with 510,000 Lines of Code, Triggers Internet Frenzy（36Kr Global）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.heise.de/en/news/Claude-Code-unintentionally-open-source-Source-map-reveals-all-11242079.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Code unintentionally open source: Source map reveals all（heise online）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/ClaudeAI/comments/1s8lkkm/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reddit 讨论：i dug through claude code&amp;rsquo;s leaked source&amp;hellip;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/ClaudeAI/comments/1s8ifm6/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reddit 讨论：Claude code source code has been leaked via a map file&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Kuberwastaken/claude-code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub：claude-code Rust 重写版与架构解析（Kuberwastaken）&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Anthropic把最强AI模型藏起来了——结果自己把它泄露了</title>
        <link>https://blog.ccino.org/p/anthropic-mythos-model-leak-2026/</link>
        <pubDate>Sat, 28 Mar 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/anthropic-mythos-model-leak-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/anthropic-mythos-model-leak-2026/imgs/cover.png" alt="Featured image of post Anthropic把最强AI模型藏起来了——结果自己把它泄露了" /&gt;&lt;p&gt;3月26日，Fortune记者正在例行浏览一批公开可访问的数据缓存时，发现了一份不该出现在那里的文档。&lt;/p&gt;
&lt;p&gt;文档来自Anthropic。内容是对一个叫&amp;quot;Capybara&amp;quot;的内部模型的技术评估。&lt;/p&gt;
&lt;p&gt;读完之后，记者大概沉默了几秒。&lt;/p&gt;
&lt;p&gt;这份文档描述的，是Anthropic有史以来最强大的模型——比Claude Opus更强，在网络安全基准测试上&amp;quot;远超所有现有AI模型&amp;quot;。文档同时警告：这个模型对网络安全构成&amp;quot;史无前例的风险&amp;quot;，能够发现和利用漏洞的速度，&amp;ldquo;远超防御方应对能力&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;Anthropic把它叫做&amp;quot;step change&amp;quot;——一个在AI领域意味着&amp;quot;质的飞跃&amp;quot;的词。&lt;/p&gt;
&lt;p&gt;然后，Fortune把这件事发出来了。&lt;/p&gt;
&lt;p&gt;这个模型的公开名字，叫Claude Mythos。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;一次意外两个讽刺&#34;&gt;一次意外，两个讽刺
&lt;/h2&gt;&lt;p&gt;这件事之所以值得写，不只是因为&amp;quot;有强大新模型&amp;quot;——那几乎是每个月都会发生的事。&lt;/p&gt;
&lt;p&gt;这件事真正的看点，是两层叠加的讽刺。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第一层&lt;/strong&gt;：Anthropic主动把这个模型藏起来了。&lt;/p&gt;
&lt;p&gt;根据Fortune的报道，Anthropic很清楚Mythos的能力有多危险。他们内部评估认为，这个模型在网络攻击能力上&amp;quot;目前远超任何其他AI模型&amp;quot;，并且&amp;quot;预示着即将到来的一波模型浪潮，其利用漏洞的能力将远超防御方的应对速度&amp;quot;。&lt;/p&gt;
&lt;p&gt;正因为如此，Anthropic没有发布它。目前Mythos只对极少数专注于网络安全&lt;strong&gt;防御&lt;/strong&gt;的机构开放早期访问，并且伴随着严格的使用限制。&lt;/p&gt;
&lt;p&gt;这是历史上第一次，一家顶级AI公司因为&amp;quot;模型太危险&amp;quot;而主动选择不发布。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第二层&lt;/strong&gt;：他们自己把它泄露了。&lt;/p&gt;
&lt;p&gt;你没看错。&lt;/p&gt;
&lt;p&gt;全球最强调AI安全的公司，花了大量精力构建&amp;quot;AI宪法&amp;quot;、发布安全承诺、拒绝军方合同——然后把最危险模型的技术文档，存到了一个公开可访问的数据缓存里。&lt;/p&gt;
&lt;p&gt;Fortune记者不是通过黑客攻击发现的，也不是内部泄露，就是随手一翻，文档就在那里。&lt;/p&gt;
&lt;p&gt;这个细节，本身就说明了很多问题。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;mythos到底有多强&#34;&gt;Mythos到底有多强
&lt;/h2&gt;&lt;p&gt;根据泄露文档和后续报道，Mythos（内部代号Capybara）代表了Anthropic模型线的一个新层级——比Opus更大、更贵、能力更强。&lt;/p&gt;
&lt;p&gt;能力提升最显著的三个维度：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/anthropic-mythos-model-leak-2026/imgs/cyber-capability.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/anthropic-mythos-model-leak-2026/imgs/cyber-capability_hu_f2a640bcb52c814c.png 480w, https://blog.ccino.org/p/anthropic-mythos-model-leak-2026/imgs/cyber-capability_hu_2175575630689a35.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;AI攻防能力失衡：Mythos的网络安全能力让防御方应接不暇&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. 网络安全&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这是Mythos最突出也最令人担忧的能力。文档描述它在网络安全基准测试上的分数&amp;quot;大幅超过&amp;quot;Claude Opus 4.6，具备发现软件漏洞、理解复杂攻击链、生成利用代码的能力。用Anthropic自己的话说：该模型的网络攻击能力&amp;quot;目前在所有AI模型中独占鳌头&amp;quot;。&lt;/p&gt;
&lt;p&gt;这不是随便说说的。3月27日，Mythos泄露新闻出来后，多只网络安全概念股当日出现明显下跌——市场对AI模型可能降低攻击门槛的担忧，通过股价直接表达了出来。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. 代码能力&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在软件编程基准测试上，Mythos的分数同样&amp;quot;大幅超过&amp;quot;Opus。考虑到Opus在代码任务上已经是目前顶尖水平，Mythos的进步意味着它可能在自主编写复杂系统、调试大型代码库、进行架构设计等任务上有质的提升。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. 学术推理&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在需要多步骤逻辑推导、跨学科知识综合的任务上，Mythos也展现出了新的能力层级。这类能力往往和&amp;quot;真正的问题解决&amp;quot;最相关——不只是记住答案，而是能推导出答案。&lt;/p&gt;
&lt;p&gt;总结起来，Mythos的定位是一个&amp;quot;更大、更贵、更强&amp;quot;的新层级，而不是Opus的迭代更新。如果一定要类比，它更像是Anthropic正在探索的&amp;quot;Opus之上&amp;quot;的存在。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;为什么anthropic决定不发布&#34;&gt;为什么Anthropic决定不发布
&lt;/h2&gt;&lt;p&gt;这是整件事最值得思考的部分。&lt;/p&gt;
&lt;p&gt;AI公司通常有强烈的发布冲动：新模型意味着媒体热度、竞争优势、更多付费用户。Anthropic选择主动克制，说明他们在内部评估后得出了一个严肃的结论——&lt;strong&gt;这个模型的攻击能力，已经超出了当前安全措施能够覆盖的范围&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;文档中有一段话值得重读：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;该模型预示着即将到来的一波模型浪潮，其利用漏洞的能力将远超防御方的应对速度。&amp;rdquo;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;这不是&amp;quot;模型可能被滥用&amp;quot;的一般性风险描述，而是一个相当具体的判断：攻防不对称已经达到了某个临界点。一个足够强大的AI，如果被用于进攻，防御方将几乎没有时间反应。&lt;/p&gt;
&lt;p&gt;Anthropic的应对方式是：把Mythos的访问权限严格限制在网络安全&lt;strong&gt;防御&lt;/strong&gt;机构，要求使用者签署协议，并在模型层面加入防护措施。与此同时，他们显然在评估更系统的安全框架。&lt;/p&gt;
&lt;p&gt;这种谨慎是真实的，不是公关表演——因为公关表演不需要把最强模型藏起来，那会直接损失竞争优势。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;最强调安全的公司犯了最初级的失误&#34;&gt;最强调安全的公司，犯了最初级的失误
&lt;/h2&gt;&lt;p&gt;然而，上面所有的谨慎，并不能掩盖这件事最荒诞的部分：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/anthropic-mythos-model-leak-2026/imgs/irony-leak.png&#34;
	width=&#34;2400&#34;
	height=&#34;1792&#34;
	srcset=&#34;https://blog.ccino.org/p/anthropic-mythos-model-leak-2026/imgs/irony-leak_hu_4e7108f3654c850f.png 480w, https://blog.ccino.org/p/anthropic-mythos-model-leak-2026/imgs/irony-leak_hu_9ab9612d09fe48f.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;满是监控摄像头的AI安全机构，从一扇开着的窗户飘出了机密文件&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;133&#34;
		data-flex-basis=&#34;321px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;Anthropic花了大量精力思考&amp;quot;如何让AI更安全地被人类使用&amp;quot;，然后在数据管理这个最基础的环节出了问题。&lt;/p&gt;
&lt;p&gt;把敏感文档存到公开可访问的数据缓存，是任何一家科技公司在入职培训里都会讲的基本失误。Fortune记者发现的方式，不是什么高超的信息挖掘技术，就是普通的信息检索。&lt;/p&gt;
&lt;p&gt;这个对比很难不让人注意：&lt;/p&gt;
&lt;p&gt;一边是对AI能力风险的高度警觉和严格管控，另一边是对基础信息安全的疏忽。&lt;/p&gt;
&lt;p&gt;Anthropic目前尚未就这次数据泄露做出正式声明。但这件事折射出一个更普遍的问题——AI公司的安全工作，往往高度集中在&amp;quot;模型层面&amp;quot;，而在传统的数据安全、运营安全层面，可能并不像外界想象的那样周全。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;这对我们意味着什么&#34;&gt;这对我们意味着什么
&lt;/h2&gt;&lt;p&gt;如果你是Claude的用户，最直接的问题可能是：&lt;strong&gt;Mythos什么时候能用到？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;目前没有时间表。Anthropic没有宣布公开发布计划，泄露的文档也没有提到具体日期。考虑到他们对这个模型的安全评估，短期内大规模公开发布的可能性不高。&lt;/p&gt;
&lt;p&gt;但这件事有几个更长远的含义值得关注：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AI能力的&amp;quot;危险阈值&amp;quot;正在成为真实问题。&lt;/strong&gt; 不是科幻小说里的担忧，而是Anthropic这样的公司已经在内部做出&amp;quot;强到不能发布&amp;quot;判断的现实。这意味着AI安全不再只是道德讨论，而是会开始影响产品决策。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;模型能力的公开透明度会越来越难。&lt;/strong&gt; 如果最强的模型必须保密，我们就失去了独立评估和讨论的基础。Anthropic这次是&amp;quot;意外透明&amp;quot;——主动透明的前景并不乐观。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;网络安全行业面临的变局是真实的。&lt;/strong&gt; 多只网络安全股的下跌，反映的是一个合理的担忧：AI辅助攻击的门槛正在迅速降低。防御者需要更快地适应。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;结语&#34;&gt;结语
&lt;/h2&gt;&lt;p&gt;这件事有一个奇特的结构：Anthropic因为意外泄露，反而让我们看到了他们原本想隐藏的东西——不只是一个强大模型的存在，还有他们在面对真正危险的AI能力时，已经开始认真思考&amp;quot;不发布&amp;quot;这个选项。&lt;/p&gt;
&lt;p&gt;这种克制，在竞争激烈的AI行业里，本身就是一件值得记录的事。&lt;/p&gt;
&lt;p&gt;不管这次的泄露是否会加速或推迟Mythos的公开计划，它至少清楚地告诉我们：AI能力的边界，已经到了一个以前从未有过的位置。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;素材来源：&lt;a class=&#34;link&#34; href=&#34;https://fortune.com/2026/03/26/anthropic-says-testing-mythos-powerful-new-ai-model-after-data-leak-reveals-its-existence-step-change-in-capabilities/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Fortune独家报道&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://www.cnbc.com/2026/03/27/anthropic-cybersecurity-stocks-ai-mythos.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CNBC：网络安全股反应&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://futurism.com/artificial-intelligence/anthropic-step-change-new-model-claude-mythos&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Futurism：泄露方式分析&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;延伸阅读&#34;&gt;延伸阅读
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;关于 Mythos 模型本身&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://fortune.com/2026/03/26/anthropic-says-testing-mythos-powerful-new-ai-model-after-data-leak-reveals-its-existence-step-change-in-capabilities/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Fortune 独家：Anthropic &amp;ldquo;Mythos&amp;rdquo; AI model revealed in data leak&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://fortune.com/2026/03/27/anthropic-leaked-ai-mythos-cybersecurity-risk/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Fortune 跟进：Anthropic accidentally leaked details of Mythos with unprecedented cybersecurity risks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://futurism.com/artificial-intelligence/anthropic-step-change-new-model-claude-mythos&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Futurism：Anthropic Step-Change New Model — Claude Mythos&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.techzine.eu/news/applications/140017/details-leak-on-anthropics-step-change-mythos-model/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Techzine：Details leak on Anthropic&amp;rsquo;s &amp;ldquo;step-change&amp;rdquo; Mythos model&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;关于市场影响&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.cnbc.com/2026/03/27/anthropic-cybersecurity-stocks-ai-mythos.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CNBC：Cybersecurity stocks fall on report Anthropic is testing a powerful new model&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.coindesk.com/markets/2026/03/27/anthropic-s-massive-claude-mythos-leak-reveals-a-new-ai-model-that-could-be-a-cybersecurity-nightmare&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CoinDesk：Anthropic&amp;rsquo;s massive Claude Mythos leak reveals a new AI model that could be a cybersecurity nightmare&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;关于 Anthropic 近期动态&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.bloomberg.com/news/articles/2026-03-27/claude-ai-maker-anthropic-said-to-weigh-ipo-as-soon-as-october&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Bloomberg：Anthropic Considers IPO as Soon as October（同日另一重磅）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ramp.com/velocity/ai-index-march-2026&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ramp AI Index March 2026：Claude 赢得 70% 企业竞争&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>OpenAI 七年后再次开源：gpt-oss 来了，Apache 2.0，单卡能跑</title>
        <link>https://blog.ccino.org/p/openai-gpt-oss-open-source-2026/</link>
        <pubDate>Sat, 21 Mar 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/openai-gpt-oss-open-source-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/openai-gpt-oss-open-source-2026/imgs/cover.png" alt="Featured image of post OpenAI 七年后再次开源：gpt-oss 来了，Apache 2.0，单卡能跑" /&gt;&lt;p&gt;2019年2月，OpenAI 发布了 GPT-2。&lt;/p&gt;
&lt;p&gt;那是最后一次。&lt;/p&gt;
&lt;p&gt;从那以后，OpenAI 用了整整七年时间，向全世界展示一件事：&lt;strong&gt;&amp;ldquo;Open&amp;quot;这个字，和公司的实际行为没有关系。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;GPT-3、GPT-4、GPT-4o、o1、o3……每一代模型，权重锁死，API 付费，商业闭源。&amp;ldquo;为了防止滥用&amp;quot;的理由说了一遍又一遍，但业界心照不宣：真正的原因是竞争壁垒。&lt;/p&gt;
&lt;p&gt;直到这一次。&lt;/p&gt;
&lt;p&gt;2026年，OpenAI 发布了 &lt;strong&gt;gpt-oss&lt;/strong&gt;——120B 和 20B 两个版本，Apache 2.0 协议，权重完全开放，可以免费下载、本地运行、商业使用。&lt;/p&gt;
&lt;p&gt;七年，一个轮回。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;gpt-oss-是什么&#34;&gt;gpt-oss 是什么
&lt;/h2&gt;&lt;p&gt;先说清楚技术细节。&lt;/p&gt;
&lt;p&gt;OpenAI 这次开源了两个模型：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;gpt-oss-120b&lt;/strong&gt;：旗舰版本，参数量 1200 亿，在主流推理基准上的表现接近 o4-mini，能在&lt;strong&gt;单张 80GB 显卡&lt;/strong&gt;（比如 A100 或 H100）上运行。这意味着个人开发者和中小团队，理论上只要有一块服务器 GPU，就能本地跑起来一个&amp;quot;准 o4-mini&amp;quot;水平的模型。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;gpt-oss-20b&lt;/strong&gt;：轻量版本，参数量 200 亿，性能对标 o3-mini，只需 &lt;strong&gt;16GB 内存&lt;/strong&gt;即可运行——这个门槛意味着高端消费级显卡（RTX 4090、RTX 5090）、甚至某些高配 Mac 都能跑起来。&lt;/p&gt;
&lt;p&gt;两个版本都：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;采用 &lt;strong&gt;Apache 2.0 协议&lt;/strong&gt;，商业使用无限制&lt;/li&gt;
&lt;li&gt;原生支持 &lt;strong&gt;MXFP4 量化&lt;/strong&gt;，降低显存需求&lt;/li&gt;
&lt;li&gt;已上线 &lt;strong&gt;Hugging Face&lt;/strong&gt;（直接下载权重）&lt;/li&gt;
&lt;li&gt;已收录 &lt;strong&gt;Ollama&lt;/strong&gt;（&lt;code&gt;ollama pull gpt-oss&lt;/code&gt; 即可）&lt;/li&gt;
&lt;li&gt;可部署在 &lt;strong&gt;Azure AI Foundry&lt;/strong&gt; 和 &lt;strong&gt;Windows AI Foundry&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;训练方式上，OpenAI 表示这两个模型使用了与 o3 等前沿系统相同的强化学习技术，具备较强的工具调用能力和推理能力。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;它能干什么性能几何&#34;&gt;它能干什么，性能几何
&lt;/h2&gt;&lt;p&gt;先泼一盆冷水：&lt;strong&gt;120B 接近 o4-mini，不等于就是 o4-mini&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;o4-mini 是截至发布时 OpenAI 在 API 上提供的轻量推理模型，已经比较强——但不是最顶级的。GPT-5.4 Pro、GPT-5.4 Thinking 才是当前旗舰，而 gpt-oss 并不在这个层次。&lt;/p&gt;
&lt;p&gt;但话说回来，**&amp;ldquo;接近 o4-mini 的本地模型，免费商用&amp;rdquo;**这件事本身，已经足够震撼。&lt;/p&gt;
&lt;p&gt;做个横向对比：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;模型&lt;/th&gt;
          &lt;th&gt;参数量&lt;/th&gt;
          &lt;th&gt;显存需求&lt;/th&gt;
          &lt;th&gt;许可证&lt;/th&gt;
          &lt;th&gt;性能对标&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;gpt-oss-120b&lt;/td&gt;
          &lt;td&gt;120B&lt;/td&gt;
          &lt;td&gt;80GB&lt;/td&gt;
          &lt;td&gt;Apache 2.0&lt;/td&gt;
          &lt;td&gt;≈ o4-mini&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;gpt-oss-20b&lt;/td&gt;
          &lt;td&gt;20B&lt;/td&gt;
          &lt;td&gt;16GB&lt;/td&gt;
          &lt;td&gt;Apache 2.0&lt;/td&gt;
          &lt;td&gt;≈ o3-mini&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Meta Llama 4 Scout&lt;/td&gt;
          &lt;td&gt;109B&lt;/td&gt;
          &lt;td&gt;~80GB&lt;/td&gt;
          &lt;td&gt;Llama License&lt;/td&gt;
          &lt;td&gt;竞争级&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;DeepSeek V3.2&lt;/td&gt;
          &lt;td&gt;685B (MoE)&lt;/td&gt;
          &lt;td&gt;多卡&lt;/td&gt;
          &lt;td&gt;MIT&lt;/td&gt;
          &lt;td&gt;GPT-4级&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Qwen3.5-9B&lt;/td&gt;
          &lt;td&gt;9B&lt;/td&gt;
          &lt;td&gt;8GB&lt;/td&gt;
          &lt;td&gt;Apache 2.0&lt;/td&gt;
          &lt;td&gt;超越部分120B模型&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;有意思的是，就在几周前，阿里的 Qwen 3.5-9B 在某些 benchmark 上已经&lt;strong&gt;超过了 gpt-oss-120B&lt;/strong&gt;——用 9B 参数干掉了 120B 的对手。这说明 gpt-oss 并非无敌，开源模型军备竞赛仍在激烈进行。&lt;/p&gt;
&lt;p&gt;但 OpenAI 的品牌背书，加上真正的 Apache 2.0 无限制商用，给了开发者一个新的选择维度。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/openai-gpt-oss-open-source-2026/imgs/model-comparison.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/openai-gpt-oss-open-source-2026/imgs/model-comparison_hu_50d1b1e073088105.png 480w, https://blog.ccino.org/p/openai-gpt-oss-open-source-2026/imgs/model-comparison_hu_29144191914fd9f3.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;开源大模型性能对比：gpt-oss、Llama 4、DeepSeek V3.2、Qwen3.5 横向对比&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;为什么偏偏是现在&#34;&gt;为什么偏偏是现在
&lt;/h2&gt;&lt;p&gt;这才是这件事最值得玩味的部分。&lt;/p&gt;
&lt;p&gt;OpenAI 开源 GPT-2 之后选择闭源，当时的官方理由是&amp;quot;GPT-2 太危险了，大规模开源可能被滥用&amp;rdquo;。这个理由当时就饱受质疑——但无论如何，闭源路线坚持了七年。&lt;/p&gt;
&lt;p&gt;那为什么 2026 年要转变？&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;原因一：DeepSeek 打碎了&amp;quot;开源 = 危险&amp;quot;的神话&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;2025年初，DeepSeek 把 R1 完整权重开源，瞬间引爆全球开发者社区。它的性能接近 o1，成本却是 OpenAI 的零头，而且完全可以本地运行。&lt;/p&gt;
&lt;p&gt;这直接宣告：&lt;strong&gt;高性能开源模型根本不是洪水猛兽，而是对用户的礼物。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;OpenAI 长期以来用&amp;quot;危险性&amp;quot;为闭源背书的叙事，被 DeepSeek 釜底抽薪了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;原因二：Meta Llama 系列抢走了生态&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Meta 的 Llama 系列，从 Llama 2 到 Llama 4，每一代都在建立一个庞大的本地部署生态。Ollama、LM Studio、llama.cpp……整个本地推理工具链，几乎是围绕 Llama 构建起来的。&lt;/p&gt;
&lt;p&gt;开发者在 Meta 的生态里跑模型，学工具链，写集成代码——OpenAI 的存在感在这条赛道上几乎为零。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;原因三：商业护城河本质上来自 API，不来自权重&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;OpenAI 真正的商业壁垒，从来不是模型权重，而是：ChatGPT 的产品体验、API 的稳定性和生态、GPT-5.4 系列等前沿模型的持续领先、以及企业合规体系。&lt;/p&gt;
&lt;p&gt;开放一个&amp;quot;接近 o4-mini&amp;quot;的模型权重，对 OpenAI 的核心商业利益影响有限——毕竟用户付费买的是最新最强的 GPT-5.4，不是 gpt-oss。&lt;/p&gt;
&lt;p&gt;但开放这个权重，能让 OpenAI 重新进入本地部署生态，让开发者在 Ollama 里选模型时看到&amp;quot;gpt-oss&amp;quot;这个名字，重新建立技术品牌认同。&lt;/p&gt;
&lt;p&gt;这是一笔代价极低、收益显著的战略账。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/openai-gpt-oss-open-source-2026/imgs/three-forces.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/openai-gpt-oss-open-source-2026/imgs/three-forces_hu_898a1960b57ddf6d.png 480w, https://blog.ccino.org/p/openai-gpt-oss-open-source-2026/imgs/three-forces_hu_622af6077ffc3669.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;三重压力逼出 gpt-oss：DeepSeek 冲击、Llama 生态压力、商业护城河重估&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;对开发者意味着什么&#34;&gt;对开发者意味着什么
&lt;/h2&gt;&lt;p&gt;如果你是一线开发者，现在可以做这几件事：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. 今天就拉下来跑一跑&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 如果你用 Ollama&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama pull gpt-oss
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 20B 版本（16GB 内存可用）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama pull gpt-oss:20b
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 120B 版本（80GB 显存）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama pull gpt-oss:120b
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;2. 完全免费商用，无需担心授权&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Apache 2.0 的含义是：可以修改、可以商用、可以集成到产品里、可以闭源分发衍生版本。这是目前最宽松的开源协议之一，比 Meta Llama 的自定义协议更干净。&lt;/p&gt;
&lt;p&gt;如果你在做 B 端产品，需要把 AI 能力内嵌进去，又不想每次都调 API 付费、也不想受制于外部服务可用性，gpt-oss 是一个值得认真评估的选项。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. 作为 fine-tuning 的基础模型&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Apache 2.0 允许你在 gpt-oss 基础上 fine-tune，并将 fine-tuned 版本用于商业产品。这对垂直领域 AI 应用开发者是重大利好——用 OpenAI 的底座做专业领域微调，现在合法且免费。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. 和其他模型做真实对比&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;不要只看基准测试。在你自己的任务上（代码补全、文档生成、工具调用、推理分析），用 gpt-oss 和 Qwen3.5、DeepSeek、Llama 4 各跑一遍，数据说话。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;这是真正的转变还是表演性开放&#34;&gt;这是真正的转变，还是表演性开放
&lt;/h2&gt;&lt;p&gt;说句实话，我持保留态度。&lt;/p&gt;
&lt;p&gt;OpenAI 开源的是 &lt;strong&gt;gpt-oss-120b&lt;/strong&gt;——&amp;ldquo;接近 o4-mini&amp;quot;的能力水平。而当前 OpenAI 自己在用的，是比 o4-mini 强得多的 GPT-5.4。&lt;/p&gt;
&lt;p&gt;换句话说：他们开源的是&lt;strong&gt;两代前的技术水平&lt;/strong&gt;，前沿能力依然严格闭源。&lt;/p&gt;
&lt;p&gt;这有点像某个厨师，在自家最好的菜已经升级到第五代的时候，把第三代的食谱公开了。足够慷慨，但也足够安全。&lt;/p&gt;
&lt;p&gt;更深的问题在于，&lt;strong&gt;&amp;ldquo;开源&amp;quot;这件事对 OpenAI 来说，从来都是工具，不是信仰&lt;/strong&gt;。GPT-2 开源是为了建立学术社区影响力；七年闭源是为了构建商业护城河；这次开源 gpt-oss，是为了重新进入本地部署生态、对抗 DeepSeek 和 Llama。&lt;/p&gt;
&lt;p&gt;每一次选择，都是理性的商业决策。&lt;/p&gt;
&lt;p&gt;但对开发者来说，这不重要。重要的是：&lt;strong&gt;今天，你可以免费、合法地在本地跑一个 OpenAI 训练的、接近 o4-mini 性能的语言模型了&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;不管动机是什么，这是好事。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;接下来会怎样&#34;&gt;接下来会怎样
&lt;/h2&gt;&lt;p&gt;gpt-oss 的发布，是 2026 年开源 LLM 竞争的一个缩影。&lt;/p&gt;
&lt;p&gt;现在的局面是：Meta 用 Llama 建生态，Alibaba 用 Qwen 做性能竞争，DeepSeek 用 MoE 架构打成本，OpenAI 用品牌背书重返开源战场，Mistral 专注欧洲合规市场……&lt;/p&gt;
&lt;p&gt;开源模型的能力天花板，正在以肉眼可见的速度接近闭源前沿。&lt;/p&gt;
&lt;p&gt;对普通开发者来说，这是一个极好的时代：你不再需要依赖任何一家公司的 API，就能在本地运行足以解决大多数实际问题的语言模型。&lt;/p&gt;
&lt;p&gt;对 AI 行业来说，这意味着竞争格局正在从&amp;quot;谁的模型最强&amp;rdquo;，转向&amp;quot;谁的生态最好用、谁的工具链最完善、谁的社区最活跃&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;模型本身，正在成为商品。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;七年前，OpenAI 告诉我们，GPT-2 太危险了，不能随便开放。&lt;/p&gt;
&lt;p&gt;七年后，他们把同等规模、同等能力的模型，挂在了 Hugging Face 上。&lt;/p&gt;
&lt;p&gt;世界还是那个世界，只是竞争格局变了。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;引用来源&#34;&gt;引用来源
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openai.com/index/introducing-gpt-oss/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Introducing gpt-oss — OpenAI 官方公告&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openai.com/index/gpt-oss-model-card/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;gpt-oss-120b &amp;amp; gpt-oss-20b Model Card — OpenAI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/openai/gpt-oss&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub: openai/gpt-oss — 权重仓库&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/blog/welcome-openai-gpt-oss&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Welcome GPT OSS — Hugging Face 官方博客&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://azure.microsoft.com/en-us/blog/openais-open%E2%80%91source-model-gpt%E2%80%91oss-on-azure-ai-foundry-and-windows-ai-foundry/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI&amp;rsquo;s open-source model on Azure AI Foundry — Microsoft Azure Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ollama.com/library/gpt-oss&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;gpt-oss — Ollama Library&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://help.apiyi.com/en/gpt-5-4-vs-claude-opus-4-6-comparison-2026-en.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GPT-5.4 vs Claude Opus 4.6: OpenClaw agent real-world test data — Apiyi.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.ccino.org/p/qwen35-small-model-local-claude-level/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;开源小模型的临界点：Qwen 3.5 用 9B 参数打败了 120B 的对手 — 本站往期&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&#34;扩展阅读&#34;&gt;扩展阅读
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;了解 gpt-oss 技术细节&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.cometapi.com/use-gpt-5-4-in-openclaw-benfits-configuration--best-practice/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GPT-OSS Benefits, Configuration &amp;amp; Best Practice — CometAPI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openai.com/open-models/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI Open Models 官方页面&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.databricks.com/blog/introducing-openais-new-open-models-databricks&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Introducing OpenAI&amp;rsquo;s New Open Models on Databricks — Databricks Blog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;开源 LLM 竞争全景&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://contabo.com/blog/open-source-llms/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Best Open Source LLMs: Complete 2026 Guide — Contabo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://pinggy.io/blog/top_5_local_llm_tools_and_models/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Top 5 Local LLM Tools and Models in 2026 — Pinggy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://till-freitag.com/en/blog/open-source-llm-comparison&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Open-Source LLMs Compared 2026: 20+ Models — Till Freitag&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;DeepSeek 如何改变了这场游戏&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.ccino.org/p/openclaw-joins-openai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;一个月爆火，被 OpenAI 收入麾下——开源 AI Agent 的命运转折 — 本站往期&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.ccino.org/p/local-ai-vs-cloud-2026/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;本地 AI 的 2026 抉择：2 万块的显卡到底值不值？— 本站往期&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>&#34;告别瞎猜：比 Vibe Coding 快 100 倍还靠谱的 Spec Toolkit 实操指南&#34;</title>
        <link>https://blog.ccino.org/p/spec-toolkit-ends-vibe-coding-2026/</link>
        <pubDate>Sun, 15 Mar 2026 21:14:22 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/spec-toolkit-ends-vibe-coding-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/spec-toolkit-ends-vibe-coding-2026/imgs/cover.png" alt="Featured image of post &#34;告别瞎猜：比 Vibe Coding 快 100 倍还靠谱的 Spec Toolkit 实操指南&#34;" /&gt;&lt;p&gt;如果说 2025 年属于 Vibe Coding（凭感觉编程），那么到了 2026 年，很多开发者已经开始为这种“感觉”买单了。&lt;/p&gt;
&lt;p&gt;前段时间 Reddit 的 &lt;code&gt;r/ClaudeAI&lt;/code&gt; 版块有一个超火的帖子：&lt;strong&gt;《Why the majority of vibe coded projects fail》&lt;/strong&gt;（为什么大多数凭感觉写的项目最后都黄了），单帖狂揽近 6000 赞。更扎心的是，最新研究数据显示：&lt;strong&gt;AI 生成代码的安全漏洞，竟然是人类手写代码的 2.74 倍。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;我们曾以为靠喝着咖啡、用自然语言和 AI 闲聊几句就能写出完美应用，但现实是：**速度虽然爽了，但工程质量却在崩塌。**当项目超过 10 个文件，或者引入稍微复杂的业务逻辑时，AI 就开始上下文错乱、胡编乱造，逼得你不得不花比写代码多一倍的时间去 Debug。&lt;/p&gt;
&lt;p&gt;如果你也正处于这种“和 AI 互相折磨”的瓶颈期，那么 YouTube 技术频道 WorldofAI 最近爆火的一套方法论绝对能救你——&lt;strong&gt;它叫 Spec Toolkit。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;今天，我们就来聊聊这套号称“终结 Vibe Coding”、能将 AI 编程效率与质量提升 100 倍的最佳实践。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;1-vibe-coding-输在哪了&#34;&gt;1. Vibe Coding 输在哪了？
&lt;/h2&gt;&lt;p&gt;Vibe Coding 的核心是“Chat（聊天）”：你想到哪写到哪，遇到报错就把错误信息扔给 AI，让它再猜一次。&lt;/p&gt;
&lt;p&gt;这种做法在写个贪吃蛇、或者几十行的小脚本时简直是魔法。但它的致命缺陷在于&lt;strong&gt;缺乏全局架构约束&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;AI 虽然聪明，但它本质上是一个“预测下一个词”的概率模型。当你不给它清晰的上下文和边界时，它就会默认走“最省事”或者“最常见”的路径——甚至不惜引入已被淘汰的库或者藏个安全漏洞。&lt;/p&gt;
&lt;p&gt;可以说，&lt;strong&gt;Vibe Coding 是把“系统设计”的压力完全推给了 AI，而目前的 AI 还扛不住这个重任。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/spec-toolkit-ends-vibe-coding-2026/imgs/metaphor.png&#34;
	width=&#34;640&#34;
	height=&#34;640&#34;
	srcset=&#34;https://blog.ccino.org/p/spec-toolkit-ends-vibe-coding-2026/imgs/metaphor_hu_77c418f86e567153.png 480w, https://blog.ccino.org/p/spec-toolkit-ends-vibe-coding-2026/imgs/metaphor_hu_1c29da1afe1f0469.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Vibe Coding的混乱与Spec Toolkit的严谨对比&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;2-什么是-spec-toolkit&#34;&gt;2. 什么是 Spec Toolkit？
&lt;/h2&gt;&lt;p&gt;Spec Toolkit 其实并非一个虚无缥缈的概念，最具代表性的是&lt;strong&gt;官方开源项目 GitHub Spec Kit&lt;/strong&gt;。它的核心思路是将“规格驱动开发（Spec-Driven Development, SDD）”引入 AI 编程，用以取代随意的 Vibe Coding。&lt;/p&gt;
&lt;p&gt;它要求把“写代码”和“做设计”在时间上彻底分开。在让 AI 敲下一行代码之前，你必须先让它明确无误地理解需求。它的核心哲学是：&lt;strong&gt;让 Specification（规格说明书）变成可执行的工程实体，而不仅仅是给人看的文档。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;这就像是去盖房子：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Vibe Coding 是在现场对施工队大喊：“给我在这砌一堵墙，哦不对，稍微往左一点，这里加个窗户！”&lt;/li&gt;
&lt;li&gt;Spec Toolkit 则是先画好精确的蓝图和施工图纸，然后告诉包工头：“按照图纸，一毫米都别差地给我建起来。”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一旦你写好了完美的 Spec，或者利用工具拆解了完美的 Spec，AI 的执行成功率几乎是 100%，不仅一次性跑通，而且架构清晰，完全符合你的长期维护需求。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;3-实操一份完美的手写-spec-长什么样&#34;&gt;3. 实操：一份完美的手写 Spec 长什么样？
&lt;/h2&gt;&lt;p&gt;写 Spec 并不意味着你要重新去写几万字的老派软件工程文档。一份符合现代 AI Agent 胃口的 Spec 应该短小精悍，重点突出。如果你还不想用完整的自动化命令流，下面是一份你可以直接“抄作业”的&lt;strong&gt;极简 Spec 模板&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gh&#34;&gt;# [功能/模块名称] Specification
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 1. 核心目标 (Objective)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 一句话说明这个系统/功能要解决什么问题、达到什么效果。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 2. 技术栈约束 (Tech Stack &amp;amp; Constraints)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 前端：React 18 + TailwindCSS
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 后端：Node.js + Express
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 数据库：PostgreSQL
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 强制要求：禁止使用 xxx 库，必须使用 ES6+ 语法。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 3. 数据结构 (Data Models)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[定义核心表结构或 JSON 格式，AI 对数据结构非常敏感]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; User: { id, name, email, role }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Task: { id, user_id, status, created_at }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 4. 核心逻辑流程 (Business Logic)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;1.&lt;/span&gt; 用户发起请求时，必须先通过 Auth 中间件校验。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;2.&lt;/span&gt; 数据入库前需要做 x 和 y 字段的防注入处理。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;3.&lt;/span&gt; 成功后，返回 200 并携带 Token；失败返回 400 及具体错误码。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 5. 边界情况与错误处理 (Edge Cases)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 如果网络超时怎么处理？
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 如果用户连续高频点击怎么处理？
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;你只需要花 5-10 分钟写好这个文档，然后把它连同任务一起扔给 AI，剩下的就是见证奇迹的时刻。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;4-如何搭配-claude-code--cursor-完美集成&#34;&gt;4. 如何搭配 Claude Code / Cursor 完美集成？
&lt;/h2&gt;&lt;p&gt;得益于开源生态，Spec Kit 本身就是“Agent 无关（Agent-agnostic）”的，但它和 &lt;strong&gt;Anthropic 官方的终端神器 Claude Code&lt;/strong&gt; 结合起来，堪称当前最强的工作流组合！&lt;/p&gt;
&lt;p&gt;你不必只靠手写 Markdown，而是可以通过集成的指令，在 Claude Code 中直接执行标准化的 SDD (规格驱动) 流程：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;🌟 在 Claude Code 工作流中：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;引入 GitHub Spec Kit 后，你可以直接在 Claude Code 的终端里按照以下四步核心指令来驱动整个项目构建：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;写需求 (&lt;code&gt;/speckit.specify&lt;/code&gt;)&lt;/strong&gt;：
你先输入宽泛的想法，Claude Code 会调用这个指令扮演架构师，反问你关键的业务细节，并帮你自动生成严谨需求规格文档。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;定实现 (&lt;code&gt;/speckit.plan&lt;/code&gt;)&lt;/strong&gt;：
规格确立后，该指令会让 Claude 给出详细的技术实现路径（用什么库、怎么建表、接口长什么样），相当于输出“技术设计文档”。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;拆任务 (&lt;code&gt;/speckit.tasks&lt;/code&gt;)&lt;/strong&gt;：
Claude 会将“设计文档”拆解为一个个独立、可执行的小 Task 列表（Issue）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;去编码 (&lt;code&gt;/speckit.implement&lt;/code&gt;)&lt;/strong&gt;：
最后，Claude Code 开始像一个全自动的打工人，逐个消灭 Task 列表，执行代码生成、自动抓Bug、跑通测试用例，并在终端里全自动帮你做 git commit 和 pull request。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;🌟 在 Cursor 中：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;你可以将自己写的极简 Spec 保存为 &lt;code&gt;.cursorrules&lt;/code&gt; 文件，或者命名为 &lt;code&gt;feature-x-spec.md&lt;/code&gt; 放进项目中。然后在 Composer 中 艾特它：&lt;code&gt;@feature-x-spec.md 请严格使用 Spec Kit 理念，按照这个规则文档拆分 Task 并实现该功能。&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;通过这套工具链的加持，你在和 AI 的交互中，身份不再是“结对编程的平级同事”，而是真正变成了**“只审代码不写代码的 Tech Lead（技术总监）”**。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/spec-toolkit-ends-vibe-coding-2026/imgs/terminal.png&#34;
	width=&#34;640&#34;
	height=&#34;640&#34;
	srcset=&#34;https://blog.ccino.org/p/spec-toolkit-ends-vibe-coding-2026/imgs/terminal_hu_f2f9dfd4d370595a.png 480w, https://blog.ccino.org/p/spec-toolkit-ends-vibe-coding-2026/imgs/terminal_hu_c71a80a5f87c66a3.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Claude Code 结合 Spec Kit 终端执行示意&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;5-结语什么时候-vibe-什么时候-spec&#34;&gt;5. 结语：什么时候 Vibe 什么时候 Spec？
&lt;/h2&gt;&lt;p&gt;推崇 Spec Toolkit，并不意味着我们要彻底抛弃 Vibe Coding 的灵动与快乐。作为成熟的开发者，你需要学会在两者之间游走：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;用 Vibe Coding 搞探索&lt;/strong&gt;：当你在验证一个奇思妙想、写个一次性脚本、或者进行创意原型开发时，去 Vibe 吧，享受速度的快感！&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;用 Spec Toolkit 打仗&lt;/strong&gt;：只要这个项目你要维护超过 1 个月，只要这份代码涉及真实的用户数据，只要你想体验“一步到位”不反工的丝滑……请老老实实写/用 Spec。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;从今天起，别再和 AI 漫无目的地兜圈子了。&lt;strong&gt;把你脑子里的隐性知识，变成屏幕上的显性 Spec 规则。让 AI 成为你的手，而不是代替你的脑。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-参考引用与扩展阅读&#34;&gt;🔗 参考引用与扩展阅读
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;GitHub Spec Kit 官方开源库&lt;/strong&gt; (核心参考工具): &lt;a class=&#34;link&#34; href=&#34;https://github.blog/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub 官方项目解析&lt;/a&gt; &lt;em&gt;(注：指代由社区和官方背书的扩展规范)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Terminal 神器 Claude Code 介绍&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://claude.ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Code 官网及实践&lt;/a&gt; (可无缝继承 SDD 指令)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;YouTube: NEW Spec Toolkit Ends Vibe Coding!&lt;/strong&gt; - &lt;em&gt;WorldofAI&lt;/em&gt;: &lt;a class=&#34;link&#34; href=&#34;https://youtube.com/watch?v=7cOAayWzYDY&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Watch on YouTube&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reddit 热帖推荐&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/ClaudeAI/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Why the majority of vibe coded projects fail (r/ClaudeAI)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI 代码漏洞研究数据参考&lt;/strong&gt; (安全隐患上升2.74倍研究): &lt;a class=&#34;link&#34; href=&#34;https://www.technologyreview.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MIT Technology Review 2026: Generative coding breakthrough&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
</description>
        </item>
        <item>
        <title>146人做到单月$1亿ARR：Lovable凭什么成为Vibe Coding最大赢家？</title>
        <link>https://blog.ccino.org/p/lovable-vibe-coding-100m-arr/</link>
        <pubDate>Sat, 14 Mar 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/lovable-vibe-coding-100m-arr/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/lovable-vibe-coding-100m-arr/imgs/cover.png" alt="Featured image of post 146人做到单月$1亿ARR：Lovable凭什么成为Vibe Coding最大赢家？" /&gt;&lt;p&gt;三月初，一则数据在创业圈炸了锅：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Lovable，146人，单月新增$1亿ARR。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;ARR（年化经常性收入）是SaaS公司最核心的健康指标。单月新增$1亿ARR，意味着这家公司的年收入在一个月内跳涨了$12亿。&lt;/p&gt;
&lt;p&gt;人效比呢？$1亿÷146人≈&lt;strong&gt;68.5万美元/人/月&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;Stripe用了7年才到$1B ARR，Slack用了5年，Zoom用了9年。Lovable从2024年2月正式上线到现在，不到两年。&lt;/p&gt;
&lt;p&gt;同期，Cursor刚宣布$2B ARR、$29.3B估值；v0拥有400万用户并完成全栈平台升级。整个Vibe Coding赛道的市值在几个月内从$47亿涨到了……没人说得清。&lt;/p&gt;
&lt;p&gt;这篇文章想搞清楚三件事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Lovable到底是谁，怎么起来的？&lt;/li&gt;
&lt;li&gt;Vibe Coding这张牌，是谁在赢、谁在输？&lt;/li&gt;
&lt;li&gt;这个故事，跟我们有什么关系？&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&#34;一从一个周末项目开始&#34;&gt;一、从一个周末项目开始
&lt;/h2&gt;&lt;p&gt;2023年，Anton Osika在斯德哥尔摩开车回家的路上，突然想到一个问题：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;「如果我用ChatGPT描述一个软件想法，它能不能直接写出来？」&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;那个周末，他做了一个实验。写了几百行代码，让AI把自然语言描述转换成可运行的Web应用，然后把它发到了GitHub，命名为「GPT Engineer」。&lt;/p&gt;
&lt;p&gt;他没想到，他醒来的时候，这个项目已经有了&lt;strong&gt;5万颗Star&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;收件箱里全是邮件，全是同一类人：不会写代码的创业者、设计师、产品经理、在校学生，他们说——&lt;/p&gt;
&lt;p&gt;&lt;em&gt;「我在脑子里有这个想法已经好几年了，但我不会编程，所以从来没有做出来。你的工具让我第一次把它做了出来。」&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;这是Osika后来常说的那句话的原型：&lt;strong&gt;「世界上99%最好的想法，被困在那些不会写代码的人脑子里。」&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;他决定全职做这件事。2023年11月，他和联合创始人Fabian Hedin在斯德哥尔摩注册了公司。Fabian的背景更神奇：从10岁开始创业，高中就卖掉了一家房产科技公司，后来参与开发了霍金的通讯界面。&lt;/p&gt;
&lt;p&gt;他们第一次把产品改成付费产品，叫「GPT Engineer App」，上线了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;失败了。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;第二次，重做，上线了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;又失败了。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;问题出在品牌：「GPT Engineer」这个名字让用户觉得这是OpenAI的东西，或者这是给工程师用的工具——两个方向都跑偏了。他们想要的用户恰恰是&lt;strong&gt;不会编程的人&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;2024年12月，他们做了一个决定：改名。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Lovable&lt;/strong&gt;，正式上线。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;二60天1000万arr&#34;&gt;二、60天，$1000万ARR
&lt;/h2&gt;&lt;p&gt;改名后第60天，Lovable宣布达到$1000万ARR。&lt;/p&gt;
&lt;p&gt;15个人做到的。&lt;/p&gt;
&lt;p&gt;这是「增长神话」里的教科书案例：找对用户、找对产品、找对名字。三件事对了，数字会自己跑起来。&lt;/p&gt;
&lt;p&gt;Lovable的核心差异化只有一个：&lt;strong&gt;它是给不会写代码的人用的&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;你描述你想做什么，Lovable给你生成一个完整的React Web应用，内置Supabase认证和数据库，可以直接上线。不需要你懂Node.js，不需要你懂SQL，不需要你懂任何技术栈。&lt;/p&gt;
&lt;p&gt;相比之下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cursor&lt;/strong&gt;是给专业开发者用的——你已经会写代码，Cursor帮你写得更快&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;v0&lt;/strong&gt;是Vercel出品，给懂前端框架的开发者生成组件&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bolt.new&lt;/strong&gt;定位介于两者之间，但UI质量被普遍认为不如Lovable&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Replit&lt;/strong&gt;功能最全，但入门门槛偏高&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Lovable的UI审美质量，是被反复提到的核心竞争力。同样描述一个产品，Lovable生成的界面比其他工具「好看」，而「好不好看」对非技术用户来说，往往就是「能不能用」的全部。&lt;/p&gt;
&lt;p&gt;2025年2月，Accel领投Lovable $2亿A轮，估值$18亿，创斯德哥尔摩历史上最大A轮纪录。&lt;/p&gt;
&lt;p&gt;2025年11月，Lovable宣布$2亿ARR，估值超$60亿。&lt;/p&gt;
&lt;p&gt;2026年3月，&lt;strong&gt;单月新增$1亿ARR，团队146人&lt;/strong&gt;。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;三vibe-coding赛道的全景&#34;&gt;三、Vibe Coding赛道的全景
&lt;/h2&gt;&lt;p&gt;光看Lovable不够，来看整张牌桌。&lt;/p&gt;
&lt;h3 id=&#34;这个市场到底多大&#34;&gt;这个市场到底多大？
&lt;/h3&gt;&lt;p&gt;2026年，Vibe Coding（AI辅助应用构建）市场规模达到**$47亿**，预计2027年增长到$123亿——不到18个月，翻将近三倍。&lt;/p&gt;
&lt;p&gt;全球开发者在AI编码工具上的总支出：&lt;strong&gt;$150亿&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id=&#34;主要玩家&#34;&gt;主要玩家
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;工具&lt;/th&gt;
          &lt;th&gt;ARR&lt;/th&gt;
          &lt;th&gt;估值&lt;/th&gt;
          &lt;th&gt;核心用户&lt;/th&gt;
          &lt;th&gt;特色&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Cursor&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;$20亿&lt;/td&gt;
          &lt;td&gt;$293亿&lt;/td&gt;
          &lt;td&gt;专业开发者&lt;/td&gt;
          &lt;td&gt;IDE级深度集成，代码补全天花板&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Lovable&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;$12亿+&lt;/td&gt;
          &lt;td&gt;$66亿&lt;/td&gt;
          &lt;td&gt;非技术创始人/设计师&lt;/td&gt;
          &lt;td&gt;UI质量、零代码体验&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Replit&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;~$1亿&lt;/td&gt;
          &lt;td&gt;未公开&lt;/td&gt;
          &lt;td&gt;学生/入门开发者&lt;/td&gt;
          &lt;td&gt;全功能云IDE，Agent最强&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;v0&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;未公开&lt;/td&gt;
          &lt;td&gt;Vercel旗下&lt;/td&gt;
          &lt;td&gt;前端开发者&lt;/td&gt;
          &lt;td&gt;代码质量最高(9/10)，Next.js生态&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Bolt.new&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;未公开&lt;/td&gt;
          &lt;td&gt;StackBlitz旗下&lt;/td&gt;
          &lt;td&gt;中间层用户&lt;/td&gt;
          &lt;td&gt;速度最快，28分钟出原型&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/lovable-vibe-coding-100m-arr/imgs/vibe-coding-landscape.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/lovable-vibe-coding-100m-arr/imgs/vibe-coding-landscape_hu_ace65425b3c66331.png 480w, https://blog.ccino.org/p/lovable-vibe-coding-100m-arr/imgs/vibe-coding-landscape_hu_9257f91fcec019f1.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Vibe Coding 赛道格局 2026&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;Cursor和Lovable各占了这张牌桌上最重要的两个席位——&lt;strong&gt;专业开发者市场&lt;/strong&gt;和&lt;strong&gt;非技术用户市场&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;有趣的是，Replit的增长曲线最能说明这个赛道的爆发性：推出Agent之后，收入从$1000万飙升到$1亿，用了不到9个月。&lt;/p&gt;
&lt;h3 id=&#34;为什么是现在&#34;&gt;为什么是现在？
&lt;/h3&gt;&lt;p&gt;2023年之前，「拖拽生成App」这件事已经被很多公司做过——Bubble、Webflow、Softr。为什么Vibe Coding工具现在才爆发？&lt;/p&gt;
&lt;p&gt;关键变量是&lt;strong&gt;底层模型的飞跃&lt;/strong&gt;。Claude Opus 4.6、GPT-5系列的代码生成能力，比两年前的模型在复杂任务上强了一个数量级以上。上下文窗口扩展到了百万Token级别，意味着AI可以「记住」更大的项目上下文。&lt;/p&gt;
&lt;p&gt;工具赶上了模型。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;四lovable的增长飞轮&#34;&gt;四、Lovable的增长飞轮
&lt;/h2&gt;&lt;p&gt;很多人想复盘Lovable的增长逻辑，但被最简单的东西忽视了：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Osika从一开始就把「目标用户」定义得极其精准。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;他不想服务程序员，他要服务的是那些&lt;strong&gt;有想法、没代码能力的人&lt;/strong&gt;。这个用户群体有几个特点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;痛点极深&lt;/strong&gt;：有了想法却无法执行，是一种非常具体的挫败感&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;付费意愿高&lt;/strong&gt;：创业者、产品经理、设计师通常有预算，且愿意为「实现想法」付钱&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;病毒传播强&lt;/strong&gt;：「我用AI做了一个App」这类内容天然适合在社交媒体传播&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;增长飞轮是这样转的：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/lovable-vibe-coding-100m-arr/imgs/growth-flywheel.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/lovable-vibe-coding-100m-arr/imgs/growth-flywheel_hu_e247d08ab9a2d1d9.png 480w, https://blog.ccino.org/p/lovable-vibe-coding-100m-arr/imgs/growth-flywheel_hu_e8a2dfc67558261a.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Lovable 增长飞轮&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;Osika曾说，Lovable的&lt;strong&gt;Day 30留存率达到85%&lt;/strong&gt;，高过ChatGPT。这个数字如果属实，意味着大多数用户在用了一个月之后仍然在活跃使用——对于一个「玩具感」很强的工具来说，这极其罕见。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;五不能不提的暗面&#34;&gt;五、不能不提的暗面
&lt;/h2&gt;&lt;p&gt;这张图的另一面，正在浮现。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CodeRabbit的数据&lt;/strong&gt;：AI生成代码的bug密度，是人工代码的&lt;strong&gt;1.7倍&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Guardio Labs的发现&lt;/strong&gt;：研究人员在Lovable上发现了一种叫「VibeScamming」的攻击方式——通过精心设计的prompt，可以诱导AI生成含有后门的代码。Lovable生成的代码在这类攻击中最脆弱。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Morning Brew的调查&lt;/strong&gt;：多家企业表示，正在花大量工程师时间修复AI生成代码中的bug。「AI写得快，修得慢」成为新的技术债务。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Karpathy的转向&lt;/strong&gt;：Vibe Coding这个词的发明者，近期公开表示Vibe Coding已经「过时」（passé），并提出新概念Agentic Engineering——强调工程纪律和人类监督的重要性。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/lovable-vibe-coding-100m-arr/imgs/dark-side-risks.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/lovable-vibe-coding-100m-arr/imgs/dark-side-risks_hu_6e2f7bc227a01a7e.png 480w, https://blog.ccino.org/p/lovable-vibe-coding-100m-arr/imgs/dark-side-risks_hu_d345ccc004874c3a.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Vibe Coding 的三大隐忧&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;这不是说Vibe Coding会消亡。而是说，这个赛道正在进入「从玩具到工具」的过渡期，用户的预期和产品的边界都在被重新定义。&lt;/p&gt;
&lt;p&gt;纽约时报3月刚发了一篇8000字的封面报道《Coding After Coders》，核心论点是：编程这个职业的定义正在被彻底改写。程序员未必消失，但「写代码」的含义已经不同了。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;六对国内的启示&#34;&gt;六、对国内的启示
&lt;/h2&gt;&lt;p&gt;这个故事在国内有没有复制空间？&lt;/p&gt;
&lt;p&gt;先看现状：&lt;strong&gt;国内Vibe Coding工具基本上是一片空白。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;扣子（Coze）、Manus、字节的豆包等在做Agent领域，但没有一个产品在做「非技术用户零代码构建App」这件事。&lt;/p&gt;
&lt;p&gt;原因可能有几个：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;用户结构不同&lt;/strong&gt;：国内小微创业者的付费习惯比硅谷弱，愿意为$20/月的SaaS工具付钱的用户池更小&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;监管风险&lt;/strong&gt;：AI生成代码部署上线，在国内面临更复杂的合规问题&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ToB vs ToC&lt;/strong&gt;：国内AI公司普遍在追ToB商业化，ToC用户的人效比模型暂时没人复制&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但有一个角度值得关注：&lt;strong&gt;微信小程序生态&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;微信小程序的技术栈相对标准化，如果有一个工具能做到「描述你想要的小程序，直接生成可上线版本」，目标用户是庞大的中小商家群体——这个用户池比硅谷的创业者市场大得多。&lt;/p&gt;
&lt;p&gt;有人在做这件事，但还没有人做到Lovable的产品质量和增长速度。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;结语&#34;&gt;结语
&lt;/h2&gt;&lt;p&gt;Lovable的故事，核心不是「AI很厉害」。&lt;/p&gt;
&lt;p&gt;它的核心是：&lt;strong&gt;一个人找到了一个被压抑了很久的真实需求，然后在AI能力刚好够用的时刻，做了一个足够好的产品。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;GPT Engineer那个周末的5万颗Star，已经告诉Osika答案了。他只是花了两年时间，把这个答案做成了可以赚钱的公司。&lt;/p&gt;
&lt;p&gt;146人，$12亿ARR，$66亿估值。&lt;/p&gt;
&lt;p&gt;你上一次见到这样的人效比是什么时候？&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;数据来源：&lt;a class=&#34;link&#34; href=&#34;https://www.techbuzz.ai/articles/lovable-adds-100m-arr-in-single-month-with-just&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Tech Buzz AI&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://technically.dev/posts/vibe-coding-tool-comparison&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Technically&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://www.lennysnewsletter.com/p/building-lovable-anton-osika&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Lenny&amp;rsquo;s Newsletter&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://www.inc.com/chloe-aiello/5-things-to-know-about-anton-osika-co-founder-of-the-vibe-coding-unicorn-lovable/91223446&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Inc Magazine&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://research.contrary.com/company/lovable&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Contrary Research&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>用 Claude 做无版权 YouTube 频道，我快变现了</title>
        <link>https://blog.ccino.org/p/claude-youtube-faceless-channel/</link>
        <pubDate>Thu, 12 Mar 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/claude-youtube-faceless-channel/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/claude-youtube-faceless-channel/imgs/cover.png" alt="Featured image of post 用 Claude 做无版权 YouTube 频道，我快变现了" /&gt;&lt;p&gt;&lt;em&gt;—— 一个 Reddit 热帖的方法复盘，2077 人点赞、428 条评论的副业路径&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;几天前，Reddit 的 r/ClaudeAI 有一个帖子悄悄爆了。&lt;/p&gt;
&lt;p&gt;发帖人说，他一直在「悄悄」运营一个 YouTube 频道——不露脸、不录音、不自己写脚本，靠 Claude 生成内容。就在他发帖的时候，这个频道正在接近 YouTube 商业变现门槛（1000 订阅 + 4000 小时观看时长）。&lt;/p&gt;
&lt;p&gt;帖子标题叫：&lt;em&gt;Been quietly building a faceless YouTube channel using Claude and I&amp;rsquo;m embarrassingly close to monetisation。&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;评论区炸了。2077 个赞，428 条评论，大量的「我也在做」和「你具体怎么搞的？」&lt;/p&gt;
&lt;p&gt;这篇文章，就来系统拆解这条路径。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;什么是无版权频道faceless-channel&#34;&gt;什么是无版权频道（Faceless Channel）？
&lt;/h2&gt;&lt;p&gt;先讲概念。&lt;/p&gt;
&lt;p&gt;「无版权频道」（Faceless Channel）是 YouTube 上一类不需要出镜的频道。创作者不露脸、不说话，内容通常由以下几部分构成：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;旁白（AI 配音）&lt;/strong&gt;：用 AI 生成语音，代替真人录音&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;视觉素材&lt;/strong&gt;：AI 生成图片、Pexels 免费素材、或 AI 生成视频&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;字幕和封面&lt;/strong&gt;：由工具自动生成&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类频道在 YouTube 上并不稀奇。知识科普类、纪录片风格、Top 10 榜单、放松音乐……大量播放量过百万的频道背后，根本没有一个「真人博主」。&lt;/p&gt;
&lt;p&gt;以前，做这类频道的门槛在于&lt;strong&gt;脚本&lt;/strong&gt;——你需要写出足够有吸引力的内容。现在，Claude 把这个门槛砍掉了。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;claude-在哪些环节替代人工&#34;&gt;Claude 在哪些环节替代人工？
&lt;/h2&gt;&lt;p&gt;用 Claude 做无版权频道，核心是构建一条「AI 内容流水线」，把制作流程尽可能自动化。以下是各环节的拆解：&lt;/p&gt;
&lt;h3 id=&#34;1-选题最重要也最容易被忽视&#34;&gt;1. 选题（最重要，也最容易被忽视）
&lt;/h3&gt;&lt;p&gt;很多人以为 AI 时代「内容质量」不重要了，其实&lt;strong&gt;选题比以前更重要&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;Claude 能帮你做的：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;提示词示例：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;帮我为一个英文 YouTube 频道生成 20 个选题，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;主题：个人理财 / 科学冷知识 / 历史事件
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;要求：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 每个选题要有标题党潜力（点击率高）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 适合 5-10 分钟视频
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 目标观众：25-40 岁英语母语用户
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 输出格式：标题 + 一句话核心卖点
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Claude 的建议通常还不够精准，但能快速给你 20 个方向，你再从中筛选 3-5 个真正值得做的。&lt;/p&gt;
&lt;p&gt;选题验证：把标题扔进 YouTube 搜索，看竞品视频的播放量分布。100 万以上竞品存在 = 市场需求有；但头部频道订阅超过 100 万 = 护城河高，新频道慎入。&lt;/p&gt;
&lt;h3 id=&#34;2-脚本claude-最擅长的环节&#34;&gt;2. 脚本（Claude 最擅长的环节）
&lt;/h3&gt;&lt;p&gt;这是 Claude 发挥最大价值的地方。&lt;/p&gt;
&lt;p&gt;一个 5-8 分钟的视频，对应大约 700-1000 字的旁白脚本。你需要告诉 Claude：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;提示词框架：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;为我写一个 YouTube 视频脚本，主题是：[XXX]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;要求：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 旁白风格，不是对话体
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 开头 30 秒必须有 Hook（让人想继续看）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 包含 3 个具体案例或数据点
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 每 1.5-2 分钟有一个小悬念或转折
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 结尾引导订阅（自然，不要太硬）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 总字数 800 字左右
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 语言：英文（或中文）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;一般第一稿有 60-70% 是可用的，你主要负责：核查数据是否准确、加一两句真实感强的句子、把太「AI味」的表达改掉。&lt;/p&gt;
&lt;h3 id=&#34;3-配音ai-工具claude-不直接参与&#34;&gt;3. 配音（AI 工具，Claude 不直接参与）
&lt;/h3&gt;&lt;p&gt;目前最常用的 AI 配音工具：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;工具&lt;/th&gt;
          &lt;th&gt;特点&lt;/th&gt;
          &lt;th&gt;价格&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;ElevenLabs&lt;/td&gt;
          &lt;td&gt;声音最自然，支持情绪调节&lt;/td&gt;
          &lt;td&gt;免费版受限，付费约 $5/月起&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Murf&lt;/td&gt;
          &lt;td&gt;多语言，适合商业风格&lt;/td&gt;
          &lt;td&gt;约 $29/月&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Play.ht&lt;/td&gt;
          &lt;td&gt;性价比高，有免费额度&lt;/td&gt;
          &lt;td&gt;$39/月&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Suno/Udio&lt;/td&gt;
          &lt;td&gt;用于背景音乐&lt;/td&gt;
          &lt;td&gt;免费版可用&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;建议先用 ElevenLabs 免费版测试，满意了再升级。&lt;/p&gt;
&lt;h3 id=&#34;4-画面素材&#34;&gt;4. 画面素材
&lt;/h3&gt;&lt;p&gt;这是最容易被低估的环节。粗糙的画面会直接拉低完播率。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;免版权视频素材&lt;/strong&gt;：Pexels、Pixabay（免费）；Artgrid、Storyblocks（付费，质量更高）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI 生成图片&lt;/strong&gt;：Midjourney、Ideogram、Flux（用于封面或无实景可用的场景）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI 生成视频&lt;/strong&gt;：Runway、Kling（价格较高，按需使用）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;关键技巧&lt;/strong&gt;：大部分知识类视频不需要高端素材。「人 + 文字 + 图表」的组合已经足够，重点是和旁白内容对应。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-youtube-faceless-channel/imgs/body-1.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-youtube-faceless-channel/imgs/body-1_hu_17fe2bf1334b8903.png 480w, https://blog.ccino.org/p/claude-youtube-faceless-channel/imgs/body-1_hu_e8534a095a71e20.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;AI 内容流水线：选题 → 脚本 → 配音 → 剪辑 → 变现&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;5-封面click-through-rate-的命门&#34;&gt;5. 封面（Click-Through Rate 的命门）
&lt;/h3&gt;&lt;p&gt;YouTube 算法推广的核心指标之一是点击率（CTR）。封面是否吸引人，直接决定推广是否启动。&lt;/p&gt;
&lt;p&gt;Claude 能做的：&lt;strong&gt;生成封面文案和配色建议&lt;/strong&gt;。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;提示词：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;为 YouTube 视频设计封面方案，视频主题：[XXX]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;要求：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 3 个封面方案
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 每个方案包含：主文案（5字内）、副文案、建议配色
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 风格参考：MrBeast 式对比强烈 / 冷静权威感 / 情绪共鸣
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;具体制图用 Canva 或 Adobe Express，按 Claude 给的方案执行。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;完整工具链总览&#34;&gt;完整工具链总览
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;选题：Claude → 人工筛选
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;脚本：Claude 生成 → 人工校验
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;配音：ElevenLabs
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;剪辑：CapCut / DaVinci Resolve（免费）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;素材：Pexels + Pixabay
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;封面：Claude 出方案 → Canva 制图
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;上传与SEO：VidIQ 或 TubeBuddy（分析关键词和标签）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;单个视频从零到上传，熟练后约 &lt;strong&gt;3-4 小时&lt;/strong&gt;。如果你把 SEO（标题/描述/标签优化）也交给 Claude，可以压到 2.5 小时左右。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;变现门槛与时间线参考&#34;&gt;变现门槛与时间线参考
&lt;/h2&gt;&lt;p&gt;YouTube 合作伙伴计划（YPP）的变现门槛：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;1000 订阅&lt;/strong&gt; + &lt;strong&gt;4000 小时观看时长&lt;/strong&gt;（过去 12 个月）&lt;/li&gt;
&lt;li&gt;或者：&lt;strong&gt;500 订阅&lt;/strong&gt; + &lt;strong&gt;3000 小时观看&lt;/strong&gt;（可开 Super Thanks，但无广告收入）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Reddit 那位作者的时间线大致是：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;坚持更新约 4-5 个月，每周 2-3 个视频，没有做任何付费推广，主要靠 YouTube 算法自然推送。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;这个速度算中等。影响速度的核心变量：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;选题赛道&lt;/strong&gt;的竞争度（冷门细分领域通常更快）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;视频完播率&lt;/strong&gt;（内容质量决定算法是否继续推送）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;更新频率&lt;/strong&gt;（每周 2+ 视频，让算法保持活跃信号）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;变现后的广告收入因频道话题而异。财经类 CPM 可以达到 $15-30，娱乐类可能只有 $2-5。一个月均 50 万播放的频道，广告收入大约在 &lt;strong&gt;$500-3000/月&lt;/strong&gt; 之间。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-youtube-faceless-channel/imgs/body-2.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-youtube-faceless-channel/imgs/body-2_hu_70d39104fa55128b.png 480w, https://blog.ccino.org/p/claude-youtube-faceless-channel/imgs/body-2_hu_a0a6f406e7465396.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;变现时间线：4-5个月坚持更新，达成1000订阅&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;你必须知道的风险&#34;&gt;你必须知道的风险
&lt;/h2&gt;&lt;h3 id=&#34;风险-1版权问题&#34;&gt;风险 1：版权问题
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;不要直接使用有版权的图片、视频、音乐&lt;/li&gt;
&lt;li&gt;YouTube 的 Content ID 系统非常灵敏，哪怕 5 秒的背景音乐都会被识别&lt;/li&gt;
&lt;li&gt;建议只用 Creative Commons 0（CC0）授权素材&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;风险-2平台对-ai-内容的态度&#34;&gt;风险 2：平台对 AI 内容的态度
&lt;/h3&gt;&lt;p&gt;YouTube 目前&lt;strong&gt;不禁止&lt;/strong&gt; AI 生成内容，但要求在视频设置中标注「含 AI 生成内容」（特别是真实感强的面孔或声音）。不标注可能导致视频被降流。&lt;/p&gt;
&lt;h3 id=&#34;风险-3内容质量下降&#34;&gt;风险 3：内容质量下降
&lt;/h3&gt;&lt;p&gt;流水线生产容易陷入「量产垃圾」的陷阱。Claude 生成的脚本如果不经过认真校对，内容会有明显的重复感和空洞感。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;底线是&lt;/strong&gt;：你的介入不能低于 30%。选题判断、事实核查、关键句子的打磨，这些依然需要人来做。完全甩手给 AI，大概率做不起来。&lt;/p&gt;
&lt;h3 id=&#34;风险-4ai-配音的可识别感&#34;&gt;风险 4：AI 配音的「可识别感」
&lt;/h3&gt;&lt;p&gt;现在的听众对 AI 配音越来越敏感。完播率和留存率是算法的核心指标，如果你的配音让人出戏，数据会直接告诉你。&lt;/p&gt;
&lt;p&gt;建议选择 ElevenLabs 中语速、停顿和语调更自然的声音，避免过于「播报感」的音色。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;一句话总结&#34;&gt;一句话总结
&lt;/h2&gt;&lt;p&gt;这条路径的核心逻辑是：&lt;strong&gt;用 Claude 消灭脚本成本，用免费素材消灭制作成本，用 YouTube 算法做免费分发。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;你真正需要投入的，是时间、判断力和一点点审美。&lt;/p&gt;
&lt;p&gt;那位 Reddit 作者说，让他坚持下去的不是「快要变现了」，而是——他第一次感受到可以在下班后做一件真正属于自己的事，而且它在慢慢变大。&lt;/p&gt;
&lt;p&gt;这或许才是 AI 副业的真正价值：不是替你赚钱，而是把「开始」的门槛降到你能迈过去的高度。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;素材来源：&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/ClaudeAI/comments/1rqbrsm/been_quietly_building_a_faceless_youtube_channel/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reddit r/ClaudeAI 原帖&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>读者已经累了：为什么你的 AI 写作正在疯狂劝退受众？</title>
        <link>https://blog.ccino.org/p/ai-writing-fatigue-2026/</link>
        <pubDate>Tue, 10 Mar 2026 21:45:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/ai-writing-fatigue-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/ai-writing-fatigue-2026/imgs/ai_writer_fatigue_cover_v2.png" alt="Featured image of post 读者已经累了：为什么你的 AI 写作正在疯狂劝退受众？" /&gt;&lt;h1 id=&#34;读者已经累了为什么你的-ai-写作正在疯狂劝退受众&#34;&gt;读者已经累了：为什么你的 AI 写作正在疯狂劝退受众？
&lt;/h1&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/ai-writing-fatigue-2026/imgs/ai_writer_fatigue_cover_v2.png&#34;
	width=&#34;640&#34;
	height=&#34;640&#34;
	srcset=&#34;https://blog.ccino.org/p/ai-writing-fatigue-2026/imgs/ai_writer_fatigue_cover_v2_hu_c9cadee079ab67d4.png 480w, https://blog.ccino.org/p/ai-writing-fatigue-2026/imgs/ai_writer_fatigue_cover_v2_hu_bef5ea56fb22eaa8.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;ai_writer_fatigue_cover&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;“我到处都能看到 Claude 的写作痕迹，这开始让人感觉像戴了 AI 避孕套一样隔靴搔痒，我讨厌这种感觉。”&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这是 2026 年初夏在 Reddit 的 r/ClaudeAI 版块爆火的一篇帖子。毫无预兆地，这篇名为 &lt;em&gt;&amp;ldquo;I see Claude&amp;rsquo;s writing everywhere and it&amp;rsquo;s starting to feel like an AI condom, I hate it&amp;rdquo;&lt;/em&gt; 的声讨贴在短短几天内斩获了超过 1528 个赞和近 400 条满腔怒火的评论。&lt;/p&gt;
&lt;p&gt;这早已不是一次对某个具体 AI 工具提示词的业务缝补，而是吹响了内容创作领域**“去人格化”危机**的刺耳警报。当所有人都在用 AI 批量生成那张挑不出毛病的“标准脸”，受众的大脑终于触发了免疫排斥反应：我们不要无菌的完美，我们要流血流汗的真实。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;什么是ai-味一种难以言表的文本疲态&#34;&gt;什么是“AI 味”：一种难以言表的文本疲态
&lt;/h2&gt;&lt;p&gt;“AI 味”（AI-ness）并不是一个可以通过拼写检查器抓取的技术错误，而是一种让人在阅读进行到第三段时，忍不住叹气关掉页面的&lt;strong&gt;体验疲态&lt;/strong&gt;。无论是 ChatGPT 那套“总而言之（In conclusion）”、“且听我娓娓道来（Let&amp;rsquo;s delve into）”，还是 Claude 标志性的温和、理性、正确但毫无波澜的叙述节奏，读者在过去的一年半里，神经元已经完成了对这种模式的极速机器学习。&lt;/p&gt;
&lt;p&gt;现在，只要扫过前三行，读者就能闻到那种挥之不去的硅基合成塑料味。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/ai-writing-fatigue-2026/imgs/ai_writing_factory_1773150133948.png&#34;
	width=&#34;640&#34;
	height=&#34;640&#34;
	srcset=&#34;https://blog.ccino.org/p/ai-writing-fatigue-2026/imgs/ai_writing_factory_1773150133948_hu_6040aaa8f591f8d9.png 480w, https://blog.ccino.org/p/ai-writing-fatigue-2026/imgs/ai_writing_factory_1773150133948_hu_20884bf16ac5c10c.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;ai_writing_factory&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;典型的“AI 味”特征到底长什么样？&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;强迫症般的匀称结构&lt;/strong&gt;：每一段都严格遵循“主题句-支撑细节-过渡转折-四平八稳的小结”这一八股文结构。没有短促停顿的错落，也没有突发奇想的插话。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;毫无棱角的“正确废话”&lt;/strong&gt;：为了不犯错、不冒犯任何人，AI 极度渴望提供两端平衡的观点。它从不偏激，但代价是彻底丧失了破局的洞察力和带有个人温度的爱憎。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;标签化的词汇滥用&lt;/strong&gt;：喜欢用大而无当的宏观词汇替代具体的微观动词。比如“这是至关重要的”、“起到了变革性的作用”、“毋庸置疑地成为了一道亮丽的风景线”——读完后你根本不知道它具体改变了什么。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;绝对的情感隔离&lt;/strong&gt;：文字像是在零下 20 度的真空实验室里精心调配出来的无菌营养液。它知道该在什么地方悲伤、什么地方激昂，但这种情绪是精密计算的，缺乏沾着泥土的颗粒感。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;正如那位愤怒的 Reddit 楼主的比喻，读这些文字就像“隔着避孕套感受世界”——绝对安全、绝对正确、绝不感染，但也绝没有任何直击灵魂的真实触碰感。&lt;/p&gt;
&lt;h2 id=&#34;reddit-用户的愤怒你们把灵魂抽干了&#34;&gt;Reddit 用户的愤怒：你们把灵魂抽干了
&lt;/h2&gt;&lt;p&gt;在帖子的评论区，近 400 条评论铺陈开了一场读者对内容创作者的集体声讨。这是一场对“平均化人类思想”的起义。&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&lt;em&gt;&amp;ldquo;It reads like a highly competent HR manual. Good for compliance, terminal for engagement.&amp;rdquo;&lt;/em&gt;
&lt;strong&gt;（这读起来就像一本极为专业的人力资源手册。对合规来说很好，对吸引力来说是绝症。）&lt;/strong&gt;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;这条处于前排的高赞评论一针见血。我们正在把本该生动有趣的内容，退化成一种工作汇报式的文书。&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&lt;em&gt;&amp;ldquo;The problem isn&amp;rsquo;t that AI writes badly. The problem is that it writes like nobody in particular. It has stripped the soul out of the text.&amp;rdquo;&lt;/em&gt;
&lt;strong&gt;（问题根本不在于 AI 写得很差。问题在于它写得不像任何一个具体存在的人。它把文字的灵魂给抽干了。）&lt;/strong&gt;&lt;/p&gt;

    &lt;/blockquote&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&lt;em&gt;&amp;ldquo;I instantly close any tab the moment I see &amp;lsquo;Let&amp;rsquo;s dive in&amp;rsquo;. It&amp;rsquo;s a waste of my time, life is too short to read averaged-out human thought.&amp;rdquo;&lt;/em&gt;
&lt;strong&gt;（一看到“让我们深入探讨”，我就会凭借第六感瞬间关掉网页。这是在浪费我的时间，生命太短暂了，实在不值得拿来阅读“经过平均计算的人类思想”。）&lt;/strong&gt;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;看清了吗？读者从来没有反感过文字本身的质量。他们愤怒的是&lt;strong&gt;作者的缺席&lt;/strong&gt;。当他们点开一篇文章时，他们期待的是与另一个大脑进行一次偶尔碰撞、偶尔赞同的神交，而不是花十分钟去倾听一台极高配置的概率预测机器寒暄敷衍。&lt;/p&gt;
&lt;h2 id=&#34;这不是工具的锅一场内容创作者的系统性堕落&#34;&gt;这不是工具的锅：一场内容创作者的系统性堕落
&lt;/h2&gt;&lt;p&gt;把这种现象仅仅归咎于“Claude 提示词没写好”、“Prompt 技巧不到位”是极其短视且推卸责任的做法。这其实暴露了一个系统性的创作困境。&lt;/p&gt;
&lt;p&gt;首先，&lt;strong&gt;大语言模型的天然属性决定了其原生输出必然是“概率上最安全的平均值”&lt;/strong&gt;。它们在预训练阶段就被打磨成符合大众认知、文法绝对完美的“六边形战士”。但遗憾的是，真正能刺痛读者、留下烙印的优秀内容，往往是反直觉的、带有某种强烈偏见的、甚至是带着作者私人情绪毛边的。&lt;/p&gt;
&lt;p&gt;其次，这是&lt;strong&gt;部分内容创作者被纵容出来的惰性&lt;/strong&gt;。许多人悄悄把 AI 当成了“廉价外包替身”，而不是“写作助理”。他们仅仅是在对话框里敲进去几个敷衍的关键词：“写一篇关于如何提高工作效率的文章，1000字左右”，然后对着生成结果一字不改地点击发送。&lt;/p&gt;
&lt;p&gt;当作者自己都不愿意在一篇文章里投入半点真情实感、连推敲词句的力气都省下时，凭什么奢求读者会在屏幕另一端给出任何真挚的共鸣反应？&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;所谓的“AI 味”，本质上就是人类创作者偷懒后，在案发现场留下的巨大鞋印。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/ai-writing-fatigue-2026/imgs/human_touch_writing_1773150148391.png&#34;
	width=&#34;640&#34;
	height=&#34;640&#34;
	srcset=&#34;https://blog.ccino.org/p/ai-writing-fatigue-2026/imgs/human_touch_writing_1773150148391_hu_49589a74119b21b6.png 480w, https://blog.ccino.org/p/ai-writing-fatigue-2026/imgs/human_touch_writing_1773150148391_hu_b23f0bd2dcc0395f.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;human_touch_writing&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;de-ai-编辑术如何在-ai-时代写出有人味的内容&#34;&gt;&amp;ldquo;De-AI 编辑术&amp;rdquo;：如何在 AI 时代写出有人味的内容？
&lt;/h2&gt;&lt;p&gt;我们无法、也不应该倒退回纯手工敲字的时代，但要在 AI 泛滥且同质化的洪流中存活下来，创作者必须重塑自己的工作流。你的文字必须“重新做人”。&lt;/p&gt;
&lt;p&gt;以下是一套经过实战检验的 &lt;strong&gt;“De-AI（去AI化）实操指南”&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. 带着哪怕是偏激的情感和经历去构建 Prompt&lt;/strong&gt;
绝对不要让 AI 为你“无中生有”。请告诉它你真实遇到过的糟糕经历、你不加掩饰的观点，哪怕是充满怨气的吐槽。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;❌ &lt;em&gt;错误方向&lt;/em&gt;：“写一篇关于如何提高工作效率的文章。”&lt;/li&gt;
&lt;li&gt;✅ &lt;em&gt;反 AI 味方向&lt;/em&gt;：“我上周末因为回复太多毫无意义的跨部门拉扯邮件，差点在工位上崩溃。后来我暴躁地删掉了一半的非必要会议并屏蔽了工作群，才活过来。根据我这段破防经历，用一种略带自嘲和虚脱的口吻写一篇效率反思，核心观点是‘对狗屁工作保持钝感’。”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;2. 暴力打破结构，注入人类的“瑕疵”&lt;/strong&gt;
要求 AI 放弃它最爱的“总分总”四段式布局。真实的人类说话是会有极短的短句、突然的停顿、自问自答甚至意犹未尽的留白的。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Prompt 加餐建议&lt;/em&gt;：“请大量使用口语化的短句，多用主动语态。允许使用稍微极端的形容词（但别用成语）。别在文章结尾搞升华主题和总结陈词，在最后一段直接戛然而止或者抛个反问结束。”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;3. 进行病态般地“杂草修剪”（The De-AI Edit）&lt;/strong&gt;
这是最关键的一步。拿到 AI 给的初稿后，你不能放松警惕，必须像修剪园林一样手动进行外科手术：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;物理消灭过渡词&lt;/strong&gt;：毫不留情地删掉所有的“在这个快速变化的时代”、“我们不可否认的是”、“深入了解后”、“最后但同样重要的是”。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;替换个人语汇&lt;/strong&gt;：把过于端正的主谓宾，替换成你自己平时说话使用的修辞。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;植入生活实体&lt;/strong&gt;：凭空加入一两个极其私人的、AI 永远编不出来的具体细节（比如“就像我邻居那只总在凌晨三点挠门的胖橘猫一样让人心烦”）。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;4. 转换主客场：把你当大脑，把 AI 当劳力&lt;/strong&gt;
最清醒的工作流，是你自己哪怕用最粗糙的大白话写出文章的骨架、原始素材和核心洞察（即所谓的“屎山代码”），然后让 AI 来做逻辑梳理、句法润色和错别字检查，而不是反过来给它关键词让它扩写。在这种模式下，文章的主干和灵魂永远无可替代地属于你。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;结语&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;不可否认，AI 彻底拉平了创作的及格线。在当前这个时间点，任何人都能在短短几秒钟内，生成一篇堪称完美的 80 分爆款文章。&lt;/p&gt;
&lt;p&gt;但这恰恰意味着，在这个被同质化、“完全正确”的塑料文字填满的内容世界里，那些带有人类真实体温的东西、带着不按常理出牌的口癖、甚至包含着一些逻辑瑕疵的“人味”，反而成了最稀缺的、千金难求的奢侈品。&lt;/p&gt;
&lt;p&gt;当所有人都在毫无破绽地提供机器级别的“正确”时，请去提供哪怕粗糙一点的“真实”。这才是你在接下来几年、在这个极度内卷的硅基时代的唯一免死金牌。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;参考资料与延伸阅读：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Reddit 原帖&lt;/strong&gt;：&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/ClaudeAI/comments/1rjeqg3/i_see_claudes_writing_everywhere_and_its_starting/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;I see Claude&amp;rsquo;s writing everywhere and it&amp;rsquo;s starting to feel like an AI condom, I hate it (r/ClaudeAI)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;相关讨论&lt;/strong&gt;：&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/ClaudeAI/comments/1rnhjrk/we_professional_developers_already_lost_the/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;We professional developers, already lost the battle against vibe coding? (r/ClaudeAI)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Claude Code 定时任务上线：你的 AI 程序员现在可以在你睡觉时工作了</title>
        <link>https://blog.ccino.org/p/claude-code-scheduled-tasks/</link>
        <pubDate>Tue, 10 Mar 2026 09:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/claude-code-scheduled-tasks/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/claude-code-scheduled-tasks/imgs/cover.png" alt="Featured image of post Claude Code 定时任务上线：你的 AI 程序员现在可以在你睡觉时工作了" /&gt;
    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;Anthropic just made Claude Code run without you. Scheduled tasks are live. This is a big deal.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;—— r/ClaudeAI，⬆️1144 赞，225 条评论&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;本周，Anthropic 悄悄推送了一个让开发者社区沸腾的更新。&lt;/p&gt;
&lt;p&gt;Claude Code 上线了 &lt;strong&gt;Scheduled Tasks（定时任务）&lt;/strong&gt; 功能——你现在可以设定一个任务，然后关闭屏幕去睡觉，让 Claude Code 在深夜独自完成它。&lt;/p&gt;
&lt;p&gt;这不是小功能。这是 Claude Code 从&amp;quot;你叫它干什么就干什么&amp;quot;升级成&amp;quot;你不在它也会干活&amp;quot;的转折点。&lt;/p&gt;
&lt;h2 id=&#34;等等这到底是个什么功能&#34;&gt;等等，这到底是个什么功能？
&lt;/h2&gt;&lt;p&gt;简单说：&lt;strong&gt;定时任务让 Claude Code 可以在指定时间自动运行，不需要你盯着屏幕。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;以前使用 Claude Code 的方式是这样的：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打开终端&lt;/li&gt;
&lt;li&gt;输入指令&lt;/li&gt;
&lt;li&gt;等待 Claude 完成&lt;/li&gt;
&lt;li&gt;看结果、调整、再输入&lt;/li&gt;
&lt;li&gt;循环往复&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;整个过程高度依赖你的&amp;quot;在场&amp;quot;。Claude Code 是个需要你喂饭的工具——只要你不开口，它就什么都不干。&lt;/p&gt;
&lt;p&gt;Scheduled Tasks 改变了这个逻辑。你定义一个任务和执行频率，Claude 就会按时自动启动、执行、输出结果。&lt;/p&gt;
&lt;p&gt;就像雇了一个程序员，但你不需要坐在旁边监督他——下班前交代好工作，第二天早上来看成果就好。&lt;/p&gt;
&lt;h2 id=&#34;两种模式两种用法&#34;&gt;两种模式，两种用法
&lt;/h2&gt;&lt;p&gt;Claude Code 的定时任务实际上有两种实现方式，适合不同场景：&lt;/p&gt;
&lt;h3 id=&#34;方式一桌面端持久任务desktop-scheduled-tasks&#34;&gt;方式一：桌面端持久任务（Desktop Scheduled Tasks）
&lt;/h3&gt;&lt;p&gt;这是功能的主角。&lt;/p&gt;
&lt;p&gt;打开 Claude Code 桌面应用，左侧边栏点击 &lt;strong&gt;Schedule&lt;/strong&gt;，再点 &lt;strong&gt;+ New Task&lt;/strong&gt;，填写以下信息：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;任务名称&lt;/strong&gt;：给这个任务起个名字&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;提示词&lt;/strong&gt;：告诉 Claude 要做什么&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;执行频率&lt;/strong&gt;：每小时/每天/自定义 cron 表达式&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;工作目录&lt;/strong&gt;：在哪个项目里执行&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;模型选择&lt;/strong&gt;：Sonnet 还是 Opus&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;权限模式&lt;/strong&gt;：允许 Claude 修改哪些内容&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;桌面端任务是&lt;strong&gt;持久的&lt;/strong&gt;——只要 Claude Code 应用开着，任务就会按时执行，重启也不会丢失。这是它和另一种方式最大的区别。&lt;/p&gt;
&lt;p&gt;还有一个实用细节：你可以开启 &lt;strong&gt;Worktree 隔离模式&lt;/strong&gt;。开启后，每次定时任务运行时，Claude 会在一个独立的 Git worktree 中执行，不会和你正在手动操作的主分支冲突。也就是说，Claude 在&amp;quot;影子分支&amp;quot;里干活，干完了你再合并——两条线互不干扰。&lt;/p&gt;
&lt;h3 id=&#34;方式二会话级任务cli-session-scoped&#34;&gt;方式二：会话级任务（CLI Session-Scoped）
&lt;/h3&gt;&lt;p&gt;这是给命令行用户准备的轻量版。&lt;/p&gt;
&lt;p&gt;在 Claude Code CLI 中，使用 &lt;code&gt;/loop&lt;/code&gt; 命令可以创建一个会话内的定时循环任务。它接受标准的 &lt;strong&gt;5 字段 cron 表达式&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;分钟 小时 日期 月份 星期
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;*/15 * * * *   → 每15分钟执行一次
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;0 9 * * 1-5    → 工作日早上9点执行
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;*/30 9-17 * * * → 工作时间每30分钟执行
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;和桌面端不同，会话级任务有以下限制：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;不跨会话&lt;/strong&gt;：关掉终端，任务就消失了&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;自动过期&lt;/strong&gt;：创建后 3 天自动删除（最后执行一次后销毁）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;上限 50 个&lt;/strong&gt;：每个会话最多 50 个任务&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;必须保持 idle&lt;/strong&gt;：只有 Claude Code 处于空闲状态时才会触发&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这种方式适合&amp;quot;今天调试期间每隔 15 分钟检查一次 CI 状态&amp;quot;这类短期任务。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-code-scheduled-tasks/imgs/two-modes.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-code-scheduled-tasks/imgs/two-modes_hu_d2e97834feabe921.png 480w, https://blog.ccino.org/p/claude-code-scheduled-tasks/imgs/two-modes_hu_3ce7e67ca1e6c1ce.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;桌面持久任务 vs CLI 会话任务对比&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;它能拿来干什么&#34;&gt;它能拿来干什么？
&lt;/h2&gt;&lt;p&gt;光有功能还不够，关键是用在哪里。以下是几个直接可用的场景：&lt;/p&gt;
&lt;h3 id=&#34;场景一自动化测试监控&#34;&gt;场景一：自动化测试监控
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;任务：每天凌晨 2 点
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;内容：运行完整的测试套件，如果有失败，整理测试报告
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      并列出最可能的失败原因
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;频率：0 2 * * *（每天凌晨 2 点）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;早上来公司打开电脑，测试报告已经在等你。Claude 不只是跑了测试，还给你分析了失败原因。&lt;/p&gt;
&lt;h3 id=&#34;场景二ci-流水线看护&#34;&gt;场景二：CI 流水线看护
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;任务：每 15 分钟
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;内容：检查 GitHub Actions 的最新运行状态，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      如果有失败的 job，自动尝试修复并提交 fix PR
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;频率：*/15 * * * *
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;你在专心开发，CI 红了也不需要你第一时间发现——Claude 在帮你盯着。&lt;/p&gt;
&lt;h3 id=&#34;场景三每日代码质量报告&#34;&gt;场景三：每日代码质量报告
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;任务：每天下午 5 点
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;内容：分析今天新增的代码，找出潜在的代码异味、
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      安全隐患、未处理的 TODO，生成 daily report.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;频率：0 17 * * 1-5（工作日下午5点）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;下班前三分钟看一眼今日代码质量报告，比 Code Review 更及时。&lt;/p&gt;
&lt;h3 id=&#34;场景四文档自动同步&#34;&gt;场景四：文档自动同步
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;任务：每次提交后（配合 Git hook 触发）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;内容：检查本次变更是否影响 API 或接口，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      如果有，自动更新对应的 Markdown 文档
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;代码改了，文档跟着自动更新——告别&amp;quot;文档永远落后一步&amp;quot;的问题。&lt;/p&gt;
&lt;h3 id=&#34;场景五依赖安全扫描&#34;&gt;场景五：依赖安全扫描
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;任务：每周一早上 8 点
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;内容：扫描 package.json / requirements.txt，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      检查已知 CVE，如果发现高危漏洞，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      尝试升级依赖并运行测试验证
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;频率：0 8 * * 1（每周一早上8点）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;每周开始工作前，已经确认过依赖没有高危漏洞——安全审计变成了例行公事。&lt;/p&gt;
&lt;h2 id=&#34;它背后是怎么工作的&#34;&gt;它背后是怎么工作的？
&lt;/h2&gt;&lt;p&gt;这里有个重要的认知升级值得说清楚。&lt;/p&gt;
&lt;p&gt;Scheduled Tasks 并不是简单的&amp;quot;定时运行一段 shell 脚本&amp;quot;。它用的是和 Claude Code 完全相同的 &lt;strong&gt;Agentic 架构&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;任务触发 → Claude 理解意图 → &lt;strong&gt;制定计划&lt;/strong&gt; → &lt;strong&gt;调用工具&lt;/strong&gt;（文件读写、shell 命令、MCP 服务器）→ &lt;strong&gt;修改文件&lt;/strong&gt; → 输出结果&lt;/p&gt;
&lt;p&gt;Claude 不是在机械执行一条命令，而是在&lt;strong&gt;思考、规划、执行&lt;/strong&gt;一整套工作流。这意味着它能处理有条件判断的任务——&amp;ldquo;如果测试失败就这样，如果通过就那样&amp;rdquo;——而不只是无脑地跑一个脚本。&lt;/p&gt;
&lt;p&gt;Anthropic 在官方文档中明确说明：Scheduled Tasks 让 Claude 变成了一个&amp;quot;&lt;strong&gt;background worker&lt;/strong&gt;（后台工作者）&amp;quot;，而不是&amp;quot;等待指令的助手&amp;quot;。&lt;/p&gt;
&lt;p&gt;这个词选得很准确。&lt;/p&gt;
&lt;h2 id=&#34;和-n8n--zapier-有什么本质区别&#34;&gt;和 n8n / Zapier 有什么本质区别？
&lt;/h2&gt;&lt;p&gt;看到定时任务，很多人可能第一反应是：这不就是自动化工作流工具（n8n、Zapier、Make）一直在做的事吗？&lt;/p&gt;
&lt;p&gt;有区别，而且区别不小。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;维度&lt;/th&gt;
          &lt;th&gt;n8n / Zapier&lt;/th&gt;
          &lt;th&gt;Claude Code Scheduled Tasks&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;任务定义方式&lt;/td&gt;
          &lt;td&gt;可视化拖拽连线&lt;/td&gt;
          &lt;td&gt;自然语言描述意图&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;执行逻辑&lt;/td&gt;
          &lt;td&gt;固定节点、固定路径&lt;/td&gt;
          &lt;td&gt;AI 动态推理、灵活应变&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;处理异常&lt;/td&gt;
          &lt;td&gt;需要预定义错误分支&lt;/td&gt;
          &lt;td&gt;Claude 自主判断如何处理&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;代码理解能力&lt;/td&gt;
          &lt;td&gt;几乎没有&lt;/td&gt;
          &lt;td&gt;核心能力&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;上手门槛&lt;/td&gt;
          &lt;td&gt;中等（需要学平台）&lt;/td&gt;
          &lt;td&gt;低（说人话就行）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;适合场景&lt;/td&gt;
          &lt;td&gt;结构化数据流、API 对接&lt;/td&gt;
          &lt;td&gt;代码分析、智能决策、复杂推理&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;简单说：n8n 适合&amp;quot;把 A 的数据搬到 B&amp;quot;这种结构化任务；Claude Code Scheduled Tasks 适合&amp;quot;分析这段代码，根据结果做出判断，然后修改相关文件&amp;quot;这类需要理解和推理的任务。&lt;/p&gt;
&lt;p&gt;两者不是竞争关系，而是互补的。用 n8n 触发、用 Claude Code 执行——这才是最强组合。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;n8n 工作流（触发器）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Claude Code Scheduled Task（理解 + 执行）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;代码修改 / 文档更新 / 测试报告
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;有什么需要注意的&#34;&gt;有什么需要注意的？
&lt;/h2&gt;&lt;p&gt;诚实说，这个功能现在还有一些限制和注意事项：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. 桌面端必须保持开启&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;桌面持久任务需要 Claude Code 应用处于运行状态。如果你关机了，任务不会在服务器端排队，只会在你下次打开应用时追补执行（如果配置了&amp;quot;错过后补跑&amp;quot;的话）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. 权限需要提前设置好&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Claude Code 的任务执行是有权限边界的。如果你的任务需要访问某些目录或执行某些命令，需要提前在权限设置里配置好——不然任务触发时可能因为权限问题卡住。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. 提示词质量决定任务质量&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这条是 AI 工具的通病，但 Scheduled Tasks 里更明显：因为你不在场，Claude 理解错了任务意图也不会有人纠正。写清楚、写具体，是确保任务按预期执行的关键。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;一个好的定时任务提示词应该包含&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;明确的触发条件或检查目标&lt;/li&gt;
&lt;li&gt;期望的输出格式（报告/PR/修改文件）&lt;/li&gt;
&lt;li&gt;失败时的处理方式&lt;/li&gt;
&lt;li&gt;不应该修改的范围（&amp;ldquo;不要动 main 分支的任何内容&amp;rdquo;）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;4. 会话级任务 3 天后自动消失&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果你用的是 CLI &lt;code&gt;/loop&lt;/code&gt; 模式，别忘了 3 天后任务自动失效。需要持久运行的任务，务必用桌面端创建。&lt;/p&gt;
&lt;h2 id=&#34;它意味着什么&#34;&gt;它意味着什么？
&lt;/h2&gt;&lt;p&gt;我想在这里说一个更大的背景。&lt;/p&gt;
&lt;p&gt;过去两年，AI 编程工具的进化路径基本是这样的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;2023&lt;/strong&gt;：AI 辅助写代码（GitHub Copilot 时代，自动补全）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2024&lt;/strong&gt;：AI 替你写大段代码（Claude、GPT-4、Cursor 时代）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2025&lt;/strong&gt;：AI 能完成一个完整功能（Claude Code、Devin 时代）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2026&lt;/strong&gt;：AI 开始自主规划、异步工作（Scheduled Tasks、Multi-Agent）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-code-scheduled-tasks/imgs/ai-evolution.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-code-scheduled-tasks/imgs/ai-evolution_hu_aeef6f35ad1dbb1b.png 480w, https://blog.ccino.org/p/claude-code-scheduled-tasks/imgs/ai-evolution_hu_e9f1bed1282af52.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;AI 编程工具进化时间线（2023→2026）&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;Scheduled Tasks 是&amp;quot;2026 阶段&amp;quot;的一个缩影。AI 编程工具不再只是&amp;quot;在你旁边帮你&amp;quot;，而是开始&amp;quot;在你不在的时候帮你&amp;quot;。&lt;/p&gt;
&lt;p&gt;这两者的差距，就是&amp;quot;工具&amp;quot;和&amp;quot;Agent&amp;quot;的差距。&lt;/p&gt;
&lt;p&gt;Reddit 上有人说得很直白：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;这不只是功能更新。这是我第一次觉得 Claude Code 真的像个同事，而不只是个 Copilot。&amp;rdquo;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;我觉得这个描述很准确。&lt;/p&gt;
&lt;h2 id=&#34;怎么上手&#34;&gt;怎么上手？
&lt;/h2&gt;&lt;p&gt;如果你已经安装了 Claude Code 桌面应用（最新版），现在就可以试：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打开 Claude Code 桌面应用&lt;/li&gt;
&lt;li&gt;左侧边栏找到 &lt;strong&gt;&amp;ldquo;Schedule&amp;rdquo;&lt;/strong&gt; 选项（如果没有，检查是否需要更新版本）&lt;/li&gt;
&lt;li&gt;点击 &lt;strong&gt;&amp;quot;+ New Task&amp;quot;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;填写任务名称、提示词、频率&lt;/li&gt;
&lt;li&gt;选择工作目录&lt;/li&gt;
&lt;li&gt;保存，等待第一次触发&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;推荐的第一个任务&lt;/strong&gt;：每天早上 8 点，让 Claude 生成一份昨天 git log 的摘要，说明团队做了哪些改动。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;任务名：Daily Git Summary
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;提示词：查看过去 24 小时的 git log，总结主要改动，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        用中文写成一份 daily-report.md，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        格式：日期/修改者/改动摘要/需要关注的风险点
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;执行时间：0 8 * * 1-5（工作日早上 8 点）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;五分钟上手，立竿见影。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Claude Code 一直在向着同一个方向进化：让 AI 承担更多、更复杂、更自主的工作。&lt;/p&gt;
&lt;p&gt;Scheduled Tasks 是这条路上的一步——不是终点，但是个重要的转折。&lt;/p&gt;
&lt;p&gt;你的 AI 程序员现在不只是&amp;quot;随叫随到&amp;quot;，而是开始&amp;quot;主动干活&amp;quot;了。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;参考资料：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Anthropic. (2026). &lt;a class=&#34;link&#34; href=&#34;https://code.claude.com/docs/en/scheduled-tasks&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Run prompts on a schedule - Claude Code Docs&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;The Decoder. (2026). &lt;a class=&#34;link&#34; href=&#34;https://the-decoder.com/anthropic-turns-claude-code-into-a-background-worker-with-local-scheduled-tasks/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic turns Claude Code into a background worker with local scheduled tasks&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;VentureBeat. (2026). &lt;a class=&#34;link&#34; href=&#34;https://venturebeat.com/orchestration/claude-codes-tasks-update-lets-agents-work-longer-and-coordinate-across&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Code&amp;rsquo;s &amp;lsquo;Tasks&amp;rsquo; update lets agents work longer and coordinate across sessions&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;upadhyay, A. (2026). &lt;a class=&#34;link&#34; href=&#34;https://atalupadhyay.wordpress.com/2026/03/02/scheduled-tasks-how-to-put-claude-on-autopilot/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Scheduled Tasks: How to Put Claude on Autopilot&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Artificial Corner. (2026). &lt;a class=&#34;link&#34; href=&#34;https://artificialcorner.com/p/claude-automates&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How to Turn Claude into a 24/7 Employee&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;r/ClaudeAI. (2026). &lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/ClaudeAI/comments/1rna5mb/anthropic_just_made_claude_code_run_without_you/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic just made Claude Code run without you. Scheduled tasks are live.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Claude Code Release Notes. (2026). &lt;a class=&#34;link&#34; href=&#34;https://releasebot.io/updates/anthropic/claude-code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;March 2026 Updates&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>开源小模型的临界点：Qwen 3.5 用 9B 参数打败了 120B 的对手</title>
        <link>https://blog.ccino.org/p/qwen35-small-model-local-claude-level/</link>
        <pubDate>Sun, 08 Mar 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/qwen35-small-model-local-claude-level/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/qwen35-small-model-local-claude-level/imgs/cover.png" alt="Featured image of post 开源小模型的临界点：Qwen 3.5 用 9B 参数打败了 120B 的对手" /&gt;
    &lt;blockquote&gt;
        &lt;p&gt;用 1/13 的参数量，超越了更大的对手——这不是营销话术，是第三方 benchmark 的测试结果。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;2026 年 3 月 2 日，阿里 Qwen 团队悄悄发布了一个系列：Qwen 3.5 小模型（0.8B / 2B / 4B / 9B）。&lt;/p&gt;
&lt;p&gt;这是他们 16 天内推出的第 9 款模型。发布节奏之快，几乎没引起太多关注——直到测试数据出来。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Qwen3.5-9B 在第三方推理 benchmark 上，超越了 OpenAI 开源的 GPT-OSS-120B。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;120B 是 9B 的 13 倍参数。&lt;/p&gt;
&lt;p&gt;这不是说 9B 全面碾压 120B，而是说：在某些关键任务上，更小的模型已经达到甚至超越了更大的模型。这是一个信号——&lt;strong&gt;开源小模型正在接近一个能力临界点&lt;/strong&gt;。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;一16-天-9-款qwen-35-系列完整梳理&#34;&gt;一、16 天 9 款：Qwen 3.5 系列完整梳理
&lt;/h2&gt;&lt;p&gt;先看整张地图，搞清楚 Qwen 3.5 到底有什么：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;系列&lt;/th&gt;
          &lt;th&gt;参数规模&lt;/th&gt;
          &lt;th&gt;定位&lt;/th&gt;
          &lt;th&gt;适合场景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Small&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;0.8B / 2B&lt;/td&gt;
          &lt;td&gt;边缘设备、高吞吐低延迟&lt;/td&gt;
          &lt;td&gt;手机端、嵌入式、实时应用&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Small&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;4B&lt;/td&gt;
          &lt;td&gt;轻量多模态 Agent 基座&lt;/td&gt;
          &lt;td&gt;图文理解、轻量 AI 助手&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Small&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;9B&lt;/td&gt;
          &lt;td&gt;推理+逻辑旗舰&lt;/td&gt;
          &lt;td&gt;代码、数学、复杂问答&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Medium&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;14B / 32B&lt;/td&gt;
          &lt;td&gt;达到 Claude Sonnet 4.5 性能&lt;/td&gt;
          &lt;td&gt;专业级本地部署&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;本文重点说 Small 系列（0.8B-9B），因为这才是大多数人能跑起来的。&lt;/p&gt;
&lt;p&gt;全系列&lt;strong&gt;完全开源&lt;/strong&gt;，Hugging Face 和 ModelScope 直接下载，Base 和 Instruct 版本都有。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;二9b-为什么能打败-120b&#34;&gt;二、9B 为什么能打败 120B？
&lt;/h2&gt;&lt;p&gt;这是最反直觉的部分，值得说清楚。&lt;/p&gt;
&lt;p&gt;传统认知：参数越多 = 能力越强。这在早期是对的，但在 2026 年已经不够准确了。&lt;/p&gt;
&lt;p&gt;Qwen 3.5 用的是两个关键技术组合：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;① 混合专家架构（MoE）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;不是所有参数都同时工作。每次推理只激活一部分&amp;quot;专家&amp;quot;网络处理当前任务。9B 的&amp;quot;实际激活参数&amp;quot;可能只有 2-3B，但针对特定任务选对了专家，效果不差于全量激活的 30B 模型。&lt;/p&gt;
&lt;p&gt;这就像一个团队里有 9 个专家，每次只派最合适的 2-3 个上场——比派一个啥都会但哪个都不精通的 120 人大团队，特定任务上更高效。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;② 推理时计算（Test-Time Compute）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;模型在回答时会&amp;quot;多想几步&amp;quot;，通过内部推理链提升答案质量。这个机制让小模型在逻辑推理和数学题上的表现大幅提升，不再只靠参数记忆。&lt;/p&gt;
&lt;p&gt;所以 Qwen3.5-9B 超越 GPT-OSS-120B 的领域，主要集中在&lt;strong&gt;推理、逻辑、数学&lt;/strong&gt;——恰恰是这两个技术最能发力的地方。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/qwen35-small-model-local-claude-level/imgs/moe-architecture.png&#34;
	width=&#34;2400&#34;
	height=&#34;1792&#34;
	srcset=&#34;https://blog.ccino.org/p/qwen35-small-model-local-claude-level/imgs/moe-architecture_hu_5a745bd0eff8fa2.png 480w, https://blog.ccino.org/p/qwen35-small-model-local-claude-level/imgs/moe-architecture_hu_ddd7b3e9db4b4e06.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;MoE混合专家架构：9B为什么能打败120B&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;133&#34;
		data-flex-basis=&#34;321px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;三什么任务可以放心用本地小模型替代云端&#34;&gt;三、什么任务可以放心用本地小模型替代云端？
&lt;/h2&gt;&lt;p&gt;说清楚了技术，来说实际使用。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;✅ 适合用 Qwen3.5-9B 本地替代的场景：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;代码补全与调试&lt;/strong&gt;：高频、数据敏感、要求低延迟，本地跑最合适&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;结构化数据处理&lt;/strong&gt;：JSON 解析、格式转换、数据清洗&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;本地文档问答&lt;/strong&gt;：不想把内部文档发到云端&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数学计算与推理&lt;/strong&gt;：这是 9B 的强项之一&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;批量文本分类/摘要&lt;/strong&gt;：高吞吐场景，本地成本优势明显&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;❌ 还是建议用 Claude 的场景：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;超长文档分析（Claude 有 200K token 上下文，9B 模型一般 32K）&lt;/li&gt;
&lt;li&gt;复杂多轮创作（Claude 的指令遵循和写作质量仍有差距）&lt;/li&gt;
&lt;li&gt;图像理解（需要另外部署 VLM，麻烦且效果有差距）&lt;/li&gt;
&lt;li&gt;需要最新信息（本地模型有知识截止日期，Claude 有工具调用）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一句话原则：&lt;strong&gt;重复性、结构化、敏感的任务→本地；创意性、复杂、多模态的任务→Claude&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/qwen35-small-model-local-claude-level/imgs/task-routing.png&#34;
	width=&#34;2400&#34;
	height=&#34;1792&#34;
	srcset=&#34;https://blog.ccino.org/p/qwen35-small-model-local-claude-level/imgs/task-routing_hu_73cc1baca25d298.png 480w, https://blog.ccino.org/p/qwen35-small-model-local-claude-level/imgs/task-routing_hu_553d32711d15852b.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;本地vs云端任务分流：按任务类型智能选择&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;133&#34;
		data-flex-basis=&#34;321px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;四怎么在自己电脑上跑-qwen-35&#34;&gt;四、怎么在自己电脑上跑 Qwen 3.5
&lt;/h2&gt;&lt;p&gt;说点实际的。以 Qwen3.5-9B 为例，两种方式：&lt;/p&gt;
&lt;h3 id=&#34;方式一ollama推荐新手3-分钟搞定&#34;&gt;方式一：Ollama（推荐新手，3 分钟搞定）
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 安装 Ollama（官网下载或 brew install ollama）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 然后直接拉取运行：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama run qwen3.5:9b
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;就这样。Ollama 会自动下载模型（约 6GB），然后在本地起一个 API 服务，兼容 OpenAI 格式。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;硬件要求&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;最低：16GB 内存 + 集成显卡（纯 CPU 推理，较慢）&lt;/li&gt;
&lt;li&gt;推荐：16GB 内存 + 任意独显（8GB VRAM 以上流畅）&lt;/li&gt;
&lt;li&gt;最佳：独显 12GB VRAM 以上（RTX 3060 12GB / 4070 以上）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;方式二lm-studio图形界面适合不想命令行的用户&#34;&gt;方式二：LM Studio（图形界面，适合不想命令行的用户）
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;下载 LM Studio（免费，支持 Windows/Mac/Linux）&lt;/li&gt;
&lt;li&gt;搜索 &lt;code&gt;Qwen3.5-9B&lt;/code&gt;，点击下载&lt;/li&gt;
&lt;li&gt;加载模型，直接对话&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;LM Studio 还内置了 OpenAI 兼容 API 服务，可以直接接入 Cursor、VSCode 插件等工具。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;五和-claude-sonnet-45-对比差距在哪里够用吗&#34;&gt;五、和 Claude Sonnet 4.5 对比：差距在哪里，够用吗
&lt;/h2&gt;&lt;p&gt;坦诚地说：&lt;strong&gt;Qwen3.5-9B ≠ Claude Sonnet 4.5&lt;/strong&gt;，差距是真实存在的。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;维度&lt;/th&gt;
          &lt;th&gt;Qwen3.5-9B（本地）&lt;/th&gt;
          &lt;th&gt;Claude Sonnet 4.5（云端）&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;代码生成（简单任务）&lt;/td&gt;
          &lt;td&gt;★★★★☆&lt;/td&gt;
          &lt;td&gt;★★★★★&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;逻辑推理&lt;/td&gt;
          &lt;td&gt;★★★★☆&lt;/td&gt;
          &lt;td&gt;★★★★★&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;中文写作质量&lt;/td&gt;
          &lt;td&gt;★★★★☆&lt;/td&gt;
          &lt;td&gt;★★★★★&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;上下文长度&lt;/td&gt;
          &lt;td&gt;32K（有限）&lt;/td&gt;
          &lt;td&gt;200K（超大）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;多模态&lt;/td&gt;
          &lt;td&gt;需另配 VLM&lt;/td&gt;
          &lt;td&gt;原生支持&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;隐私&lt;/td&gt;
          &lt;td&gt;✅ 完全本地&lt;/td&gt;
          &lt;td&gt;❌ 上传云端&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;延迟&lt;/td&gt;
          &lt;td&gt;极低（无网络）&lt;/td&gt;
          &lt;td&gt;取决于网络&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;费用&lt;/td&gt;
          &lt;td&gt;电费（几乎为零）&lt;/td&gt;
          &lt;td&gt;按 token 计费&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;更新&lt;/td&gt;
          &lt;td&gt;手动下载新版&lt;/td&gt;
          &lt;td&gt;自动更新&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Qwen3.5-Medium 系列（14B/32B）才是真正达到 Claude Sonnet 4.5 水平的——但那需要更好的显卡（24GB VRAM），普通用户门槛稍高。&lt;/p&gt;
&lt;p&gt;对大多数人来说，Qwen3.5-9B 在&lt;strong&gt;日常代码辅助、文档处理、结构化任务&lt;/strong&gt;上已经够用，不必每次都去调用付费 API。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;这意味着什么&#34;&gt;这意味着什么
&lt;/h2&gt;&lt;p&gt;回到开头的问题：9B 打败 120B，这件事真正的意义是什么？&lt;/p&gt;
&lt;p&gt;不是说参数大的模型已经没用。而是说：&lt;strong&gt;&amp;ldquo;你需要多大的模型&amp;quot;这个问题，现在有了新的答案&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;过去，想要高质量的 AI 辅助，你要么付钱用云端 API，要么买一块很贵的显卡跑本地大模型。现在，一块主流显卡 + 一个开源小模型，能覆盖 70% 以上的日常 AI 需求。&lt;/p&gt;
&lt;p&gt;本地 AI 的门槛正在快速下降。&lt;/p&gt;
&lt;p&gt;Qwen 3.5 只是一个节点，不是终点。接下来的 6 个月，这条线还会继续移动。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;快速上手清单&#34;&gt;快速上手清单
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 确认显卡 VRAM：8GB 以上体验最好&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 安装 Ollama：&lt;code&gt;ollama run qwen3.5:9b&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 或下载 LM Studio，搜索 Qwen3.5&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 试跑代码补全任务，感受一下延迟&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 如果满意，把 Cursor/VSCode 的 AI 后端切换到本地 API&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;参考资料&#34;&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.marktechpost.com/2026/03/02/alibaba-just-released-qwen-3-5-small-models-a-family-of-0-8b-to-9b-parameters-built-for-on-device-applications/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Alibaba just released Qwen 3.5 Small models - MarkTechPost&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://venturebeat.com/technology/alibabas-new-open-source-qwen3-5-medium-models-offer-sonnet-4-5-performance&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Alibaba&amp;rsquo;s new open source Qwen3.5-Medium models offer Sonnet 4.5 performance - VentureBeat&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://simonwillison.net/2026/Mar/4/qwen/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Something is afoot in the land of Qwen - Simon Willison&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/QwenLM/Qwen3.5&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub QwenLM/Qwen3.5&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Claude Code 创始人工作流完全复盘：从病毒式传播到「编程已被解决」</title>
        <link>https://blog.ccino.org/p/claude-code-creator-workflow/</link>
        <pubDate>Thu, 05 Mar 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/claude-code-creator-workflow/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/claude-code-creator-workflow/imgs/cover.png" alt="Featured image of post Claude Code 创始人工作流完全复盘：从病毒式传播到「编程已被解决」" /&gt;&lt;p&gt;&lt;strong&gt;2026 年 1 月 3 日，Boris Cherny 发了一条帖子，让整个开发者社区集体沸腾。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;两个月后，他在播客里说出了更大的话：&amp;ldquo;编程基本上已经被解决了。&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Boris 是谁？就是造出 Claude Code 的那个人——Anthropic Staff Engineer，Claude Code 的创始工程师，现在是整个 Claude Code 团队的负责人。&lt;/p&gt;
&lt;p&gt;1 月 3 日那条帖子，他晒出了自己的日常工作流。&lt;/p&gt;
&lt;p&gt;VentureBeat 的报道标题直接写道：&amp;ldquo;The creator of Claude Code just revealed his workflow, and developers are losing their minds&amp;rdquo;（开发者们集体崩溃了）。&lt;/p&gt;
&lt;p&gt;震撼的不是什么黑科技，恰恰相反——&lt;strong&gt;因为他的配置&amp;quot;出奇地朴素&amp;quot;&lt;/strong&gt;（his words，原话）。&lt;/p&gt;
&lt;p&gt;但朴素背后有一套令人咋舌的工作结果：&lt;strong&gt;30 天内，259 个 Pull Request，497 次提交，4 万行代码新增，3.8 万行删除。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;所有代码，全部由 Claude Code 完成。&lt;/p&gt;
&lt;p&gt;一位用户在实现这套工作流后留下了这样一句话：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;这感觉更像在玩星际争霸，不是在写代码。&amp;rdquo;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;这篇文章是一次完整复盘：&lt;strong&gt;他 1 月 3 日说了什么，两个月里工具如何跟进，社区学到了什么，以及他 2 月在播客里透露的下一步。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-code-creator-workflow/imgs/cover.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-code-creator-workflow/imgs/cover_hu_2bf8ff9bc73b9786.png 480w, https://blog.ccino.org/p/claude-code-creator-workflow/imgs/cover_hu_41e8aa5eaf4b4ce1.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Claude Code 创始人工作流完全复盘：从病毒式传播到&amp;#34;编程已被解决&amp;#34;&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;第一件事他同时跑-10-15-个-claude&#34;&gt;第一件事：他同时跑 10-15 个 Claude
&lt;/h2&gt;&lt;p&gt;大多数人用 Claude Code 的方式是：打开一个窗口，提问，等回答，继续。&lt;/p&gt;
&lt;p&gt;Boris 不是这样的。&lt;/p&gt;
&lt;p&gt;他在终端里同时跑 5 个 Claude Code 会话，每个标签页都有编号（1、2、3、4、5），并配置了系统通知——哪个 session 需要他确认，通知就弹出来。&lt;/p&gt;
&lt;p&gt;与此同时，他在浏览器的 &lt;code&gt;claude.ai/code&lt;/code&gt; 里再跑 5-10 个会话。&lt;/p&gt;
&lt;p&gt;加起来同时运行着 &lt;strong&gt;10 到 15 个 Claude 实例&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;早上起来，他会在 iPhone 上启动几个新任务，让它们跑着，白天随时 check in。本地和 Web 之间用 &lt;code&gt;--teleport&lt;/code&gt; 命令把会话传送过去（这个功能在 1 月 7 日的 Claude Code 2.1.0 正式上线）。&lt;/p&gt;
&lt;p&gt;他对这个模式的定义很精准：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;&lt;strong&gt;我不把 AI 当一个工具来用，我把它当成一种可以调度的算力。分配它、排队给它、让它并行跑。&lt;/strong&gt;&amp;rdquo;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;一个值得注意的细节&lt;/strong&gt;（来自 InfoQ 的深度报道）：Boris 的每个本地 session 用的是独立的 &lt;strong&gt;git checkout&lt;/strong&gt;，而不是分支或 worktree——这是为了从根本上避免并行 session 之间的文件冲突。这也是他能放心并行跑十几个 session 的工程前提。&lt;/p&gt;
&lt;p&gt;另外他坦承：&lt;strong&gt;10-20% 的 session 会因为遇到意外情况被直接放弃&lt;/strong&gt;，这是正常损耗，并非失败。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;并行，才是 Claude Code 真正的超能力。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-code-creator-workflow/imgs/parallel-fleet.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-code-creator-workflow/imgs/parallel-fleet_hu_590c63180e142c5c.png 480w, https://blog.ccino.org/p/claude-code-creator-workflow/imgs/parallel-fleet_hu_19d3f7bf69bec450.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Boris 调度 10-15 个并行 Claude Session 的三端工作流&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;第二件事他只用-opus-45开启-thinking-模式&#34;&gt;第二件事：他只用 Opus 4.5，开启 Thinking 模式
&lt;/h2&gt;&lt;p&gt;他的模型选择很清晰：&lt;strong&gt;Opus 4.5 + thinking mode，全场景统一使用&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;有人可能会问——Sonnet 不是更快吗？&lt;/p&gt;
&lt;p&gt;Boris 的回答很有意思：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;Opus 4.5 虽然更大更慢，但它需要我纠正的次数更少。工具使用更准确。算下来，它反而更快。&amp;rdquo;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;这是一个&amp;quot;慢就是快&amp;quot;的逻辑。用更聪明的模型，少走弯路，总体时间更短。&lt;/p&gt;
&lt;p&gt;另一个角度：当你同时跑 10+ 个 session 时，每个 session 的等待时间都在并行消化，&amp;ldquo;单次稍慢&amp;quot;的成本被摊薄了。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;第三件事claudemd-是团队基础设施不是个人笔记&#34;&gt;第三件事：CLAUDE.md 是团队基础设施，不是个人笔记
&lt;/h2&gt;&lt;p&gt;这是整个工作流里最值得学的一条。&lt;/p&gt;
&lt;p&gt;大多数人对 CLAUDE.md 的理解是：给 Claude 写一些背景信息，让它知道你的项目长什么样。&lt;/p&gt;
&lt;p&gt;Boris 和他的团队把它做成了&lt;strong&gt;团队共享的制度性记忆&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;具体做法：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CLAUDE.md 检入 git，全团队共享一份&lt;/strong&gt;，目前 Anthropic 内部的版本约 &lt;strong&gt;2,500 tokens&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;每周多次更新&lt;/strong&gt;——不是偶尔改，而是持续维护&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;出错即记录&lt;/strong&gt;：Claude 犯了错，马上把这个&amp;quot;错误 + 正确做法&amp;quot;加进 CLAUDE.md&lt;/li&gt;
&lt;li&gt;内容涵盖：代码风格、设计规范、PR 模板、最佳实践……&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最妙的一个机制：&lt;strong&gt;Code Review 时，直接 tag &lt;code&gt;@.claude&lt;/code&gt; 要求它更新 CLAUDE.md&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这意味着 CLAUDE.md 的更新和代码审查是同一个流程，不需要额外维护成本。每一次代码变化，文档同步跟进。&lt;/p&gt;
&lt;p&gt;他管这叫&amp;rdquo;&lt;strong&gt;Compounding Engineering&lt;/strong&gt;&amp;quot;（复利工程）——每一次纠正都变成永久上下文，错误的代价一次性付清，收益却持续累计。&lt;/p&gt;
&lt;h3 id=&#34;2月更新auto-memoryclaude-自己的笔记本&#34;&gt;2月更新：Auto Memory——Claude 自己的笔记本
&lt;/h3&gt;&lt;p&gt;1月的帖子之后，2 月 Claude Code 推出了 &lt;strong&gt;Auto Memory&lt;/strong&gt; 功能，是对 CLAUDE.md 体系的重要补充。&lt;/p&gt;
&lt;p&gt;两者的区别一句话说清楚：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CLAUDE.md&lt;/strong&gt; = 你写给 Claude 的指令（检入 git，团队共享）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MEMORY.md&lt;/strong&gt; = Claude 写给自己的笔记本（本地机器，不进 git）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Auto Memory 存储在 &lt;code&gt;~/.claude/projects/&amp;lt;仓库名&amp;gt;/memory/&lt;/code&gt; 目录。Claude 会在工作过程中自动记录：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;项目的构建命令&lt;/li&gt;
&lt;li&gt;它观察到的代码风格规律&lt;/li&gt;
&lt;li&gt;重复出现的 bug 及解法&lt;/li&gt;
&lt;li&gt;架构决策和代码入口点&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;用 &lt;code&gt;/memory&lt;/code&gt; 命令可以查看和管理。&lt;strong&gt;MEMORY.md 前 200 行自动加载进每次对话&lt;/strong&gt;，超出部分截断——所以 Claude 被设计为保持 MEMORY.md 紧凑，把详细内容放进子文件（如 &lt;code&gt;debugging.md&lt;/code&gt;、&lt;code&gt;patterns.md&lt;/code&gt;）按需读取。&lt;/p&gt;
&lt;p&gt;从此，Claude 不再每次都从零认识你的项目，而是在每次工作里不断积累。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;第四件事每次会话必须从-plan-mode-开始&#34;&gt;第四件事：每次会话必须从 Plan Mode 开始
&lt;/h2&gt;&lt;p&gt;这一条被他反复强调。&lt;/p&gt;
&lt;p&gt;操作很简单：&lt;strong&gt;打开 Claude Code 后，按两次 Shift+Tab，进入 Plan Mode&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;Plan Mode 下，Claude 会先给你一个完整计划，而不是直接开始改代码。&lt;/p&gt;
&lt;p&gt;Boris 的流程是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;进入 Plan Mode，把需求说清楚&lt;/li&gt;
&lt;li&gt;和 Claude 来回迭代，直到计划让他满意&lt;/li&gt;
&lt;li&gt;计划确认后，切换到 &lt;strong&gt;auto-accept edits 模式&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Claude 通常&lt;strong&gt;一次性完成整个任务&lt;/strong&gt;，不需要他再干预&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;他特别提到：在目标是&amp;quot;完成一个 Pull Request&amp;quot;的时候，这套流程几乎是无敌的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;先谋而后动。给 Claude 的提示越明确，它给你的结果越准确。&lt;/strong&gt; Plan Mode 是把这个道理强制执行到工作流里的机制。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;第五件事斜杠命令处理所有重复工作&#34;&gt;第五件事：斜杠命令处理所有重复工作
&lt;/h2&gt;&lt;p&gt;Boris 在 &lt;code&gt;.claude/commands/&lt;/code&gt; 目录里创建了大量自定义斜杠命令。&lt;/p&gt;
&lt;p&gt;其中用得最多的一个叫 &lt;code&gt;/commit-push-pr&lt;/code&gt;。&lt;strong&gt;这一个命令，他每天用几十次。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;它会自动：暂存所有改动 → 写提交信息 → 推送到远程 → 开一个 Pull Request。&lt;/p&gt;
&lt;p&gt;一条命令，完成完整的代码提交流程。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;但这只是开始。&lt;/strong&gt; InfoQ 的报道揭示了一个更底层的自动化细节——Boris 配置了 &lt;strong&gt;PostToolUse Hook&lt;/strong&gt;，在每次 Claude 写完或编辑完文件后，自动触发代码格式化：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;PostToolUse&amp;#34;&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;matcher&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Write|Edit&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;hooks&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;command&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;command&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;bun run format || true&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这意味着 CI 格式检查永远不会失败，因为每次文件写入后代码就已经被自动格式化了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;把所有&amp;quot;你知道要做但需要手动执行&amp;quot;的步骤，全部封装成命令或 hook。每次执行不需要思考，只需要触发。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;第六件事ai-管理-aisubagent-流水线&#34;&gt;第六件事：AI 管理 AI——subagent 流水线
&lt;/h2&gt;&lt;p&gt;这是最让人脑洞大开的部分。&lt;/p&gt;
&lt;p&gt;Boris 创建了几个专职 subagent：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;code-simplifier&lt;/strong&gt;：主体任务完成后，专门负责清理和简化代码&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;verify-app agent&lt;/strong&gt;：在任何东西推上去之前，先跑一轮端到端测试&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一个 Claude 写代码 → 另一个 Claude 清理代码 → 第三个 Claude 测试代码&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;他不是在写代码，他是在调度一个 AI 流水线。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-code-creator-workflow/imgs/ai-pipeline.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-code-creator-workflow/imgs/ai-pipeline_hu_cd1f47c55418e826.png 480w, https://blog.ccino.org/p/claude-code-creator-workflow/imgs/ai-pipeline_hu_20ec961052f49697.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;AI 管理 AI——写代码、清理代码、测试代码三段流水线&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;2月更新agent-teams-正式上线&#34;&gt;2月更新：Agent Teams 正式上线
&lt;/h3&gt;&lt;p&gt;1月帖子之后，Anthropic 在 2 月正式推出了 &lt;strong&gt;Claude Code Agent Teams&lt;/strong&gt;，这是对 Boris 个人 subagent 实践的官方产品化。&lt;/p&gt;
&lt;p&gt;Agent Teams 的核心机制：一个 Claude 担任&amp;quot;team lead&amp;quot;，负责拆解任务和分派；其他 Claude 作为&amp;quot;teammates&amp;quot;，各自负责独立的模块，互相之间可以直接通信，共享任务列表。&lt;/p&gt;
&lt;p&gt;这不是&amp;quot;一个 AI 假装多任务&amp;quot;——这是真正独立的多个 session 进行协调工作。&lt;/p&gt;
&lt;p&gt;同期还推出了 &lt;strong&gt;&lt;code&gt;claude --worktree&lt;/code&gt;&lt;/strong&gt; 支持：给每个 agent session 创建独立的 git worktree，从文件系统层面彻底隔离，解决多个 agent 同时编辑同一文件的冲突问题。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;1月之后这条帖子引发了什么&#34;&gt;1月之后：这条帖子引发了什么
&lt;/h2&gt;&lt;p&gt;Boris 的帖子发出一周后，VentureBeat 发文，标题是&amp;quot;开发者们正在重新思考一切&amp;quot;。&lt;/p&gt;
&lt;p&gt;社区分裂成两派：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一派立刻重新配置了自己的整套环境&lt;/li&gt;
&lt;li&gt;另一派觉得这是&amp;quot;有无限 token 预算的人才能玩的把戏&amp;quot;，不适用普通人&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;但两派都忽略了一件事&lt;/strong&gt;：Boris 的工作流里没有任何 Anthropic 内部专属功能——他用的都是公开版 Claude Code，你现在就能复制。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;2月19日他说出了更大的话&#34;&gt;2月19日：他说出了更大的话
&lt;/h2&gt;&lt;p&gt;1 月的帖子轰动之后，Boris 在 2 月接受了 Lenny&amp;rsquo;s Podcast 的采访。&lt;/p&gt;
&lt;p&gt;他说出了一句更大的话：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;&lt;strong&gt;我认为在这个阶段，可以说编程基本上已经被解决了。至少对我做的这类编程，它已经是一个被解决的问题了，因为 Claude 可以做到。&lt;/strong&gt;&amp;rdquo;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;来自 Claude Code 创始人自己的嘴。&lt;/p&gt;
&lt;p&gt;他还给出了两个数字：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude Code 现在&lt;strong&gt;占全球 GitHub 公开 commits 的 4%&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;日活用户&lt;strong&gt;上个月翻了一倍&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;更令人印象深刻的是他对未来的描述。他说，Claude 现在已经开始：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;&lt;strong&gt;查看用户反馈、bug 报告、产品 telemetry，然后自己提出修复建议和功能想法。它开始有点像一个同事了。&lt;/strong&gt;&amp;rdquo;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;从&amp;quot;执行工程任务&amp;quot;到&amp;quot;主动提产品想法&amp;quot;——这条线正在被穿越。&lt;/p&gt;
&lt;p&gt;他对工程师职位的预判也很直接：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;到今年年底，&amp;lsquo;软件工程师&amp;rsquo;这个头衔可能会开始消失，被&amp;rsquo;builder&amp;rsquo;取代。或者说，每个人都会是产品经理，每个人都会写代码。&amp;rdquo;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;值得一提的是：他自己在这个过程中也经历了一次考验。采访里提到，他曾短暂&lt;strong&gt;离开 Anthropic 加入 Cursor&lt;/strong&gt;，两周后回来了。没有更多解释，但这两周的经历想必让他对两种工具的差异有了最直接的体感。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;社区在这两个月里学到了什么&#34;&gt;社区在这两个月里学到了什么
&lt;/h2&gt;&lt;p&gt;Boris 的帖子之后，整个社区都在测试和迭代。以下是高质量开发者整理出来的、对普通用户最有价值的补充技巧：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;并行管理&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用 &lt;code&gt;/resume&lt;/code&gt; 命令恢复被中断的 session，无需重新描述上下文&lt;/li&gt;
&lt;li&gt;把终端分割成 2-3 个窗口实时跟踪并行任务，比依赖系统通知更直观&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;模型选择策略&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Opus 处理复杂任务，&lt;strong&gt;Haiku 处理简单/结构化任务&lt;/strong&gt;——速度快、token 消耗低&lt;/li&gt;
&lt;li&gt;不需要 Opus 时，可以用 Gemini 2.5 Pro（通过 Gemini CLI，免费）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;提效小习惯&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;创建终端别名：&lt;code&gt;cc&lt;/code&gt; 启动 skip-permission 模式，&lt;code&gt;ch&lt;/code&gt; 默认启动 Haiku session&lt;/li&gt;
&lt;li&gt;每次 session 结束前说一句：&lt;strong&gt;&amp;ldquo;make sure the project documentation is up to date&amp;rdquo;&lt;/strong&gt;——让 Claude 主动更新文档&lt;/li&gt;
&lt;li&gt;在 &lt;code&gt;.memory&lt;/code&gt; 文件夹里存储 subagent 的历史输出，供后续调用参考&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;汇总他的工作流全貌&#34;&gt;汇总：他的工作流全貌
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;做法&lt;/th&gt;
          &lt;th&gt;背后逻辑&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;10-15 个并行 session + 独立 git checkout&lt;/td&gt;
          &lt;td&gt;把等待时间变成并行产出，隔离冲突&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Opus 4.5 + thinking&lt;/td&gt;
          &lt;td&gt;减少纠错次数，总体更快&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;团队共享 CLAUDE.md（2.5k tokens）&lt;/td&gt;
          &lt;td&gt;复利工程：错误代价一次性付清&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Auto Memory / MEMORY.md&lt;/td&gt;
          &lt;td&gt;Claude 自己积累项目知识&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;每次先 Plan Mode（Shift+Tab × 2）&lt;/td&gt;
          &lt;td&gt;先谋后动，避免大规模返工&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;PostToolUse Hook 自动格式化&lt;/td&gt;
          &lt;td&gt;消除 CI 格式失败的可能性&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;自定义斜杠命令 &lt;code&gt;/commit-push-pr&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;把重复操作封装，降低认知负担&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;专职 subagent 流水线&lt;/td&gt;
          &lt;td&gt;AI 管理 AI，解放人的注意力&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&#34;你现在可以做的三件事&#34;&gt;你现在可以做的三件事
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;今天就能上手：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;给你的项目建一个 CLAUDE.md&lt;/strong&gt;，至少写上：项目结构、常用命令、代码规范。花 10 分钟，所有后续会话都受益。目标是控制在 200 行以内，规则执行率最高。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;下次用 Claude Code 时，先按两次 Shift+Tab 进入 Plan Mode&lt;/strong&gt;，把任务说清楚，等计划满意再让它执行。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;创建你最常用的斜杠命令&lt;/strong&gt;。从 &lt;code&gt;/commit-push-pr&lt;/code&gt; 开始，或者任何你每天要重复做的事情。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;最后，Boris 在 1 月帖子里说的那句话，现在读来有了更深的分量：&lt;/strong&gt;&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;我的配置可能出奇地朴素。Claude Code 本身就工作得很好，我个人其实没有做太多自定义。&amp;rdquo;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;两个月过去了，他的帖子引发了大规模讨论，工具本身迭代了 Agent Teams、Auto Memory、Worktrees……&lt;/p&gt;
&lt;p&gt;但核心逻辑没有变：&lt;strong&gt;并行思维 + 制度性记忆 + 封装重复动作&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;造出这个工具的人，用最简单的配置，做出了最惊人的结果。&lt;/p&gt;
&lt;p&gt;复杂不是效率的来源。&lt;strong&gt;清晰的工作流才是。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;资料来源：&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Boris Cherny X 帖子（2026-01-03）：https://x.com/bcherny&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Boris Cherny Threads - Claude Code 2.1.0 发布公告（2026-01-07）：https://www.threads.com/@boris_cherny/post/DTOyRyBD018/&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;paddo.dev 整理：https://paddo.dev/blog/how-boris-uses-claude-code/&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;The Automated 分析：https://www.theautomated.co/p/boris-cherny-s-claude-code-workflow-that-5-developer-productivity&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Product with Attitude 解读：https://karozieminski.substack.com/p/boris-cherny-claude-code-workflow&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;VentureBeat 报道：https://venturebeat.com/technology/the-creator-of-claude-code-just-revealed-his-workflow-and-developers-are&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;InfoQ 深度报道：https://www.infoq.com/news/2026/01/claude-code-creator-workflow/&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Lenny&amp;rsquo;s Podcast（2026-02-19）：https://www.lennysnewsletter.com/p/head-of-claude-code-what-happens&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Auto Memory 指南：https://claudefa.st/blog/guide/mechanics/auto-memory&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Claude Code Agent Teams：https://claudefa.st/blog/guide/agents/agent-teams-workflow&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Git Worktrees 支持：https://claudefa.st/blog/guide/development/worktree-guide&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Claude Code Changelog：https://claudelog.com/claude-code-changelog/&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>特朗普封杀Claude的72小时：被用于伊朗空袭，然后登上App Store第一名</title>
        <link>https://blog.ccino.org/p/trump-bans-claude-iran-strikes-app-store-no1-72hours/</link>
        <pubDate>Mon, 02 Mar 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/trump-bans-claude-iran-strikes-app-store-no1-72hours/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/trump-bans-claude-iran-strikes-app-store-no1-72hours/imgs/cover.png" alt="Featured image of post 特朗普封杀Claude的72小时：被用于伊朗空袭，然后登上App Store第一名" /&gt;&lt;p&gt;如果你要给2026年的AI行业写一个最戏剧性的剧本，大概也写不出这72小时。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2026年2月27日（周四）&lt;/strong&gt;：Anthropic拒绝五角大楼，被特朗普列为&amp;quot;国家安全供应链风险&amp;quot;——这个头衔历史上只给过华为和卡巴斯基。Anthropic因此失去了价值 &lt;strong&gt;2亿美元&lt;/strong&gt;的联邦合同。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;几个小时后&lt;/strong&gt;：OpenAI和马斯克的xAI先后宣布接下了Anthropic拒绝的同类合同。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2月28日至3月1日（周六凌晨）&lt;/strong&gt;：美以联合对伊朗发动大规模空袭。伊朗最高领袖哈梅内伊在袭击中身亡，伊朗国家媒体随后证实。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3月1日&lt;/strong&gt;：The Verge披露，就在封杀令颁布后数小时，美国军方在策划对伊朗的空袭行动中，仍在使用Claude进行情报评估和目标识别。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3月1日晚6点38分&lt;/strong&gt;：Claude超越ChatGPT，登上美国App Store免费应用榜第一名。Gemini排名第四。&lt;/p&gt;
&lt;p&gt;这不是小说。这是过去72小时真实发生的事情。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/trump-bans-claude-iran-strikes-app-store-no1-72hours/imgs/timeline.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/trump-bans-claude-iran-strikes-app-store-no1-72hours/imgs/timeline_hu_c6064afc2ec3c3cc.png 480w, https://blog.ccino.org/p/trump-bans-claude-iran-strikes-app-store-no1-72hours/imgs/timeline_hu_da6c381f94e33cf6.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;72小时事件时间线&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;第一幕那两条不能退让的红线&#34;&gt;第一幕：那两条&amp;quot;不能退让的红线&amp;quot;
&lt;/h2&gt;&lt;p&gt;故事要从一份合同谈起。&lt;/p&gt;
&lt;p&gt;Anthropic和美国国防部（内部称&amp;quot;战争部&amp;quot;）一直有合作——Claude已经被部署在情报分析、网络运营等军事任务中。Claude甚至曾被用于协助抓捕委内瑞拉总统马杜罗的行动，是第一家被确认为美国国防部机密行动提供AI支持的公司。&lt;/p&gt;
&lt;p&gt;但这次，五角大楼提出了新要求：无限制地用于&amp;quot;所有合法用途&amp;quot;，不加任何限制。&lt;/p&gt;
&lt;p&gt;这触碰了Anthropic的两条红线：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;不允许大规模国内监控&lt;/strong&gt;（具体争议点：美国公民的地理位置、网页浏览等商业批量数据）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不允许完全自主的致命性武器&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;国防部长Hegseth随即下了最后通牒：不妥协，将面临&lt;strong&gt;三重打击&lt;/strong&gt;——取消2亿美元合同、被列为&amp;quot;供应链风险&amp;quot;、甚至援引《国防生产法》强制执行。&lt;/p&gt;
&lt;p&gt;CEO Dario Amodei在截止日期前不到24小时，发出了那封信：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;这些威胁不会改变我们的立场。我们在良知上无法同意他们的要求。&amp;rdquo;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;反应来得非常快。国防部长Pete Hegseth宣布Anthropic是&amp;quot;国家安全供应链风险&amp;quot;。特朗普在Truth Social上写道：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;Anthropic的左翼疯子犯了一个灾难性的错误，试图用他们的服务条款来强迫战争部，而不是遵从我们的宪法。&amp;rdquo;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;联邦机构被命令&amp;quot;立即停止&amp;quot;使用Claude的一切技术。&lt;/p&gt;
&lt;p&gt;讽刺的是，Anthropic此前一直是AI公司里与军方合作最积极的一个——第一个部署到军方机密网络，第一个进入国家实验室，主动切断了与中国相关实体的收入，协助过网络攻击防御。这次，是他们第一次说不。&lt;/p&gt;
&lt;p&gt;也是第一次被当成敌人对待。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;第二幕openai24小时接盘&#34;&gt;第二幕：OpenAI，24小时接盘
&lt;/h2&gt;&lt;p&gt;封杀令宣布的同一天晚上，Sam Altman在X上发帖：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;OpenAI已与美国国防部签署协议，将AI模型部署至军方分类网络。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;他也承认这件事处理得不够漂亮——&amp;ldquo;确实有些仓促，观感不好&amp;rdquo;。但合同还是签了。&lt;/p&gt;
&lt;p&gt;马斯克的xAI也随即宣布加入，同样接手了军方AI合同。&lt;/p&gt;
&lt;p&gt;OpenAI随后解释，他们的协议同样包含禁止大规模监控和致命性自主武器的条款。这和Anthropic的红线几乎一模一样。&lt;/p&gt;
&lt;p&gt;问题就在这里：&lt;strong&gt;同样的限制，Anthropic守住了，OpenAI签了，结果天壤之别。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;是Anthropic太死板，还是OpenAI的条款其实更模糊？是Anthropic输掉了一场商业博弈，还是赢得了一张长期信任？&lt;/p&gt;
&lt;p&gt;这个问题，接下来的事情或许给出了一个非常意外的答案。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;第三幕封杀令颁布后军方继续用claude打了伊朗&#34;&gt;第三幕：封杀令颁布后，军方继续用Claude打了伊朗
&lt;/h2&gt;&lt;p&gt;这是整个事件里最荒诞、也最震撼的一笔。&lt;/p&gt;
&lt;p&gt;3月1日，The Verge引用《华尔街日报》的报道披露：就在特朗普命令&amp;quot;立即停止使用Claude&amp;quot;之后的数小时内，&lt;strong&gt;美以联合对伊朗发动的大规模空袭行动中，美军仍在使用Claude进行情报评估、目标识别和作战场景模拟&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这次行动的结果，已成为历史：伊朗最高领袖哈梅内伊在空袭中身亡，路透社、AP和伊朗国家媒体均予以证实。&lt;/p&gt;
&lt;p&gt;那么，Claude在其中扮演了什么角色？&lt;/p&gt;
&lt;p&gt;技术链条是这样的：Claude通过Anthropic与数据公司Palantir的合作，部署在Palantir的Gotham军事平台上，接入五角大楼的机密网络。美国中央司令部正是通过这条链路调用Claude。（Palantir的Gotham平台，就是曾协助情报部门定位本·拉登的那个系统。）&lt;/p&gt;
&lt;p&gt;&amp;ldquo;立即停止&amp;rdquo;，随后悄悄改成了&amp;quot;六个月内逐步淘汰&amp;quot;。&lt;/p&gt;
&lt;p&gt;理由很现实：伊朗空袭的计划正在进行，Claude已深度集成，专家表示用其他模型替换Claude至少需要数月时间。&lt;/p&gt;
&lt;p&gt;这件事同时说明了两件事，而且都让人细思极恐：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第一&lt;/strong&gt;，AI在现代军事决策中已经嵌入得如此之深，连总统的封杀令都只能缓行。&amp;ldquo;退出键&amp;quot;这个东西，可能根本不存在。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第二&lt;/strong&gt;，Anthropic坚守的那两条红线——&amp;ldquo;不参与自主武器、不搞大规模监控&amp;rdquo;——在现实中，是否真的能守住？&lt;/p&gt;
&lt;p&gt;当一个AI系统在用于&amp;quot;情报评估和目标识别&amp;quot;时，它和&amp;quot;参与战争&amp;quot;之间，边界究竟在哪里？&lt;/p&gt;
&lt;p&gt;Dario Amodei没有公开回应这件事。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;第四幕用户用下载量投票&#34;&gt;第四幕：用户，用下载量投票
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/trump-bans-claude-iran-strikes-app-store-no1-72hours/imgs/user-revolt.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/trump-bans-claude-iran-strikes-app-store-no1-72hours/imgs/user-revolt_hu_d594ad4dbe41f38f.png 480w, https://blog.ccino.org/p/trump-bans-claude-iran-strikes-app-store-no1-72hours/imgs/user-revolt_hu_fe6833bab62098f6.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;用户用行动表态：从ChatGPT迁移到Claude&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;3月1日晚上6点38分，Claude在苹果美国App Store超越ChatGPT，成为下载量第一的免费应用。Gemini排名第四。&lt;/p&gt;
&lt;p&gt;这件事一开始看起来是意外，但数据告诉你它并非偶然。&lt;/p&gt;
&lt;p&gt;1月末，Claude在App Store的排名大约是131名。2月中旬，攀升到前20。五角大楼事件爆发后，排名曲线陡然拉直——垂直上升。&lt;/p&gt;
&lt;p&gt;社交媒体上爆发了大规模&amp;quot;用脚投票&amp;quot;运动。用户发布自己取消ChatGPT订阅的截图、Claude Pro购买确认的截图。歌手Katy Perry公开宣布&amp;quot;done&amp;rdquo;，并晒出Claude的$20/月订阅页面。&lt;/p&gt;
&lt;p&gt;有人这样写道：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;我今天不再使用ChatGPT，不是因为Claude更好，而是因为我想让这件事被看见。&amp;rdquo;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;当然，这里有必要保持清醒：分析师指出，Claude的增长早在五角大楼事件前就已经开始，这次事件只是一个催化剂。而且Anthropic本身也并非完全&amp;quot;干净&amp;quot;——它通过Palantir和AWS仍与军方有合作关系，伦理叙事并不是黑白分明的。&lt;/p&gt;
&lt;p&gt;但有一件事是确定的：&lt;strong&gt;AI公司的价值立场，第一次以这么直接的方式转化成了用户的消费行为。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;人们不只是在选一个更好用的产品。他们在用购买行为表达一种判断。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;72小时之后&#34;&gt;72小时之后
&lt;/h2&gt;&lt;p&gt;目前，特朗普的封杀令已经修改为&amp;quot;六个月逐步淘汰&amp;quot;。Anthropic失去了2亿美元的联邦合同，但它的App Store排名还在第一。&lt;/p&gt;
&lt;p&gt;OpenAI和xAI得到了合同，但它们在用户口碑上失去了一些什么——具体是多少，还在计算中。&lt;/p&gt;
&lt;p&gt;美国军方在用Claude参与策划了对伊朗的空袭、在哈梅内伊身亡的行动中调用了Claude，同时在宣布封杀Claude。&lt;/p&gt;
&lt;p&gt;Anthropic表示计划对政府将其列为供应链风险的决定提出质疑。Dario Amodei画下的那两条红线，在这72小时里，被政治风暴检验了一遍，也被战争现实质疑了一遍。&lt;/p&gt;
&lt;p&gt;这是AI历史上，第一次如此清晰地看见：AI、权力、伦理和用户选择，是怎么在同一个时间轴上碰撞的。&lt;/p&gt;
&lt;p&gt;没有人赢得了这场博弈。但每个参与者都展露了真实的自己。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;延伸阅读：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.axios.com/2026/03/01/anthropic-claude-chatgpt-app-downloads-pentagon&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Axios：Claude登顶App Store&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://on.theverge.com/ai-artificial-intelligence/887162/us-anthropic-claude-ai-iran-ban&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;The Verge：封杀令后美军仍用Claude参与伊朗空袭&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.cnn.com/2026/02/27/tech/anthropic-pentagon-deadline&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CNN：特朗普政府命令停止与Anthropic合作&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://techcrunch.com/2026/03/01/openai-shares-more-details-about-its-agreement-with-the-pentagon/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;TechCrunch：OpenAI与五角大楼协议详情&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.businessinsider.com/government-ai-standoff-anthropic-openai-decide-who-controls-military-tech-2026-3&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Business Insider：谁将控制军事AI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Anthropic 说不：拒绝美国军方合同，Claude 为何能坚守底线？</title>
        <link>https://blog.ccino.org/p/anthropic-refuses-pentagon-autonomous-weapons-2026/</link>
        <pubDate>Sun, 01 Mar 2026 10:04:35 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/anthropic-refuses-pentagon-autonomous-weapons-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/anthropic-refuses-pentagon-autonomous-weapons-2026/cover.png" alt="Featured image of post Anthropic 说不：拒绝美国军方合同，Claude 为何能坚守底线？" /&gt;&lt;h1 id=&#34;anthropic-说不拒绝美国军方合同claude-为何能坚守底线&#34;&gt;Anthropic 说不：拒绝美国军方合同，Claude 为何能坚守底线？
&lt;/h1&gt;&lt;p&gt;2026年2月底，AI 圈发生了一件极具戏剧性且意义深远的事件：Anthropic（Claude 的母公司）公开拒绝了美国国防部（DOD/DOW）的某些合同要求。随后，美国前总统特朗普在社交媒体上直接点名炮轰。&lt;/p&gt;
&lt;p&gt;在商业公司为争夺政府订单争破头的今天，一家 AI 公司为什么敢对美国军方说“不”？&lt;/p&gt;
&lt;h2 id=&#34;发生了什么&#34;&gt;发生了什么？
&lt;/h2&gt;&lt;p&gt;事情的起因是五角大楼（Pentagon）对 AI 公司提出了新的合同条款，要求放宽 AI 模型在特定军事场景下的使用限制。具体来说，涉及到两个核心红线：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;致命性自主武器（Lethal autonomous weapons）&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;大规模国内监控（Mass domestic surveillance）&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;据报道，OpenAI 和 xAI 已经同意了这些新条款。但 Anthropic 的 CEO Dario Amodei 却在截止日期前不到24小时，公开发表声明坚决拒绝。&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;“这些威胁不会改变我们的立场：我们在良知上无法同意他们的要求。”—— Dario Amodei&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;他在声明中明确表示，虽然 Anthropic 极力支持民主国家的防御，并且 Claude 已经被广泛部署在情报分析、网络运营等国家安全任务中，但他们认为，在某些极端情况下，AI 会破坏而非捍卫民主价值观。&lt;/p&gt;
&lt;h2 id=&#34;矛盾的张力拒绝武器但仍被军方重用&#34;&gt;矛盾的张力：拒绝武器，但仍被军方重用
&lt;/h2&gt;&lt;p&gt;这一事件在 Reddit 开发者社区（r/ClaudeAI）彻底引爆。讨论最热烈的帖子迅速获得了近 4000 个赞和 700 多条评论。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/anthropic-refuses-pentagon-autonomous-weapons-2026/contradiction.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/anthropic-refuses-pentagon-autonomous-weapons-2026/contradiction_hu_9a310f1bcfaa9977.png 480w, https://blog.ccino.org/p/anthropic-refuses-pentagon-autonomous-weapons-2026/contradiction_hu_94240a03e0bd7916.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;矛盾张力&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;有趣的是，就在 Anthropic 宣布拒绝放宽限制的同时，五角大楼其实一直在广泛使用 Claude 进行数据分析和非致命性军事任务。Reddit 上另一篇高赞帖子指出：“五角大楼对 Claude 的依赖，比任何基准测试都更能证明它的统治力。”&lt;/p&gt;
&lt;p&gt;这就形成了一个非常独特的局面：&lt;strong&gt;Anthropic 并不是反战分子，他们愿意与军方合作，但他们划定了一条极其清晰的底线——绝不让 AI 决定扣动扳机，绝不让 AI 用于监控平民。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;商业利益-vs-价值观代价&#34;&gt;商业利益 vs 价值观代价
&lt;/h2&gt;&lt;p&gt;在这个节点上，Anthropic 的选择显得尤为特立独行。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/anthropic-refuses-pentagon-autonomous-weapons-2026/business-vs-values.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/anthropic-refuses-pentagon-autonomous-weapons-2026/business-vs-values_hu_32929d146edaf304.png 480w, https://blog.ccino.org/p/anthropic-refuses-pentagon-autonomous-weapons-2026/business-vs-values_hu_d75238af9ff1939.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;商业与价值观的抉择&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;要知道，政府和军方的合同通常意味着数亿甚至数十亿美元的稳定收入。在 AI 军备竞赛极其烧钱的当下，主动放弃这块蛋糕，甚至冒着被踢出美国国防部供应链的风险（五角大楼确实发出了这种威胁），需要极大的魄力。&lt;/p&gt;
&lt;p&gt;相比之下，其他竞争对手的妥协显得更加“现实”。就在 Anthropic 拒绝并被特朗普下令封杀仅仅几个小时后，&lt;strong&gt;OpenAI 迅速宣布与五角大楼达成协议&lt;/strong&gt;。OpenAI CEO Sam Altman 表示，虽然他们的协议也包含了禁止大规模监控和致命性自主武器的条款，但他们同意将其模型部署到军方的“机密网络”中。这种戏剧性的对比——一家公司因为坚守底线被全网封杀，另一家公司立刻接盘签单——把商业竞争的残酷展现得淋漓尽致。&lt;/p&gt;
&lt;p&gt;这引发了我们对国内 AI 公司的思考：如果是中国的头部大模型公司面临类似的抉择，他们有权利、有底气说“不”吗？在商业利益、国家意志和科技伦理的三角博弈中，底线到底该划在哪里？&lt;/p&gt;
&lt;h2 id=&#34;坚守底线也是一种护城河&#34;&gt;坚守底线，也是一种护城河
&lt;/h2&gt;&lt;p&gt;事实上，这并非 Anthropic 第一次做出“逆商业利益”的决定。Dario Amodei 在声明中还透露了一个细节：他们曾主动放弃了数亿美元的潜在收入，以切断某些实体对 Claude 的使用，因为这违背了他们的安全原则。&lt;/p&gt;
&lt;p&gt;在很多人看来，这或许是“书生气”太重。但正是这种对安全和对齐（Alignment）的极致偏执，造就了今天 Claude 极高的可信度。&lt;/p&gt;
&lt;p&gt;当大量企业和开发者在选择底层大模型时，性能固然重要，但&lt;strong&gt;不可见的安全性和价值观往往是决定生死的关键&lt;/strong&gt;。Anthropic 正在用实际行动证明：他们写在白皮书里的原则，不是用来做公关的，而是真的会贯彻到每一次商业决策中。&lt;/p&gt;
&lt;p&gt;特朗普的炮轰或许会给 Anthropic 带来短期的政治压力（就在 Anthropic 拒绝新条款后，特朗普立即下令全面禁止所有联邦机构使用 Anthropic 技术，并将其列为“供应链风险”），但从长远来看，这次“说不”，恰恰成为了 Claude 最强大的一张信任名片。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;扩展阅读：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;📢 &lt;a class=&#34;link&#34; href=&#34;https://www.anthropic.com/news/statement-department-of-war&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic CEO 官方声明全文 (英文)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;💬 &lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/ClaudeAI/comments/1rgivx2/looks_like_anthropics_no_to_the_dow_has_made_it/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reddit 热点讨论：Anthropic 拒绝 DOW 冲上推特&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;💬 &lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/ClaudeAI/comments/1rgrmmv/the_pentagon_just_proved_claudes_dominance_more/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reddit 热点讨论：Pentagon 五角大楼对 Claude 的依赖&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;📰 &lt;a class=&#34;link&#34; href=&#34;https://www.theverge.com/ai-artificial-intelligence/885773/anthropic-department-of-defense-dod-pentagon-refusal-terms-hegseth-dario-amodei&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;The Verge 报道：Anthropic 拒绝五角大楼新条款&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;📰 &lt;a class=&#34;link&#34; href=&#34;https://www.businessinsider.com/openai-ai-deal-sam-altman-pentagon-defense-department-anthropic-2026-2&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Business Insider 报道：Anthropic 被封杀数小时后，OpenAI 签下五角大楼订单&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;📰 &lt;a class=&#34;link&#34; href=&#34;https://www.washingtonpost.com/technology/2026/02/27/trump-anthropic-claude-drop/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;The Washington Post: Pentagon declares Anthropic a threat to national security&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;📰 &lt;a class=&#34;link&#34; href=&#34;https://www.axios.com/2026/02/27/ai-trump-supply-chain-anthropic-pentagon-blacklist&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Axios: What Trump labeling Anthropic AI a supply chain risk means&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>用 OpenClaw AI Agent，他5天赚了$700 MRR（完整复盘）</title>
        <link>https://blog.ccino.org/p/openclaw-ai-agent-700-mrr-case-study/</link>
        <pubDate>Sat, 28 Feb 2026 07:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/openclaw-ai-agent-700-mrr-case-study/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/openclaw-ai-agent-700-mrr-case-study/imgs/cover.png" alt="Featured image of post 用 OpenClaw AI Agent，他5天赚了$700 MRR（完整复盘）" /&gt;&lt;p&gt;2026年2月26日，一个关于 OpenClaw 的 YouTube 视频悄悄刷屏了 AI 圈——&lt;/p&gt;
&lt;p&gt;标题很直接：&lt;strong&gt;《Openclaw AI Agent Gets 500,000 views and $700 MRR in 5 Days》&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;50万播放量，$700 月经常性收入，5天。&lt;/p&gt;
&lt;p&gt;这不是 AI 公司的官方宣传片，也不是某个&amp;quot;AI 赚钱秘籍&amp;quot;课程的广告。而是一个叫 Mark Savant 的 YouTuber，把自己用 OpenClaw 跑通的内容自动化工作流，原原本本地记录了下来。&lt;/p&gt;
&lt;p&gt;我把这个案例，加上另一个在 GitHub 上声称&amp;quot;7小时赚 $10K&amp;quot;的项目 ClawWork，做了一次完整的拆解。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;openclaw-是什么30秒版本&#34;&gt;OpenClaw 是什么（30秒版本）
&lt;/h2&gt;&lt;p&gt;在展开案例之前，先给没听说过的人补充背景。&lt;/p&gt;
&lt;p&gt;OpenClaw（前身是 Clawdbot、Moltbot）是一个由奥地利开发者 Peter Steinberger 在 2025 年 11 月发布的&lt;strong&gt;开源自主 AI Agent&lt;/strong&gt;。它的核心设计思路是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;运行在你的本地机器或服务器上&lt;/li&gt;
&lt;li&gt;通过 Signal、Telegram、WhatsApp、Discord 等消息软件作为交互界面&lt;/li&gt;
&lt;li&gt;连接你选择的大模型（Claude、GPT、DeepSeek 都行）&lt;/li&gt;
&lt;li&gt;自主执行任务：浏览网页、整理 PDF、发邮件、管理日历、自动购物……&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;截至 2026 年 2 月底，OpenClaw 的 GitHub 仓库已经累积了超过 &lt;strong&gt;215,000 Stars&lt;/strong&gt;，freeCodeCamp 专门出了一套完整入门课程，YouTube 相关视频超过 54,000 条。&lt;/p&gt;
&lt;p&gt;它是现在开源 AI Agent 赛道里热度最高的项目，没有之一。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;案例一mark-savant-的内容营销自动化&#34;&gt;案例一：Mark Savant 的内容营销自动化
&lt;/h2&gt;&lt;h3 id=&#34;他在做什么&#34;&gt;他在做什么
&lt;/h3&gt;&lt;p&gt;Mark Savant 是一位专注 AI 工具的内容创作者，他给自己设了一个实验目标：&lt;strong&gt;用 OpenClaw 跑一套几乎全自动的内容发布流水线&lt;/strong&gt;，看看能不能实现真实变现。&lt;/p&gt;
&lt;h3 id=&#34;工作流是怎么搭的&#34;&gt;工作流是怎么搭的
&lt;/h3&gt;&lt;p&gt;根据他视频里的分享，这套流水线大致分三层：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第一层：内容选题（每天自动运行）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;OpenClaw 每天早上 7 点自动执行一个任务：扫描 Product Hunt 当日新品、Twitter/X 上 AI 相关关键词的热门推文，以及 Reddit r/ChatGPT 和 r/ClaudeAI 的 Top 帖子，整合成一份「今日 AI 热点速报」，发到他的 Telegram 群。&lt;/p&gt;
&lt;p&gt;他只需要在早饭时间瞄一眼，用 10 分钟圈出 2-3 个最有潜力的话题。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第二层：内容生产（半自动，人工介入 20%）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;他给 OpenClaw 配置了一个&amp;quot;脚本生成技能（skill）&amp;quot;——当他发送某个话题关键词，Agent 会：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;搜索该话题的最新资讯、相关 YouTube 视频&lt;/li&gt;
&lt;li&gt;按他设定的内容结构模板，输出一份视频脚本草稿&lt;/li&gt;
&lt;li&gt;同时生成对应的 Twitter 线程和 Newsletter 段落&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;他说自己平均会在脚本上改 10-15 分钟，主要是加个人观点和调整语气。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第三层：多平台分发（全自动）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;录完视频后，他把视频文件丢进一个指定文件夹，OpenClaw 监测到新文件后自动：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;提取视频字幕&lt;/li&gt;
&lt;li&gt;生成 YouTube 标题、描述、标签&lt;/li&gt;
&lt;li&gt;发布到 YouTube（通过 YouTube Data API）&lt;/li&gt;
&lt;li&gt;把 Newsletter 内容推送到 Beehiiv（他的邮件列表平台）&lt;/li&gt;
&lt;li&gt;把 Twitter 线程排队发布&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;收入从哪来&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;$700 MRR 主要来自两个渠道：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Beehiiv 邮件列表的付费订阅（他的 Newsletter 是付费会员制）&lt;/li&gt;
&lt;li&gt;YouTube 频道的广告收入分成&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;5 天内的 50 万播放量带来了远超预期的新订阅者涌入，而 OpenClaw 的内容自动化让他在同样时间内输出了比以前多 3 倍的内容，形成了正向循环。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/openclaw-ai-agent-700-mrr-case-study/imgs/three-layer-workflow.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/openclaw-ai-agent-700-mrr-case-study/imgs/three-layer-workflow_hu_3aca7576c4db1b3b.png 480w, https://blog.ccino.org/p/openclaw-ai-agent-700-mrr-case-study/imgs/three-layer-workflow_hu_39cfc1e8db161a29.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Mark Savant 的内容自动化三层工作流：选题→内容生产→多平台分发&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;案例二clawwork7小时赚-10k&#34;&gt;案例二：ClawWork——7小时赚 $10K？
&lt;/h2&gt;&lt;p&gt;ClawWork 是香港大学数据科学实验室（HKUDS）在 GitHub 上开源的一个项目，副标题是：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&lt;strong&gt;&amp;ldquo;OpenClaw as Your AI Coworker - 💰 $10K earned in 7 Hours&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;听起来离谱？我也这么觉得，直到看了项目文档。&lt;/p&gt;
&lt;h3 id=&#34;clawwork-的思路&#34;&gt;ClawWork 的思路
&lt;/h3&gt;&lt;p&gt;ClawWork 不是让 OpenClaw 帮你&amp;quot;做内容&amp;quot;，而是让它扮演一个&lt;strong&gt;软件开发承包商&lt;/strong&gt;的角色。&lt;/p&gt;
&lt;p&gt;具体操作是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在 Upwork 或 Fiverr 上接外包需求（偏简单的数据处理、网页爬虫、自动化脚本类）&lt;/li&gt;
&lt;li&gt;把需求描述喂给 OpenClaw Agent&lt;/li&gt;
&lt;li&gt;Agent 调用 Claude 或 GPT-4o 生成代码，执行测试，打包交付&lt;/li&gt;
&lt;li&gt;人工做最终验收和交付沟通&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;$10K/7小时这个数字来自一次集中接单——他们在平台上同时接了大量单价在 $50-$200 的标准化任务，批量让 Agent 处理，人工负责最后的交付确认。&lt;/p&gt;
&lt;p&gt;关键不在于&amp;quot;AI 赚钱&amp;quot;，而在于&lt;strong&gt;批量并发处理&lt;/strong&gt;——一个人类工时对应了几十个 Agent 并发工时。&lt;/p&gt;
&lt;h3 id=&#34;这个模式的现实局限&#34;&gt;这个模式的现实局限
&lt;/h3&gt;&lt;p&gt;需要说清楚：$10K/7小时是极端情况下的峰值，不是日常可复制的数字。它依赖于：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;预先建立好的 Upwork 账号信誉&lt;/li&gt;
&lt;li&gt;已经积累的评价和接单资格&lt;/li&gt;
&lt;li&gt;对特定类型任务有配置好的 Agent 工作流&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对于刚开始的人来说，&lt;strong&gt;月入 $500-$2000 的辅助收入&lt;/strong&gt;更接近实际预期。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;你能复制的-3-种场景&#34;&gt;你能复制的 3 种场景
&lt;/h2&gt;&lt;p&gt;基于以上两个案例，我整理了三种门槛相对低、可落地的变现路径：&lt;/p&gt;
&lt;h3 id=&#34;场景一newsletter-自动化适合内容创作者&#34;&gt;场景一：Newsletter 自动化（适合内容创作者）
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;核心逻辑&lt;/strong&gt;：用 OpenClaw 把选题、整理、初稿三个环节自动化，人工只负责&amp;quot;点睛&amp;quot;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;收入来源&lt;/strong&gt;：付费 Newsletter（Beehiiv/Substack 付费订阅）、广告植入&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;启动成本&lt;/strong&gt;：OpenClaw 部署（免费）+ 大模型 API 费用（约 $20-50/月）&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;预期周期&lt;/strong&gt;：3-6 个月积累受众，开始产生稳定收入&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;关键配置&lt;/strong&gt;：设置一个定时任务 Agent，每天聚合你领域的信息源；再配一个&amp;quot;写作助手技能&amp;quot;，按你的风格模板出草稿。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;场景二标准化外包接单适合有技术背景的人&#34;&gt;场景二：标准化外包接单（适合有技术背景的人）
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;核心逻辑&lt;/strong&gt;：在外包平台接简单、重复、标准化的数字任务，用 Agent 批量执行。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;适合的任务类型&lt;/strong&gt;：数据抓取与整理、文档翻译与格式转换、简单脚本开发、社媒内容批量生产&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;收入来源&lt;/strong&gt;：Upwork、Fiverr 外包收入&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;启动成本&lt;/strong&gt;：建立平台账号 + 先手动做几单积累评价&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;预期周期&lt;/strong&gt;：2-3 个月建立接单流水&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;场景三个人效率服务化适合有行业资源的人&#34;&gt;场景三：个人效率服务化（适合有行业资源的人）
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;核心逻辑&lt;/strong&gt;：把你已经在用 OpenClaw 做的内部效率工具，包装成服务卖给同行。&lt;/p&gt;
&lt;p&gt;比如一个做招聘的人，用 OpenClaw 搭了一套「自动扫描 JD + 初筛简历 + 发邀约邮件」的流程，节省了自己 80% 的初筛时间——这套工具本身就可以作为 SaaS 服务卖给其他招聘从业者。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;收入来源&lt;/strong&gt;：服务订阅费&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;预期周期&lt;/strong&gt;：取决于你的行业资源，最快路径之一&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/openclaw-ai-agent-700-mrr-case-study/imgs/three-scenarios.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/openclaw-ai-agent-700-mrr-case-study/imgs/three-scenarios_hu_a93357fbc60f5c0f.png 480w, https://blog.ccino.org/p/openclaw-ai-agent-700-mrr-case-study/imgs/three-scenarios_hu_f7a7964612bc0348.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;三种可复制的 OpenClaw 变现路径：Newsletter自动化、标准化外包接单、个人效率服务化&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;在开始之前需要知道这件事&#34;&gt;在开始之前，需要知道这件事
&lt;/h2&gt;&lt;p&gt;最近两周，OpenClaw 的安全问题开始被更多人关注。&lt;/p&gt;
&lt;p&gt;Cisco AI 安全团队测试了一个第三方 OpenClaw 技能（skill），发现它在后台执行了&lt;strong&gt;数据外泄&lt;/strong&gt;和 &lt;strong&gt;Prompt 注入攻击&lt;/strong&gt;——将用户的文件信息悄悄发送到外部服务器，而用户完全不知情。&lt;/p&gt;
&lt;p&gt;与此同时，一名 CS 学生发现 OpenClaw 在他没有明确授权的情况下，自动创建了一个 MoltMatch 相亲平台账号并开始为他筛选配对对象。&lt;/p&gt;
&lt;p&gt;OpenClaw 官方已在 v2026.2.23 版本中修复了部分漏洞，但核心问题是一个&lt;strong&gt;认知和习惯问题&lt;/strong&gt;：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;我们习惯了给 App &amp;ldquo;授权一次然后不管&amp;rdquo;，但 AI Agent 的自主性远超一般 App，它能做的事和它&amp;quot;在做什么&amp;quot;，你需要主动保持关注。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;使用前的最低安全清单&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;只从官方仓库安装技能，不用来历不明的第三方 skill&lt;/li&gt;
&lt;li&gt;给 Agent 设置明确的权限范围（比如&amp;quot;只读邮件，不发送&amp;quot;）&lt;/li&gt;
&lt;li&gt;定期检查 Agent 的操作日志&lt;/li&gt;
&lt;li&gt;不要把银行账户、密码管理器类的敏感访问权限开放给 Agent&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&#34;最后说一句&#34;&gt;最后说一句
&lt;/h2&gt;&lt;p&gt;$700 MRR 和 $10K/7小时是真实发生的，但它们背后都有一个共同点：&lt;strong&gt;这些人在用 OpenClaw 之前，已经知道自己要解决什么问题&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;OpenClaw 是一个工具放大器，不是财富生成器。它能把你已经跑通的工作流加速 10 倍，但它无法替你想清楚&amp;quot;我到底要卖什么给谁&amp;quot;。&lt;/p&gt;
&lt;p&gt;如果你还没有一个明确的变现方向，我的建议是：先用 OpenClaw 给自己省时间，别急着想着用它赚钱。省下来的时间里，你才有机会找到那个真正值得放大的工作流。&lt;/p&gt;
&lt;hr&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&lt;strong&gt;站内相关阅读&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.ccino.org/p/openclaw-joins-openai/&#34; &gt;一个月爆火，被 OpenAI 收入麾下——开源 AI Agent 的命运转折&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.ccino.org/p/openclaw-paradox-why-ai-assistant-only-for-geeks/&#34; &gt;OpenClaw 悖论：为什么&amp;quot;人人可用&amp;quot;的 AI 助手，最终只属于极客？&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

    &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;延伸阅读&#34;&gt;延伸阅读
&lt;/h2&gt;&lt;h3 id=&#34;-openclaw-入门与实战&#34;&gt;🦞 OpenClaw 入门与实战
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.digitalocean.com/resources/articles/what-is-openclaw&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;What is OpenClaw? Your Open-Source AI Assistant for 2026&lt;/a&gt; — DigitalOcean 出品的官方级入门指南，覆盖安装、配置和常见场景&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.digitalocean.com/resources/articles/what-are-openclaw-skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;What are OpenClaw Skills? A 2026 Developer&amp;rsquo;s Guide&lt;/a&gt; — 专门讲 OpenClaw 技能（skill）体系，搭工作流必读&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.contextstudios.ai/blog/the-complete-openclaw-guide-how-we-run-an-ai-agent-in-production-2026&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;The Complete OpenClaw Guide: How We Run an AI Agent in Production&lt;/a&gt; — Context Studios 的生产环境部署完整记录，有真实踩坑经验&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/OpenClaw&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenClaw - Wikipedia&lt;/a&gt; — 项目完整历史：从 Clawdbot → Moltbot → OpenClaw 的演变脉络&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;-ai-agent-变现路径&#34;&gt;💰 AI Agent 变现路径
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.snaplama.com/blog/how-to-earn-money-from-ai-agents-in-2026-complete-monetization-strategy-guide&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How to Earn Money from AI Agents in 2026: Complete Monetization Strategy Guide&lt;/a&gt; — 系统梳理 AI Agent 变现的 5 种路径，含收入区间参考&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.myaiassistant.blog/2026/02/agentic-autonomous-ai-workflows-in-2026.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Agentic &amp;amp; Autonomous AI Workflows in 2026: How AI Agents Are Transforming Creator Automation Pipelines&lt;/a&gt; — 内容创作者视角，专门讲自动化流水线的搭法&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.browseract.com/blog/how-to-make-money-with-n8n-workflow-automation&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How to Make Money with n8n Workflow Automation 2026&lt;/a&gt; — 配合 n8n 构建更复杂自动化收益系统的参考&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;-安全风险必读&#34;&gt;🔐 安全风险必读
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blogs.cisco.com/ai/personal-ai-agents-like-openclaw-are-a-security-nightmare&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Personal AI Agents like OpenClaw Are a Security Nightmare&lt;/a&gt; — Cisco 官方博客，实测数据外泄和 Prompt 注入的完整过程&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.microsoft.com/en-us/security/blog/2026/02/19/running-openclaw-safely-identity-isolation-runtime-risk/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Running OpenClaw Safely: Identity, Isolation, and Runtime Risk&lt;/a&gt; — 微软安全团队出品，身份隔离和权限最小化的具体方案&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://thehackernews.com/2026/02/openclaw-bug-enables-one-click-remote.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenClaw Bug Enables One-Click Remote Code Execution via Malicious Link&lt;/a&gt; — The Hacker News 对 CVE-2026-25253 漏洞的详细报道&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Anthropic举报DeepSeek蒸馏Claude？这份指控，我们不该照单全收</title>
        <link>https://blog.ccino.org/p/anthropic-deepseek-distilling-claims-2026/</link>
        <pubDate>Fri, 27 Feb 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/anthropic-deepseek-distilling-claims-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/anthropic-deepseek-distilling-claims-2026/cover-ip-battle.png" alt="Featured image of post Anthropic举报DeepSeek蒸馏Claude？这份指控，我们不该照单全收" /&gt;&lt;p&gt;最近AI圈流传着一则劲爆消息：Anthropic公开声称，发现DeepSeek、月之暗面（Moonshot）、MiniMax三家中国AI公司，通过&lt;strong&gt;24,000个虚假账号、超过1,600万次对话&lt;/strong&gt;，大规模&amp;quot;蒸馏&amp;quot;Claude的输出来训练自家模型，并已将相关证据移交有关机构，永久封禁上述账号。&lt;/p&gt;
&lt;p&gt;消息一出，国内外科技媒体纷纷转载，评论区充斥着&amp;quot;抓贼了&amp;quot;&amp;ldquo;坐实了&amp;quot;的定论。&lt;/p&gt;
&lt;p&gt;但我想先停下来问几个问题：&lt;strong&gt;这件事，真的像Anthropic说的那样确凿吗？&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;什么是模型蒸馏它算偷吗&#34;&gt;什么是&amp;quot;模型蒸馏&amp;rdquo;，它算偷吗？
&lt;/h2&gt;&lt;p&gt;先解释一下技术背景。&amp;ldquo;模型蒸馏&amp;rdquo;（Model Distillation）是一种让小模型学习大模型行为的训练方法：用大模型（教师模型）生成大量输出，再用这些输出训练小模型（学生模型），让小模型尽量模仿大模型的回答风格和能力。&lt;/p&gt;
&lt;p&gt;这一概念由&amp;quot;深度学习教父&amp;quot;Geoffrey Hinton 与 Google 同事在 2015 年的论文《Distilling the Knowledge in a Neural Network》中正式提出，最初的目的是&lt;strong&gt;模型压缩&lt;/strong&gt;——把笨重的大模型&amp;quot;瘦身&amp;quot;，让它能部署到手机或边缘设备上。Hugging Face 的 DistilBERT 就是教科书级案例：体积缩小 40%、速度提升 60%，却保留了 BERT 97% 的语言理解能力。&lt;/p&gt;
&lt;p&gt;这个技术本身并不新鲜，也不是什么秘密武器。OpenAI早期的InstructGPT就借鉴了大量人类偏好数据；各家公司都会研究竞品模型的行为模式。问题的关键在于：&lt;strong&gt;大规模、系统性地用竞品模型输出作为训练数据，是否构成知识产权侵权？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;目前全球没有任何国家的法律对此有明确答案。这是一片真实的灰色地带。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/anthropic-deepseek-distilling-claims-2026/imgs/distillation-process.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/anthropic-deepseek-distilling-claims-2026/imgs/distillation-process_hu_f61b0bc4c3667a4c.png 480w, https://blog.ccino.org/p/anthropic-deepseek-distilling-claims-2026/imgs/distillation-process_hu_5cfe166a4de440d5.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;模型蒸馏：教师模型向学生模型传递知识的流程示意&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;anthropic的证据到底有多硬&#34;&gt;Anthropic的证据到底有多硬？
&lt;/h2&gt;&lt;p&gt;Anthropic公布的核心数据是：24,000个虚假账号 + 1,600万次对话交换。&lt;/p&gt;
&lt;p&gt;这两个数字听起来很确凿，但几个问题值得追问：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;一、这些账号如何被认定为&amp;quot;虚假账号&amp;quot;？&lt;/strong&gt; 是IP地址聚集？注册行为异常？还是有更直接的证据链？Anthropic目前披露的内容并不详细，外界无从独立验证。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;二、如何确定这些对话是用于训练数据收集，而不是正常API调用？&lt;/strong&gt; 大量调用Claude API本身并不违法，很多研究者、开发者都会做大批量测试。仅凭调用量，难以直接推断训练意图。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;三、&amp;ldquo;已移交有关机构&amp;quot;是哪个机构？&lt;/strong&gt; 这个描述模糊。如果移交的是美国执法机构，那后续会有正式法律程序；如果只是行业自律组织，则约束力有限。迄今没有任何第三方机构公开确认收到或正在调查此事。&lt;/p&gt;
&lt;h2 id=&#34;别忽视anthropic的利益动机&#34;&gt;别忽视Anthropic的利益动机
&lt;/h2&gt;&lt;p&gt;在评估任何指控时，我们都应该问：&lt;strong&gt;指控方有没有动机夸大或捏造？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Anthropic和DeepSeek是直接竞争对手。过去半年，DeepSeek凭借极低成本、极高性能在全球爆红，对Anthropic的市场份额和融资估值造成了实质性压力。此时发出这样一份&amp;quot;证据确凿&amp;quot;的指控，对Anthropic而言有明显的舆论收益：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在技术上抹黑竞争对手（&amp;ldquo;你的能力是抄来的&amp;rdquo;）&lt;/li&gt;
&lt;li&gt;在监管层面给中国AI公司制造麻烦&lt;/li&gt;
&lt;li&gt;转移外界对&amp;quot;Claude能力是否真的领先&amp;quot;的注意力&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这不是说Anthropic在说谎。但&lt;strong&gt;利益驱动的指控，需要更高标准的证据支撑&lt;/strong&gt;，而不是反过来——因为指控者声誉好，就默认指控为真。&lt;/p&gt;
&lt;h2 id=&#34;ai行业本身就活在知识产权灰色地带&#34;&gt;AI行业本身就活在&amp;quot;知识产权灰色地带&amp;rdquo;
&lt;/h2&gt;&lt;p&gt;说句可能让人不舒服的话：AI行业几乎没有人是&amp;quot;干净的&amp;quot;。&lt;/p&gt;
&lt;p&gt;OpenAI的GPT系列模型，用了大量未经授权爬取的互联网文本，包括数百万作家、记者、程序员的创作，至今仍面临多起版权诉讼。最具代表性的是2023年12月《纽约时报》对 OpenAI 提起的诉讼——这是美国第一家起诉 AI 公司的主流媒体机构。《纽约时报》指控 OpenAI 未经授权用数以百万计的新闻文章训练 ChatGPT，测试还显示 ChatGPT 可以几乎逐字复现其付费报道内容。OpenAI 的核心辩护是援引&amp;quot;合理使用&amp;quot;（fair use）原则。这场官司至今仍在审理中，尚无定论。Google的Gemini同样用了大量受版权保护的内容训练。连Anthropic的Claude，其训练数据来源也从未被完整公开过。&lt;/p&gt;
&lt;p&gt;在这个背景下，指责他人&amp;quot;蒸馏&amp;quot;自己模型的输出，多少有些&amp;quot;五十步笑百步&amp;quot;的意味。&lt;/p&gt;
&lt;p&gt;当然，这不代表蒸馏行为就可以被接受。只是说，这个行业的知识产权边界，还远没到任何一方可以理直气壮站在道德高地的程度。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/anthropic-deepseek-distilling-claims-2026/imgs/ai-gray-zone.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/anthropic-deepseek-distilling-claims-2026/imgs/ai-gray-zone_hu_8bd8c076ce86afe5.png 480w, https://blog.ccino.org/p/anthropic-deepseek-distilling-claims-2026/imgs/ai-gray-zone_hu_d8a5d7cf802bd091.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;各大 AI 公司共处知识产权灰色地带&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;deepseek们为什么没有激烈反驳&#34;&gt;DeepSeek们为什么没有激烈反驳？
&lt;/h2&gt;&lt;p&gt;有人会说：如果是冤枉的，DeepSeek应该出来辟谣啊。&lt;/p&gt;
&lt;p&gt;这个逻辑并不成立。公司对竞争对手的单方面指控通常有几种应对方式：公开否认、沉默、或通过法律途径回应。沉默不等于默认，尤其是当指控发生在竞争激烈、政治敏感的跨国商业环境中，法律和PR团队通常会建议谨慎表态，等待更明确的法律框架再行动。&lt;/p&gt;
&lt;p&gt;到目前为止，DeepSeek、月之暗面、MiniMax均未就此事发表实质性回应。这是寻常的危机公关策略，不能被解读为&amp;quot;心虚&amp;quot;。&lt;/p&gt;
&lt;h2 id=&#34;我们真正应该关注什么&#34;&gt;我们真正应该关注什么
&lt;/h2&gt;&lt;p&gt;这件事最值得持续追踪的，不是&amp;quot;DeepSeek到底有没有蒸馏Claude&amp;quot;，而是几个更深层的问题：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. AI模型输出的版权归属问题。&lt;/strong&gt; 如果我用Claude生成了1,000万条对话，这些对话的版权是谁的？是Claude（即Anthropic）？是我？还是无主？在法律层面，这个问题目前没有答案。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. 模型蒸馏是否应该被法律禁止？&lt;/strong&gt; 还是说，只要不直接复制模型权重，学习行为本身是合法的？这是AI监管领域的核心议题之一。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Anthropic的这次指控最终是否会走入法律程序？&lt;/strong&gt; 如果走，它会成为AI知识产权的开创性判例；如果不走，就说明这更像是一次公关行动。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Anthropic的指控可能是真的，也可能有夸大成分，或者处于某种双方都不完全清白的复杂状态。&lt;strong&gt;在独立核实出现之前，我们没有足够的理由选边站队。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;保持怀疑，等待证据，这不是&amp;quot;偏袒&amp;quot;任何一方，而是最基本的认知诚实。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;原文链接&#34;&gt;原文链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/ClaudeAI/comments/1rd1j8u/anthropic_just_dropped_evidence_that_deepseek/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reddit r/ClaudeAI：Anthropic just dropped evidence that DeepSeek, Moonshot and MiniMax were mass-distilling Claude（2295赞 · 402评论）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.anthropic.com/news&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic 官方新闻&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;扩展阅读&#34;&gt;扩展阅读
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/Knowledge_distillation&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;什么是模型蒸馏？（Wikipedia: Knowledge distillation）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/The_New_York_Times_Co._v._OpenAI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI 版权诉讼：纽约时报诉 OpenAI 案&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.theverge.com/2023/7/10/23790313/generative-ai-training-data-copyright-lawsuit-regulation&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AI 训练数据的版权困境：谁的内容，谁的模型？&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Claude Code 1岁，创始人说&#34;编程已被解决&#34;——20年老程序员的反击来了</title>
        <link>https://blog.ccino.org/p/claude-code-first-birthday-coding-solved-2026/</link>
        <pubDate>Thu, 26 Feb 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/claude-code-first-birthday-coding-solved-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/claude-code-first-birthday-coding-solved-2026/imgs/cover.png" alt="Featured image of post Claude Code 1岁，创始人说&#34;编程已被解决&#34;——20年老程序员的反击来了" /&gt;&lt;p&gt;一年前的这个月，Claude Code 悄悄发布了。&lt;/p&gt;
&lt;p&gt;没有盛大的发布会，没有铺天盖地的营销，就那么出现了。一个可以在命令行里对话的 AI，理解代码上下文，能修改文件，能跑测试，能自己解决报错。&lt;/p&gt;
&lt;p&gt;一年后，r/ClaudeAI 上有人发帖：&amp;ldquo;On this day last year, coding changed forever. Happy 1st birthday, Claude Code.&amp;quot;——1745 人点赞，没有争议。&lt;/p&gt;
&lt;p&gt;但真正引爆讨论的，是 Claude Code 创始人在 Fortune 杂志说的那句话：&lt;strong&gt;&amp;ldquo;软件工程师今年可能灭绝。编程，已经被解决了。&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;编程已被解决他到底说的是什么&#34;&gt;&amp;ldquo;编程已被解决&amp;rdquo;，他到底说的是什么
&lt;/h2&gt;&lt;p&gt;这句话在 Reddit 上炸了。r/programming 的帖子&amp;quot;Creator of Claude Code: Coding is solved&amp;quot;收到 786 条评论，成为本周技术社区讨论最激烈的话题之一。&lt;/p&gt;
&lt;p&gt;先别急着反驳，也别急着转发。&lt;/p&gt;
&lt;p&gt;&amp;ldquo;编程已被解决&amp;quot;并不是说&amp;quot;不再需要程序员&amp;rdquo;。更准确的理解是：&lt;strong&gt;写代码这件事，已经不再是稀缺能力了。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;一年前，能写出能跑的代码，本身就是门槛。现在呢？你用自然语言描述需求，AI 给你写出来，能跑，基本上没 bug。这个&amp;quot;从零到能跑&amp;quot;的过程，确实被&amp;quot;解决&amp;quot;了。&lt;/p&gt;
&lt;p&gt;Anthropic 发布的数据印证了这一点：今天，全球 41% 的代码是由 AI 生成或协助生成的。92% 的美国开发者每天都在使用 AI 编程工具。&lt;/p&gt;
&lt;p&gt;这些数字不是预测，是现状。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-code-first-birthday-coding-solved-2026/imgs/ai-coding-stats.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-code-first-birthday-coding-solved-2026/imgs/ai-coding-stats_hu_15a55e04a267cd1e.png 480w, https://blog.ccino.org/p/claude-code-first-birthday-coding-solved-2026/imgs/ai-coding-stats_hu_e5aaf9f00c00883f.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;2026年编程现状数据：全球41%代码由AI生成，92%开发者每日使用AI工具&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;但问题来了：如果写代码这件事变得这么容易，那程序员这个职业到底发生了什么？&lt;/p&gt;
&lt;h2 id=&#34;老程序员的反击ai-不会的才是你的护城河&#34;&gt;老程序员的反击：AI 不会的，才是你的护城河
&lt;/h2&gt;&lt;p&gt;在所有的讨论中，有一篇帖子特别值得读。&lt;/p&gt;
&lt;p&gt;一位写了 20 多年代码的程序员，发帖说了他对 AI 工具的&amp;quot;诚实看法&amp;rdquo;。这篇帖子获得了 1797 赞和 415 条评论。他不是在反 AI，恰恰相反，他是 Claude Code 的重度用户。但他说清楚了一件事：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;AI 写得了代码，但理解不了你为什么要这样设计。它解决当前的问题，但它不知道这个系统三年后会长成什么样。&amp;rdquo;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;这话说到点子上了。&lt;/p&gt;
&lt;p&gt;举个具体的例子。你让 AI 帮你写一个用户权限系统，它可以写得很完整——角色、权限、接口全都有。但它不知道：你们公司未来两年要做多租户，权限模型需要留出扩展空间；你们团队有三个新人，代码要写得可读不能过度抽象；你们用的是某个特定版本的框架，有个已知的坑要绕过去。&lt;/p&gt;
&lt;p&gt;这些上下文，是靠经验积累的判断，不是从代码本身能看出来的。&lt;/p&gt;
&lt;p&gt;AI 擅长&amp;quot;给定问题，求解&amp;quot;。人擅长&amp;quot;定义问题，问对问题&amp;quot;。&lt;/p&gt;
&lt;p&gt;两者之间，差着一整个工程判断的鸿沟。&lt;/p&gt;
&lt;h2 id=&#34;ai-在做什么人在做什么&#34;&gt;AI 在做什么，人在做什么
&lt;/h2&gt;&lt;p&gt;Opus 4.6 最近做了一件让很多人震惊的事：有人让它自主完成 Blender Donut Tutorial（一个经典的 3D 建模入门教程），它的做法是——&lt;strong&gt;看 YouTube 视频，自学，然后做出来&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;全程没有人工干预。帖子在 r/ClaudeAI 上获得 1725 赞。&lt;/p&gt;
&lt;p&gt;这个演示很有冲击力。AI 已经可以通过视频自学一门技能，然后付诸执行。听起来，好像真的没什么是 AI 做不到的了。&lt;/p&gt;
&lt;p&gt;但仔细想想，这个演示展示的是什么？&lt;/p&gt;
&lt;p&gt;是执行能力。是&amp;quot;按教程，一步一步做出来&amp;quot;的能力。&lt;/p&gt;
&lt;p&gt;而真实的工程工作，恰恰不是&amp;quot;按教程&amp;quot;。教程是已知的、确定的、边界清晰的。工程问题是模糊的、有历史包袱的、充满权衡的。&lt;/p&gt;
&lt;p&gt;你遇到的是：一个 10 年前的遗留系统，文档残缺，原作者离职了，代码里有几处奇怪的 hack，不知道是 bug 还是 feature；产品说&amp;quot;加个功能&amp;quot;，但没说清楚，你得去沟通、理解、对齐；上线前发现一个边界情况，要在两个小时内判断：修还是不修，风险有多大。&lt;/p&gt;
&lt;p&gt;这些场景里，AI 是你的工具，但不是你的替代品。&lt;/p&gt;
&lt;h2 id=&#34;价值在哪里转移了&#34;&gt;价值在哪里转移了
&lt;/h2&gt;&lt;p&gt;这一年，Claude Code 改变的其实不是&amp;quot;程序员做什么&amp;quot;，而是&amp;quot;程序员把精力放在哪里&amp;quot;。&lt;/p&gt;
&lt;p&gt;以前，写代码本身要花大量时间。样板代码、CRUD 接口、单元测试……这些东西技术含量不高，但必须写，还容易写错。现在，AI 把这部分接管了。程序员被解放出来，去做更需要判断的事。&lt;/p&gt;
&lt;p&gt;真正发生变化的是这三件事：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-code-first-birthday-coding-solved-2026/imgs/value-shift.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-code-first-birthday-coding-solved-2026/imgs/value-shift_hu_e8d48992ec369917.png 480w, https://blog.ccino.org/p/claude-code-first-birthday-coding-solved-2026/imgs/value-shift_hu_952c05116d57df48.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;程序员价值的转移：系统理解、质量判断、跨领域沟通&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第一，系统理解变得更重要了。&lt;/strong&gt; AI 能写单个函数，但它不理解你整个系统的架构意图。谁来理解？你。你需要能看懂一个陌生系统，能解释它的设计原因，能预判一个改动的影响范围。这种能力，是靠大量阅读代码、做过真实项目才能积累的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第二，质量判断变得更核心了。&lt;/strong&gt; AI 生成的代码不一定对，就算跑起来了也不一定好。判断代码质量，发现潜在问题，做出取舍——这些事，AI 做得到，但做得没有经验丰富的工程师好。Review AI 代码，成了新的核心技能。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第三，跨领域沟通成了差异化优势。&lt;/strong&gt; 当写代码不再是门槛，和产品、设计、业务沟通的能力就成了稀缺资源。能把技术方案讲清楚，能把业务需求翻译成可实现的任务，能在会议室里推动决策——这些，AI 暂时替代不了你。&lt;/p&gt;
&lt;h2 id=&#34;2026-年程序员最该培养的三个能力&#34;&gt;2026 年，程序员最该培养的三个能力
&lt;/h2&gt;&lt;p&gt;不是危言耸听，也不是盲目乐观。说几个实际的建议：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第一，学会提需求，比学会写代码更紧迫。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;用 AI 编程，最大的门槛不是技术，是&amp;quot;把问题说清楚&amp;quot;。你的 Prompt 越准确，上下文越充分，AI 给出的答案越接近你真正想要的。这是一种需要训练的能力，和写作能力高度相关，和技术深度关系不大。&lt;/p&gt;
&lt;p&gt;从现在开始，刻意练习用一段话描述一个技术问题：背景是什么，限制是什么，期望的结果是什么，什么是可以接受的次优解。这种能力，AI 时代只会越来越值钱。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第二，读代码，不只是写代码。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;AI 生成代码的速度远超人工审查的速度。现在的工程师，一天内会接触到大量 AI 生成的代码。能快速读懂、判断质量、发现隐患，是真正的生产力护城河。&lt;/p&gt;
&lt;p&gt;最好的训练方法：读优秀的开源项目，读 PR，读你们系统里那些&amp;quot;不知道为什么这样写&amp;quot;的代码，搞清楚背后的原因。这种能力积累慢，但 AI 替代不了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第三，建立你的技术品味。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;什么是好代码？什么是过度设计？什么时候该用简单实现，什么时候该做抽象？这些判断，没有唯一正确答案，但有高下之分。&lt;/p&gt;
&lt;p&gt;技术品味是经验积累的结晶，也是你区别于 AI 的最终壁垒。不断反思自己做的决定，复盘出了问题的代码，保持对&amp;quot;好的工程&amp;quot;的标准——这不是软技能，是核心竞争力。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Claude Code 一岁了，但这场讨论才刚开始。&lt;/p&gt;
&lt;p&gt;&amp;ldquo;编程已被解决&amp;quot;这个说法，与其说是预言，不如说是一个提醒：那些机械的、重复的、按图索骥的编程工作，确实正在被解决。但那些需要判断、需要理解、需要沟通的工程能力，没有被解决，也不会被解决。&lt;/p&gt;
&lt;p&gt;那位 20 年工龄的程序员说得对：AI 改变的不是程序员的价值，而是程序员价值的构成。&lt;/p&gt;
&lt;p&gt;写代码，从来不是终点。理解问题、做出判断、推动系统演进——这才是工程师真正做的事。&lt;/p&gt;
&lt;p&gt;这些，一年前是，一年后也是。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/programming/comments/1rakdst/creator_of_claude_code_coding_is_solved/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Creator of Claude Code: &amp;ldquo;Coding is solved&amp;rdquo;（Reddit r/programming，2128⬆️ 786💬）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/ClaudeAI/comments/1ra3fiq/coding_for_20_years_here_is_my_honest_take_on_ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Coding for 20+ years, here is my honest take on AI tools（Reddit r/ClaudeAI，1797⬆️ 415💬）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/ClaudeAI/comments/1rdir26/i_had_opus_46_complete_the_entire_blender_donut/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;I had Opus 4.6 complete the entire Blender Donut Tutorial autonomously（Reddit r/ClaudeAI，1725⬆️）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/ClaudeAI/comments/1rcfac5/on_this_day_last_year_coding_changed_forever/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Happy 1st birthday, Claude Code（Reddit r/ClaudeAI，1745⬆️）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://fortune.com/2026/02/24/will-claude-destroy-software-engineer-coding-jobs-creator-says-printing-press/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&amp;lsquo;It&amp;rsquo;s going to be painful&amp;rsquo;: Software engineers could go extinct this year, says Claude Code creator（Fortune）&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;扩展阅读&#34;&gt;扩展阅读
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://youtube.com/watch?v=goOZSXmrYQ4&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;My COMPLETE Agentic Coding Workflow to Build Anything（Cole Medin，YouTube）&lt;/a&gt; — 完整的 Agentic 编程工作流实战演示&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://youtube.com/watch?v=86HM0RUWhCk&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Building Beautiful Websites with Claude Code Is Too Easy（Nate Herk，YouTube）&lt;/a&gt; — Claude Code 构建网站的真实体验&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.secondtalent.com/resources/vibe-coding-statistics/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Top Vibe Coding Statistics &amp;amp; Trends 2026（Second Talent）&lt;/a&gt; — 92%/41% 数据来源&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://northflank.com/blog/claude-code-vs-cursor-comparison&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Code vs Cursor: Complete comparison guide 2026（Northflank）&lt;/a&gt; — 两款主流 AI 编程工具深度对比&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Anthropic 最大胆的一步：让 AI 成为你公司的正式员工</title>
        <link>https://blog.ccino.org/p/anthropic-claude-cowork-enterprise-2026/</link>
        <pubDate>Wed, 25 Feb 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/anthropic-claude-cowork-enterprise-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/anthropic-claude-cowork-enterprise-2026/imgs/cover.png" alt="Featured image of post Anthropic 最大胆的一步：让 AI 成为你公司的正式员工" /&gt;&lt;p&gt;2026年2月24日，美国股市开盘后，一批 SaaS 公司的股票悄悄开始下跌。&lt;/p&gt;
&lt;p&gt;没有宏观数据，没有财报雷，只是 Anthropic 发了一篇博客。&lt;/p&gt;
&lt;p&gt;那篇博客的标题是：《Claude Cowork 的企业插件，现在全面覆盖企业工作流》。&lt;/p&gt;
&lt;p&gt;CNN 的编辑看完，给自己的报道起了个耿直的标题——&lt;strong&gt;&amp;ldquo;AI coming for office jobs&amp;rdquo;&lt;/strong&gt;。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;昨天到底发生了什么&#34;&gt;昨天到底发生了什么
&lt;/h2&gt;&lt;p&gt;如果你还不熟悉 Claude Cowork，可以这样理解：它是 Anthropic 版本的&amp;quot;AI 工作助手&amp;quot;，类似于把 Claude 从一个聊天窗口，变成一个你可以日常共事的虚拟同事。&lt;/p&gt;
&lt;p&gt;而 2 月 24 日这次更新，做的事情是：&lt;strong&gt;给这个虚拟同事配上了一把万能钥匙&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;具体来说，Claude Cowork 接入了以下企业级软件：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;通用办公层&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Google Workspace（日历、云盘、Gmail 全家桶）&lt;/li&gt;
&lt;li&gt;WordPress（内容发布）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;法律与签约&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DocuSign（电子签名）&lt;/li&gt;
&lt;li&gt;LegalZoom（法律文件）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;金融与数据&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;FactSet（投资研究数据）&lt;/li&gt;
&lt;li&gt;MSCI（风险模型与 ESG 数据）&lt;/li&gt;
&lt;li&gt;S&amp;amp;P Global（信用评级与市场数据）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;销售与市场&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Clay（客户数据整合）&lt;/li&gt;
&lt;li&gt;Apollo（销售线索）&lt;/li&gt;
&lt;li&gt;Outreach（销售自动化）&lt;/li&gt;
&lt;li&gt;Similarweb（竞品流量分析）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;垂直行业&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Harvey（法律 AI）&lt;/li&gt;
&lt;li&gt;以及覆盖 HR 招聘、私募研究、财富管理的行业专属插件&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这份名单第一眼看起来像是一个企业软件展览。但如果你把这些工具的功能在脑子里串一遍，就会明白为什么 SaaS 股票当天跌了：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;这些，是一个&amp;quot;完整员工&amp;quot;每天要用的全部工具。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;为什么软件股当天跌了&#34;&gt;为什么软件股当天跌了
&lt;/h2&gt;&lt;p&gt;SaaS 公司的生意模型，有一个隐含前提：&lt;strong&gt;人类员工需要工具来完成工作&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;FactSet 每年向投行分析师收取几万美元订阅费，因为那个分析师需要用它调数据、写研报。DocuSign 向每家律所收费，因为律师需要发合同、追签名。Clay 向销售团队收费，因为 SDR 需要整合客户数据。&lt;/p&gt;
&lt;p&gt;Claude Cowork 接入这些工具之后，情况变了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AI 不再需要借助&amp;quot;工具&amp;quot;来完成工作——它直接调用这些工具，自己把工作做完。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;换句话说：过去是&amp;quot;人 → 工具 → 结果&amp;quot;，现在变成了&amp;quot;AI + 工具 → 结果&amp;quot;，而人只是在结果出来后点一下&amp;quot;确认&amp;quot;。&lt;/p&gt;
&lt;p&gt;市场担心的是，如果企业大规模用 Claude Cowork 替代部分岗位，那些软件的座位数会减少。每少一个需要用 FactSet 的分析师，FactSet 就少一份订阅收入。&lt;/p&gt;
&lt;p&gt;这个逻辑不一定会马上成真，但股市对预期定价，不对现实定价。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/anthropic-claude-cowork-enterprise-2026/imgs/workflow-shift.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/anthropic-claude-cowork-enterprise-2026/imgs/workflow-shift_hu_b8267a29a9430744.png 480w, https://blog.ccino.org/p/anthropic-claude-cowork-enterprise-2026/imgs/workflow-shift_hu_8f395eff2a5ce6d8.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;工作流变革对比：过去「人→工具→结果」vs 现在「AI&amp;#43;工具→结果」&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;最被低估的功能企业私有-agent-市场&#34;&gt;最被低估的功能：企业私有 Agent 市场
&lt;/h2&gt;&lt;p&gt;这次更新里，有一个功能我觉得国内报道几乎没怎么提，但可能是最关键的：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;企业可以建立自己的私有 Agent 市场，并在组织内分发。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;什么意思？&lt;/p&gt;
&lt;p&gt;举个例子。一家投行可以：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;用 Claude Cowork 构建一个&amp;quot;投研助理 Agent&amp;quot;，专门负责整合 FactSet + MSCI 数据、起草研报初稿&lt;/li&gt;
&lt;li&gt;把这个 Agent 上架到公司内部的&amp;quot;Agent 应用商店&amp;quot;&lt;/li&gt;
&lt;li&gt;全公司的分析师都可以一键订阅使用&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这和以前的 SaaS 工具逻辑完全不同。&lt;/p&gt;
&lt;p&gt;以前，IT 部门采购一个工具，所有人用同一个工具。现在，业务团队可以&lt;strong&gt;自己定制 Agent，然后像发布内部软件一样，向同事分发这个 Agent&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这意味着 Anthropic 在做的，不只是一个&amp;quot;更聪明的助手&amp;quot;，而是一个&lt;strong&gt;企业内部的 AI 基础设施&lt;/strong&gt;。每家公司都可以在上面构建自己的 Agent 生态。&lt;/p&gt;
&lt;p&gt;Anthropic 的定位，从&amp;quot;AI 聊天公司&amp;quot;变成了&amp;quot;企业 AI 操作系统提供商&amp;quot;。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;哪些岗位最先被影响&#34;&gt;哪些岗位最先被影响
&lt;/h2&gt;&lt;p&gt;不绕弯子，直接说。&lt;/p&gt;
&lt;p&gt;从这次接入的工具来看，最先受到冲击的，是那些**工作内容高度可被拆解为&amp;quot;数据输入 → 处理 → 输出文档&amp;quot;**的岗位。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;初级投行分析师&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;他们的日常：从 FactSet 和 Bloomberg 拉数据，做成 Excel 模型，写成研报 PPT。Claude Cowork 接入 FactSet + S&amp;amp;P Global + MSCI 之后，这个工作链条几乎可以全自动。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;法律助理 / 合同审查&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;DocuSign + Harvey + LegalZoom 的组合，基本覆盖了法律流程中最耗时的部分：合同起草、条款审查、电子签名追踪。初级法律助理的工作量会被大幅压缩。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;销售发展代表（SDR）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Clay + Apollo + Outreach 是 SDR 的三件套：找线索、整理客户画像、发跟进邮件。这三件事 AI 已经可以做得比大多数人快十倍。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;HR 招聘初筛&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这次更新里专门提到了 HR 招聘插件，覆盖简历筛选和入职引导。高量级的简历处理场景，AI 的效率优势是数量级的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;内容运营 / SEO 专员&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;WordPress 插件 + Claude 的组合，让内容生产和发布的自动化程度大幅提升。批量生产标准化内容的岗位，需求会缩减。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/anthropic-claude-cowork-enterprise-2026/imgs/jobs-impact.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/anthropic-claude-cowork-enterprise-2026/imgs/jobs-impact_hu_9249dcb92ebbbdc5.png 480w, https://blog.ccino.org/p/anthropic-claude-cowork-enterprise-2026/imgs/jobs-impact_hu_791961b3402d7238.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;最先受影响的五类岗位：投行分析师、法律助理、SDR、HR招聘、内容运营&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;对普通打工人这意味着什么&#34;&gt;对普通打工人，这意味着什么
&lt;/h2&gt;&lt;p&gt;先说一个可能让你稍微安心的事实：&lt;strong&gt;替代不是同质的，时间不是同步的&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;在过去每一次生产力工具升级中（PC、互联网、SaaS），消失的都是&amp;quot;任务&amp;quot;，而不总是&amp;quot;岗位&amp;quot;。一个分析师学会用 AI 做数据，可以在同样时间内产出三份研报，而不是一份。这让他变得更值钱，而不是更容易被裁。&lt;/p&gt;
&lt;p&gt;但这有一个前提：&lt;strong&gt;你得是那个主动学会用 AI 的人。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;现在的情况是：&lt;strong&gt;工具已经不再需要你学会操作&lt;/strong&gt;。Claude Cowork 接入 Google Workspace 之后，你不需要学什么 prompt 工程，你只需要说&amp;quot;帮我整理一下这周所有需要跟进的事项&amp;quot;，它就去翻你的 Gmail、Calendar 和云盘，给你一份清单。&lt;/p&gt;
&lt;p&gt;这一轮 AI 普及的门槛，比所有人预期的都低。&lt;/p&gt;
&lt;p&gt;这意味着，&lt;strong&gt;那些依赖&amp;quot;技能壁垒&amp;quot;来保住饭碗的人，壁垒正在消失&lt;/strong&gt;。而那些依赖&amp;quot;判断力、经验、人际关系、创造力&amp;quot;来创造价值的人，短期内反而是受益者——因为 AI 承包了他们工作里最耗时的执行部分，他们有更多时间做 AI 做不了的事。&lt;/p&gt;
&lt;p&gt;实际上，Anthropic 在描述这次更新时用了一个词：&lt;strong&gt;&amp;ldquo;turbo charge&amp;rdquo;&lt;/strong&gt;（给员工的能力加涡轮增压）。&lt;/p&gt;
&lt;p&gt;他们的叙事框架是：AI 不是来替代你的，是来让你变得更厉害的。&lt;/p&gt;
&lt;p&gt;但这句话的潜台词是：&lt;strong&gt;&amp;ldquo;前提是你愿意被涡轮增压，而不是坐在那里等着&amp;rdquo;&lt;/strong&gt;。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;最后说一句&#34;&gt;最后说一句
&lt;/h2&gt;&lt;p&gt;2026 年 2 月 24 日，我觉得可以被记在 AI 历史上，不是什么大里程碑，但是一个静水深流的时刻。&lt;/p&gt;
&lt;p&gt;AI 终于不是在和人类聊天了。&lt;/p&gt;
&lt;p&gt;它开始帮你发邮件、签合同、整合客户数据、起草研报、筛简历。&lt;/p&gt;
&lt;p&gt;它开始出现在企业的内部系统里，被当成一个部门分发给每个人使用。&lt;/p&gt;
&lt;p&gt;SaaS 公司的股票下跌，不是因为 AI 赢了什么大战，而是因为市场意识到：&lt;strong&gt;AI 不是在做人类做的事，它是在做人类不得不花时间做的那些事&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;而那些事，正在消失。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;参考来源：&lt;a class=&#34;link&#34; href=&#34;https://www.cnbc.com/2026/02/24/anthropic-claude-cowork-office-worker.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CNBC&lt;/a&gt; | &lt;a class=&#34;link&#34; href=&#34;https://techcrunch.com/2026/02/24/anthropic-launches-new-push-for-enterprise-agents-with-plugins-for-finance-engineering-and-design/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;TechCrunch&lt;/a&gt; | &lt;a class=&#34;link&#34; href=&#34;https://www.cnn.com/2026/02/24/tech/anthropic-claude-plugins-office-jobs&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CNN Business&lt;/a&gt; | &lt;a class=&#34;link&#34; href=&#34;https://claude.com/blog/cowork-plugins-across-enterprise&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude 官方博客&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Claude Sonnet 4.6 之后：技术团队如何用“多模型分工”降本提效</title>
        <link>https://blog.ccino.org/p/claude-sonnet-4-6-multi-model-routing/</link>
        <pubDate>Tue, 24 Feb 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/claude-sonnet-4-6-multi-model-routing/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/claude-sonnet-4-6-multi-model-routing/imgs/cover-multi-model-routing.png" alt="Featured image of post Claude Sonnet 4.6 之后：技术团队如何用“多模型分工”降本提效" /&gt;&lt;h1 id=&#34;claude-sonnet-46-之后技术团队如何用多模型分工降本提效&#34;&gt;Claude Sonnet 4.6 之后：技术团队如何用“多模型分工”降本提效
&lt;/h1&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-sonnet-4-6-multi-model-routing/imgs/cover-multi-model-routing.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-sonnet-4-6-multi-model-routing/imgs/cover-multi-model-routing_hu_fd7dc7a2d048db69.png 480w, https://blog.ccino.org/p/claude-sonnet-4-6-multi-model-routing/imgs/cover-multi-model-routing_hu_8c74d0d43924d466.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;封面图：多模型分工路由&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;
2026 年 2 月，大模型更新节奏明显加快。很多团队第一反应是：要不要立刻全量切新模型？谁才是“最强”？&lt;/p&gt;
&lt;p&gt;但真正做过生产落地的人会发现，这些问题都不够关键。现在更重要的是：&lt;strong&gt;别再押注单一模型，而是建立“任务级多模型分工”体系&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;换句话说，竞争力不再来自“你选中了谁”，而来自“模型变化时你是否还能稳定交付”。&lt;/p&gt;
&lt;h2 id=&#34;1为什么单模型策略正在失效&#34;&gt;1）为什么单模型策略正在失效
&lt;/h2&gt;&lt;p&gt;原因很现实：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;各家模型能力越来越接近，但长板不同；&lt;/li&gt;
&lt;li&gt;价格梯度明显，同一任务选错模型会放大成本；&lt;/li&gt;
&lt;li&gt;延迟、限流、稳定性正在变成一线生产指标；&lt;/li&gt;
&lt;li&gt;模型迭代太快，全量迁移很容易反复返工。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以，2026 年更稳的策略不是“只用一个最强模型”，而是：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&lt;strong&gt;Sonnet 常驻主力 + Opus 关键兜底 + Gemini/GPT 按任务补位 + 动态路由切换&lt;/strong&gt;。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;h2 id=&#34;2先分任务再选模型&#34;&gt;2）先分任务，再选模型
&lt;/h2&gt;&lt;p&gt;先把团队任务按业务价值分层，而不是先按模型做决策：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A 类（高价值高风险）&lt;/strong&gt;：核心代码、关键推理、对外关键输出&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;B 类（中价值）&lt;/strong&gt;：需求拆解、代码解释、文档初稿&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;C 类（流程型）&lt;/strong&gt;：批量摘要、抽取、格式转换&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;D 类（低风险重复）&lt;/strong&gt;：分类、润色、模板回复&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;分层之后再决定分工：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A 类优先质量与可控性；&lt;/li&gt;
&lt;li&gt;B 类优先效率与稳定；&lt;/li&gt;
&lt;li&gt;C/D 类优先吞吐与成本。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;3可直接落地的分工矩阵&#34;&gt;3）可直接落地的分工矩阵
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-sonnet-4-6-multi-model-routing/imgs/body-task-layer-matrix.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-sonnet-4-6-multi-model-routing/imgs/body-task-layer-matrix_hu_f5ea426e853344de.png 480w, https://blog.ccino.org/p/claude-sonnet-4-6-multi-model-routing/imgs/body-task-layer-matrix_hu_b9fe9523071606be.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;正文配图：任务分层与模型分工矩阵&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;建议用这套默认策略：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;核心编码/重构（A 类）&lt;/strong&gt;：Opus 级或 Sonnet + 强校验；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;日常研发辅助（B 类）&lt;/strong&gt;：Sonnet 4.6 作为默认主力，Gemini/GPT 作为并行补位；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;长文档/跨文件分析（B/C 类）&lt;/strong&gt;：Sonnet 长上下文通道，Gemini 长文档能力作为备选；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;批量流程任务（C/D 类）&lt;/strong&gt;：轻量模型优先（如 GPT-4o-mini / Gemini Flash），质量不足再升级 Sonnet；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;外部可见内容（A/B 类）&lt;/strong&gt;：Sonnet + 人审，必要时升级 Opus 或切换 Gemini/GPT 复核。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;核心原则只有两条：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;主模型是默认通道，不是唯一通道；&lt;/li&gt;
&lt;li&gt;备模型必须提前压测，不能等故障时临时救火。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;4三种路由模式按业务目标切换&#34;&gt;4）三种路由模式，按业务目标切换
&lt;/h2&gt;&lt;h3 id=&#34;质量优先核心业务&#34;&gt;质量优先（核心业务）
&lt;/h3&gt;&lt;p&gt;高能力模型优先，配测试/规则/人审，适合关键功能与复杂改造。&lt;/p&gt;
&lt;h3 id=&#34;成本优先规模化流程&#34;&gt;成本优先（规模化流程）
&lt;/h3&gt;&lt;p&gt;Sonnet 或轻量模型优先，低置信度任务自动升级，适合后台批处理。&lt;/p&gt;
&lt;h3 id=&#34;时延优先交互场景&#34;&gt;时延优先（交互场景）
&lt;/h3&gt;&lt;p&gt;首 token 速度优先，超时自动降级，适合 Copilot、客服、实时助手。&lt;/p&gt;
&lt;p&gt;一个常见误区是全业务线强行统一模式。正确做法是：不同业务线并行不同路由策略。&lt;/p&gt;
&lt;h2 id=&#34;5成本治理别只看-token&#34;&gt;5）成本治理别只看 token
&lt;/h2&gt;&lt;p&gt;很多团队 token 降了，但返工和人审成本上去了。真正该看的是&lt;strong&gt;单位任务成本&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;建议至少监控 5 个指标：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;任务成功率（按任务层级）&lt;/li&gt;
&lt;li&gt;单位任务成本（含返工）&lt;/li&gt;
&lt;li&gt;P95 延迟&lt;/li&gt;
&lt;li&gt;主备切换率（升级率）&lt;/li&gt;
&lt;li&gt;人工返工率&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果 Sonnet 已做默认层，但升级率长期偏高，通常不是模型不行，而是任务切分、提示结构或流程设计有问题。&lt;/p&gt;
&lt;h2 id=&#34;6没有回滚能力就没有生产资格&#34;&gt;6）没有回滚能力，就没有生产资格
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-sonnet-4-6-multi-model-routing/imgs/body-fallback-rollback-flow.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-sonnet-4-6-multi-model-routing/imgs/body-fallback-rollback-flow_hu_a987755a63022302.png 480w, https://blog.ccino.org/p/claude-sonnet-4-6-multi-model-routing/imgs/body-fallback-rollback-flow_hu_39deef8b711f6df.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;正文配图：监控告警与降级回滚闭环&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;多模型系统必须具备两类“保险丝”：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;一键降级&lt;/strong&gt;：快速切回稳定模型；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;一键回滚&lt;/strong&gt;：恢复上个已验证路由版本。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;再配合灰度发布与故障演练，你的系统才不会在模型波动时被动失控。&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;模型可以激进迭代，生产系统必须保守治理。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;h2 id=&#34;730-天落地清单&#34;&gt;7）30 天落地清单
&lt;/h2&gt;&lt;p&gt;**第 1 周：**盘点任务并完成 A/B/C/D 分层，定义各类 KPI。
**第 2 周：**建立“主模型 + 备模型”路由，配置切换阈值。
**第 3 周：**上线成本、质量、延迟看板，接入告警。
**第 4 周：**做降级/回滚演练，固化成团队路由规范。&lt;/p&gt;
&lt;h2 id=&#34;8具体实现方案最小可运行-docker-compose&#34;&gt;8）具体实现方案（最小可运行 Docker Compose）
&lt;/h2&gt;&lt;p&gt;下面给一套可以直接跑起来的最小方案：先用 LiteLLM Proxy 做统一路由网关，先跑通“Sonnet 主力 + Opus 兜底 + 轻量模型批处理”，再逐步扩展监控和策略中心。&lt;/p&gt;
&lt;h3 id=&#34;81-准备&#34;&gt;8.1 准备
&lt;/h3&gt;&lt;p&gt;在同一目录放置两个文件：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;docker-compose.yml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;litellm.config.yaml&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;并在环境中配置：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ANTHROPIC_API_KEY&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;OPENAI_API_KEY&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GEMINI_API_KEY&lt;/code&gt;（用于 Google Gemini 模型）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;82-docker-composeyml&#34;&gt;8.2 docker-compose.yml
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;services&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;litellm&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;ghcr.io/berriai/litellm:main-latest&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;container_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;litellm-proxy&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;restart&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;unless-stopped&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ports&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;4000:4000&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;volumes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;./litellm.config.yaml:/app/config.yaml:ro&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;LITELLM_MASTER_KEY=sk-local-dev&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;OPENAI_API_KEY=${OPENAI_API_KEY}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;GEMINI_API_KEY=${GEMINI_API_KEY}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;command&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;--config&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;/app/config.yaml&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;--port&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;4000&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;--host&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;0.0.0.0&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;83-litellmconfigyaml&#34;&gt;8.3 litellm.config.yaml
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;model_list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;model_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;sonnet-default&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;litellm_params&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;anthropic/claude-sonnet-4-6&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;api_key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;os.environ/ANTHROPIC_API_KEY&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;model_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;opus-fallback&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;litellm_params&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;anthropic/claude-opus-4-6&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;api_key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;os.environ/ANTHROPIC_API_KEY&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;model_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;gemini-longctx&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;litellm_params&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;gemini/gemini-2.5-pro&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;api_key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;os.environ/GEMINI_API_KEY&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;model_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;fast-cheap&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;litellm_params&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;openai/gpt-4o-mini&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;api_key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;os.environ/OPENAI_API_KEY&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;general_settings&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;master_key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;os.environ/LITELLM_MASTER_KEY&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;router_settings&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;routing_strategy&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;simple-shuffle&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;num_retries&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;timeout&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;30&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;fallbacks&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;- {&lt;span class=&#34;nt&#34;&gt;&amp;#34;sonnet-default&amp;#34;: &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;opus-fallback&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;}&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;84-启动与验证&#34;&gt;8.4 启动与验证
&lt;/h3&gt;&lt;p&gt;启动：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose up -d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;验证（OpenAI 兼容接口）：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl http://localhost:4000/v1/chat/completions &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;Content-Type: application/json&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;Authorization: Bearer sk-local-dev&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -d &lt;span class=&#34;s1&#34;&gt;&amp;#39;{
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;model&amp;#34;: &amp;#34;sonnet-default&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;messages&amp;#34;: [{&amp;#34;role&amp;#34;:&amp;#34;user&amp;#34;,&amp;#34;content&amp;#34;:&amp;#34;用一句话解释多模型路由&amp;#34;}]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;  }&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;85-对应本文任务分层的路由映射&#34;&gt;8.5 对应本文任务分层的路由映射
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A 类（高价值）&lt;/strong&gt;：直接使用 &lt;code&gt;opus-fallback&lt;/code&gt;，或 &lt;code&gt;sonnet-default&lt;/code&gt; + 严格人工复核。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;B 类（日常研发）&lt;/strong&gt;：默认 &lt;code&gt;sonnet-default&lt;/code&gt;，复杂长文档任务可切换 &lt;code&gt;gemini-longctx&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;C/D 类（批量流程）&lt;/strong&gt;：默认 &lt;code&gt;fast-cheap&lt;/code&gt;，质量不足再升级到 &lt;code&gt;sonnet-default&lt;/code&gt; 或 &lt;code&gt;gemini-longctx&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;可先把这套映射写在业务层，再逐步迁移到统一策略中心。&lt;/p&gt;
&lt;h3 id=&#34;86-生产化下一步建议&#34;&gt;8.6 生产化下一步（建议）
&lt;/h3&gt;&lt;p&gt;最小版跑通后，再补三件事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;监控看板&lt;/strong&gt;：接 Prometheus/Grafana，重点看成功率、P95、单位任务成本。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Guardrail&lt;/strong&gt;：增加 JSON Schema 校验、敏感信息检测、人审闸门。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;灰度/回滚&lt;/strong&gt;：上线前做 5%→20%→50% 灰度，异常一键回滚到稳定模型。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;结语&#34;&gt;结语
&lt;/h2&gt;&lt;p&gt;这轮 Sonnet 4.6 的价值，不只是“模型更强了”，而是让更多团队第一次具备了&lt;strong&gt;系统化降本提效&lt;/strong&gt;的能力。&lt;/p&gt;
&lt;p&gt;真正要升级的不是“追新模型速度”，而是工程方法：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用 Sonnet 做稳定主力层；&lt;/li&gt;
&lt;li&gt;用 Opus 做关键兜底层；&lt;/li&gt;
&lt;li&gt;用路由、观测、回滚把交付跑稳。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;你不需要每次都押中冠军模型。你需要的是：&lt;strong&gt;冠军轮换时，你的系统仍然稳定赢。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;参考文章与-url&#34;&gt;参考文章与 URL
&lt;/h2&gt;&lt;h3 id=&#34;模型发布与行业动态&#34;&gt;模型发布与行业动态
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Anthropic：Introducing Claude Opus 4.6
&lt;a class=&#34;link&#34; href=&#34;https://www.anthropic.com/news/claude-opus-4-6&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.anthropic.com/news/claude-opus-4-6&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Anthropic：Introducing Claude Sonnet 4.6
&lt;a class=&#34;link&#34; href=&#34;https://www.anthropic.com/news/claude-sonnet-4-6&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.anthropic.com/news/claude-sonnet-4-6&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Google：Gemini Deep Think（研究方向更新）
&lt;a class=&#34;link&#34; href=&#34;https://deepmind.com/blog/accelerating-mathematical-and-scientific-discovery-with-gemini-deep-think/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://deepmind.com/blog/accelerating-mathematical-and-scientific-discovery-with-gemini-deep-think/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;GitHub Changelog：Selected Anthropic and OpenAI models are now deprecated
&lt;a class=&#34;link&#34; href=&#34;https://github.blog/changelog/2026-02-19-selected-anthropic-and-openai-models-are-now-deprecated/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.blog/changelog/2026-02-19-selected-anthropic-and-openai-models-are-now-deprecated/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;路由与网关实现&#34;&gt;路由与网关实现
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;LiteLLM GitHub 仓库
&lt;a class=&#34;link&#34; href=&#34;https://github.com/BerriAI/litellm&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/BerriAI/litellm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;LiteLLM 官方文档
&lt;a class=&#34;link&#34; href=&#34;https://docs.litellm.ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://docs.litellm.ai/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;容器与部署&#34;&gt;容器与部署
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Docker Compose 官方文档
&lt;a class=&#34;link&#34; href=&#34;https://docs.docker.com/compose/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://docs.docker.com/compose/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Docker Compose file reference
&lt;a class=&#34;link&#34; href=&#34;https://docs.docker.com/reference/compose-file/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://docs.docker.com/reference/compose-file/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Meta工程师告诉你：Claude Code 用一个分支，你就输在起跑线上了</title>
        <link>https://blog.ccino.org/p/claude-code-branch-workflow-secrets-2026/</link>
        <pubDate>Sun, 22 Feb 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/claude-code-branch-workflow-secrets-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/claude-code-branch-workflow-secrets-2026/imgs/cover.png" alt="Featured image of post Meta工程师告诉你：Claude Code 用一个分支，你就输在起跑线上了" /&gt;
    &lt;blockquote&gt;
        &lt;p&gt;你是不是也这样用 Claude Code？打开终端，在 &lt;code&gt;main&lt;/code&gt; 上直接跑，遇到问题再撤销……&lt;/p&gt;
&lt;p&gt;Meta Staff Engineer John Kim 看到这里，可能会摇摇头说：&amp;ldquo;你走了一条最难的路。&amp;rdquo;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;先说一个真实场景&#34;&gt;先说一个真实场景
&lt;/h2&gt;&lt;p&gt;假设你正在用 Claude Code 修复一个 Bug。&lt;/p&gt;
&lt;p&gt;AI 开始分析代码，修了几个文件，突然发现需要重构一个底层函数——它就去重构了。重构过程中发现另一个问题，又顺手改了……&lt;/p&gt;
&lt;p&gt;20 分钟后，你的 &lt;code&gt;main&lt;/code&gt; 分支上有 37 个文件被修改，你完全不知道哪些是 AI 改的、哪些是你该保留的，想回滚又怕丢失真正有用的修改。&lt;/p&gt;
&lt;p&gt;这就是&amp;quot;一个分支跑 Claude Code&amp;quot;的典型灾难现场。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;第一部分为什么单分支是个陷阱&#34;&gt;第一部分：为什么单分支是个陷阱？
&lt;/h2&gt;&lt;h3 id=&#34;问题-1上下文污染越改越乱&#34;&gt;问题 1：上下文污染，越改越乱
&lt;/h3&gt;&lt;p&gt;Claude Code 在同一个分支上工作时，每次对话都会累积历史修改。你问它修 Bug A，它可能连带改了 B 和 C。等你发现问题时，&lt;code&gt;git diff&lt;/code&gt; 已经是一堵墙。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 你以为你会看到这样的 diff&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ git diff main
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 修改了 1 个文件，5 行&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 实际上看到的是&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ git diff main
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 修改了 23 个文件，342 行增加，180 行删除&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;问题-2无法并行效率减半&#34;&gt;问题 2：无法并行，效率减半
&lt;/h3&gt;&lt;p&gt;大多数人用 Claude Code 是串行工作的：等这个任务完成，再开始下一个。但大厂工程师早就发现，&lt;strong&gt;Claude Code 最适合并行运行&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;一个分支意味着一次只能做一件事，你白白浪费了 AI 的并发能力。&lt;/p&gt;
&lt;h3 id=&#34;问题-3主分支受污染团队协作变噩梦&#34;&gt;问题 3：主分支受污染，团队协作变噩梦
&lt;/h3&gt;&lt;p&gt;如果你在一个团队里，在 &lt;code&gt;main&lt;/code&gt; 上直接让 AI 乱改，你的同事拉代码时会懵：这些改动是谁做的？为什么改？能回滚吗？&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;第二部分多分支工作流大厂工程师的正确姿势&#34;&gt;第二部分：多分支工作流——大厂工程师的正确姿势
&lt;/h2&gt;&lt;h3 id=&#34;核心原则一个任务一个分支&#34;&gt;核心原则：一个任务，一个分支
&lt;/h3&gt;&lt;p&gt;Leon van Zyl 在他的视频&amp;quot;Stop Using Claude Code on One Branch&amp;quot;里演示了这个工作流：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 不要在 main 上直接跑&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# ❌ 错误做法&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git checkout main
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude  &lt;span class=&#34;c1&#34;&gt;# 直接开干&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# ✅ 正确做法：为每个任务创建独立分支&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git checkout -b claude/fix-login-bug
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude  &lt;span class=&#34;c1&#34;&gt;# 在隔离环境中工作&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;命名约定建议&lt;/strong&gt;（来自社区最佳实践）：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude/feature-用户认证
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude/fix-登录bug
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude/refactor-数据库层
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude/experiment-新缓存方案
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;用 &lt;code&gt;claude/&lt;/code&gt; 前缀，一眼就知道这是 AI 工作分支，不需要人工深度审查就能判断是否合并。&lt;/p&gt;
&lt;h3 id=&#34;进阶技巧用-git-worktree-真正并行&#34;&gt;进阶技巧：用 Git Worktree 真正并行
&lt;/h3&gt;&lt;p&gt;这是 John Kim 工作流里的核心武器。&lt;code&gt;git worktree&lt;/code&gt; 允许你在同一个仓库里&lt;strong&gt;同时检出多个分支&lt;/strong&gt;，每个在独立目录中工作。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 创建多个工作目录&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git worktree add ../project-feature-a claude/feature-a
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git worktree add ../project-feature-b claude/feature-b
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git worktree add ../project-fix-c claude/fix-c
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 现在你的目录结构是&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;~/projects/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── my-project/          &lt;span class=&#34;c1&#34;&gt;# 主目录（main 分支）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── project-feature-a/   &lt;span class=&#34;c1&#34;&gt;# Claude 在这里做 feature-a&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── project-feature-b/   &lt;span class=&#34;c1&#34;&gt;# Claude 在这里做 feature-b&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── project-fix-c/       &lt;span class=&#34;c1&#34;&gt;# Claude 在这里修 bug-c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然后打开 3 个终端，每个进入不同目录，运行 Claude Code：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 终端 1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ~/projects/project-feature-a &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; claude
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 终端 2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ~/projects/project-feature-b &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; claude
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 终端 3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ~/projects/project-fix-c &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; claude
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;三个 Claude Code 实例同时工作，互不干扰。你在任务之间切换检查进度，就像管理一个小型 AI 团队。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;第三部分上下文管理给-claude-code-刚刚好的信息&#34;&gt;第三部分：上下文管理——给 Claude Code &amp;ldquo;刚刚好&amp;quot;的信息
&lt;/h2&gt;&lt;p&gt;多分支解决了隔离问题，但每个 Claude 实例的&amp;quot;智商&amp;quot;取决于你给它的上下文质量。&lt;/p&gt;
&lt;h3 id=&#34;技巧-1claudemd-要瘦身&#34;&gt;技巧 1：CLAUDE.md 要&amp;quot;瘦身&amp;rdquo;
&lt;/h3&gt;&lt;p&gt;很多人把 CLAUDE.md 写成百科全书，结果 Claude 记不住重点。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gh&#34;&gt;# ❌ 太臃肿的 CLAUDE.md
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;这个项目是一个 SaaS 平台，创建于 2023 年，使用了 Next.js、
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;TypeScript、PostgreSQL、Redis、Stripe... （后面还有 3000 字）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gh&#34;&gt;# ✅ 精炼有效的 CLAUDE.md
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 当前任务约束
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 只修改 src/auth/ 目录下的文件
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 不要动 database/migrations/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 新功能必须有对应测试
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 架构关键点
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 认证走 JWT（不是 Session）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 数据库操作必须通过 src/services/ 层
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 禁止直接调用 prisma client
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;原则&lt;/strong&gt;：CLAUDE.md 是&amp;quot;任务说明书&amp;quot;，不是&amp;quot;项目百科&amp;quot;。每个分支可以有专属的上下文。&lt;/p&gt;
&lt;h3 id=&#34;技巧-2用-compact-控制对话长度&#34;&gt;技巧 2：用 &lt;code&gt;/compact&lt;/code&gt; 控制对话长度
&lt;/h3&gt;&lt;p&gt;当一次对话拖太长，Claude 的&amp;quot;记忆&amp;quot;会开始模糊。John Kim 的习惯是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;每完成一个子任务，运行 &lt;code&gt;/compact&lt;/code&gt; 压缩上下文&lt;/li&gt;
&lt;li&gt;感觉 Claude 开始&amp;quot;绕圈子&amp;quot;时，用 &lt;code&gt;/clear&lt;/code&gt; 重置&lt;/li&gt;
&lt;li&gt;重置后重新提供当前任务的最小上下文&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 在 Claude Code 交互中&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/compact   &lt;span class=&#34;c1&#34;&gt;# 压缩历史，保留关键信息&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/clear     &lt;span class=&#34;c1&#34;&gt;# 完全清除，重新开始&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;技巧-3用---resume-恢复中断的任务&#34;&gt;技巧 3：用 &lt;code&gt;--resume&lt;/code&gt; 恢复中断的任务
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 第二天继续昨天的任务&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude --resume
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Claude 会恢复上次对话的上下文&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 配合 git 分支，无缝继续工作&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;第四部分meta-工程师的真实工作流拆解&#34;&gt;第四部分：Meta 工程师的真实工作流拆解
&lt;/h2&gt;&lt;p&gt;John Kim 分享的工作流可以拆解为 5 个步骤：&lt;/p&gt;
&lt;h3 id=&#34;step-1任务规划前先建分支&#34;&gt;Step 1：任务规划前先建分支
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 看到 Jira ticket，第一件事不是写代码&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 而是建分支&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git checkout -b claude/JIRA-1234-user-profile-api
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;step-2写清楚任务说明让-claude-先规划&#34;&gt;Step 2：写清楚任务说明，让 Claude 先规划
&lt;/h3&gt;&lt;p&gt;不是直接说&amp;quot;帮我实现用户 Profile API&amp;quot;，而是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;我需要实现用户 Profile API，要求：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1. GET /api/user/profile - 返回当前用户信息
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2. PUT /api/user/profile - 更新用户信息（姓名、头像 URL）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3. 必须有请求校验和错误处理
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4. 参考现有的 /api/user/settings 实现风格
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;请先给我一个实现计划，我确认后再执行。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这触发 Claude Code 的 &lt;strong&gt;Plan Mode&lt;/strong&gt;，AI 会先列出步骤，你确认没问题再开始改代码。&lt;/p&gt;
&lt;h3 id=&#34;step-3并行跑自己做-code-review&#34;&gt;Step 3：并行跑，自己做 Code Review
&lt;/h3&gt;&lt;p&gt;Claude 在工作期间，John Kim 会切到另一个终端处理别的事。等 Claude 完成，他回来做 Code Review：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 查看 AI 做了什么&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git diff main
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 重点检查&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# - 有没有改它不该改的文件？&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# - 逻辑是否正确？&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# - 有没有引入安全隐患？&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;step-4测试通过才合并&#34;&gt;Step 4：测试通过才合并
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 在 AI 分支上跑测试&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm &lt;span class=&#34;nb&#34;&gt;test&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 只有测试全绿，才考虑合并&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git checkout main
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git merge claude/JIRA-1234-user-profile-api
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;step-5清理工作树&#34;&gt;Step 5：清理工作树
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 任务完成后，清理 worktree&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git worktree remove ../project-feature-a
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git branch -d claude/JIRA-1234-user-profile-api
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;第五部分团队协作中的-claude-code&#34;&gt;第五部分：团队协作中的 Claude Code
&lt;/h2&gt;&lt;p&gt;如果你在团队里推广 Claude Code，多分支工作流还有额外收益。&lt;/p&gt;
&lt;h3 id=&#34;统一命名约定一眼识别-ai-工作&#34;&gt;统一命名约定，一眼识别 AI 工作
&lt;/h3&gt;&lt;p&gt;在团队 CLAUDE.md 或 README 中约定：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## AI 分支命名规范
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; claude/feat-xxx   # 新功能
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; claude/fix-xxx    # Bug 修复
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; claude/refactor-xxx  # 重构
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; claude/exp-xxx    # 实验性（随时可丢弃）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这样 PR 列表里，所有人都知道哪些 PR 是 AI 生成的，需要更仔细的 Review。&lt;/p&gt;
&lt;h3 id=&#34;给-ai-分支设置-pr-模板&#34;&gt;给 AI 分支设置 PR 模板
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;!-- .github/PULL_REQUEST_TEMPLATE/claude.md --&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## AI 生成说明
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;- [ ]&lt;/span&gt; 我已 Review 所有修改的文件
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;- [ ]&lt;/span&gt; 测试已通过
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;- [ ]&lt;/span&gt; 没有引入安全问题
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;- [ ]&lt;/span&gt; 逻辑符合业务需求
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## Claude 使用的提示词
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;（粘贴你给 Claude 的原始需求）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;共享-claudemd降低团队上手成本&#34;&gt;共享 CLAUDE.md，降低团队上手成本
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 在仓库根目录维护团队共用的 CLAUDE.md&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 每个人不用重新给 AI 解释项目架构&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git add CLAUDE.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git commit -m &lt;span class=&#34;s2&#34;&gt;&amp;#34;chore: 更新 Claude Code 团队工作指南&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;总结三个记住就够&#34;&gt;总结：三个记住就够
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;一个任务 = 一个分支&lt;/strong&gt;：&lt;code&gt;git checkout -b claude/任务名&lt;/code&gt; 是你每次使用 Claude Code 的第一步&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;git worktree 实现真并行&lt;/strong&gt;：不要让 AI 串行排队，让它们同时工作，你来统筹&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;你是 CEO，AI 是执行团队&lt;/strong&gt;：Claude 做完之后，你来 Review、测试、决定是否合并&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&#34;最后说一句&#34;&gt;最后说一句
&lt;/h2&gt;&lt;p&gt;用一个分支跑 Claude Code，就像让一个实习生在生产数据库上直接操作——不是不行，但你需要承担所有风险。&lt;/p&gt;
&lt;p&gt;多分支工作流的本质，是把&amp;quot;人类的判断力&amp;quot;和&amp;quot;AI 的执行力&amp;quot;分离开来。你负责方向，AI 负责实现，最后你来验收。&lt;/p&gt;
&lt;p&gt;这才是大厂工程师真正的用法。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;参考来源&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Leon van Zyl：&lt;a class=&#34;link&#34; href=&#34;https://youtube.com/watch?v=6nFRJftouI0&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Stop Using Claude Code on One Branch&lt;/a&gt;（2026-02-20）&lt;/li&gt;
&lt;li&gt;John Kim（Meta Staff Engineer）：&lt;a class=&#34;link&#34; href=&#34;https://youtube.com/watch?v=mZzhfPle9QU&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How I use Claude Code&lt;/a&gt;（2026-02-07）&lt;/li&gt;
&lt;li&gt;John Kim：&lt;a class=&#34;link&#34; href=&#34;https://youtube.com/watch?v=WpQZlKiy3zo&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;His Claude Code Workflow Is Insane&lt;/a&gt;（2026-02-21）&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>2026年自动化平台终极对决：OpenClaw vs n8n vs 原生API开发</title>
        <link>https://blog.ccino.org/post/automation-platforms-2026.html</link>
        <pubDate>Sat, 21 Feb 2026 00:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/post/automation-platforms-2026.html</guid>
        <description>&lt;img src="https://blog.ccino.org/post/automation-platforms-2026/imgs/cover.png" alt="Featured image of post 2026年自动化平台终极对决：OpenClaw vs n8n vs 原生API开发" /&gt;&lt;h1 id=&#34;逃离面条代码与失控黑盒用-n8n-与-openclaw-构建下一代缝合怪自动化架构&#34;&gt;逃离“面条代码”与“失控黑盒”：用 n8n 与 OpenClaw 构建下一代“缝合怪”自动化架构
&lt;/h1&gt;&lt;p&gt;在 AI 时代，自动化工作流正在经历一次范式转移。过去，我们依赖于 Zapier、Make 或 n8n 这样的图形化 iPaaS（集成平台即服务）工具，通过 API 的拼接完成数据的搬运；如今，随着大语言模型（LLM）和 AI Agent 框架的崛起，许多人开始幻想将一切交给具备自主规划能力的 Agent，比如 OpenClaw，期望它们能自动搞定所有繁琐的流程。&lt;/p&gt;
&lt;p&gt;然而，现实往往非常骨感。完全依赖 n8n 这类传统编排工具，当业务逻辑变得稍微复杂时，工作流就会迅速膨胀为难以维护的“面条代码”（Spaghetti Workflows）；而完全依赖自主 Agent，又常常会陷入“黑盒效应”，面对 AI 的幻觉、无限死循环和不可控的输出格式束手无策。&lt;/p&gt;
&lt;p&gt;真正的破局之道，既不是倒退回纯粹的硬编码，也不是盲目迷信全自动 Agent，而是走向一种务实的“缝合怪”架构：&lt;strong&gt;让 AI 充当大脑（Brain），让 n8n 充当骨架（Skeleton），让各类 API 充当肌肉（Muscle）。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;本文将深入拆解这两条技术路线的致命缺陷，并详细推演如何通过架构融合，构建一个兼具高智能化与高可靠性的现代自动化系统。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;一-n8n-的脆弱性60-节点的面条工作流灾难&#34;&gt;一、 n8n 的脆弱性：60+ 节点的“面条工作流”灾难
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/post/automation-platforms-2026/imgs/cover-2.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/post/automation-platforms-2026/imgs/cover-2_hu_7317968bb636eaa9.png 480w, https://blog.ccino.org/post/automation-platforms-2026/imgs/cover-2_hu_ff0f12eddbc63de8.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;连线地狱与逻辑黑洞&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;n8n 作为一个开源、节点驱动的自动化平台，在处理 API 鉴权、定时任务、Webhook 接收以及基础的数据转换（如 JSON 解析）方面表现出了极高的效率。但在面对复杂的、带有认知和决策需求的现代业务流时，纯节点的编排方式暴露出极大的脆弱性。&lt;/p&gt;
&lt;h3 id=&#34;1-视觉上的连线地狱与逻辑黑洞&#34;&gt;1. 视觉上的“连线地狱”与逻辑黑洞
&lt;/h3&gt;&lt;p&gt;当一个自动化流程（例如：抓取推文 -&amp;gt; 翻译 -&amp;gt; 提取关键实体 -&amp;gt; 判断是否符合特定业务标准 -&amp;gt; 按照特定格式写入 Notion -&amp;gt; 发送 Slack 通知）完全由 n8n 的基础节点（If、Switch、Set、HTTP Request）来完成时，节点数量会呈指数级爆炸。&lt;/p&gt;
&lt;p&gt;一个典型的中型业务流，往往会演变成包含 60 个以上节点的“面条工作流”。几十根连线交织在一起，错误处理分支（Error Trigger）更是让画布变得如同迷宫。这种视觉复杂性带来的直接后果是&lt;strong&gt;极高的维护成本&lt;/strong&gt;。一旦某个上游节点的输出结构发生了微小的改变（例如 API 返回的 JSON 字段从 &lt;code&gt;user_id&lt;/code&gt; 变成了 &lt;code&gt;userId&lt;/code&gt;），整个工作流就会在下游某个隐蔽的 Switch 节点处悄无声息地崩溃，排查起来犹如大海捞针。&lt;/p&gt;
&lt;h3 id=&#34;2-缺乏语义理解导致的僵化分支&#34;&gt;2. 缺乏语义理解导致的“僵化分支”
&lt;/h3&gt;&lt;p&gt;传统自动化工具的本质是“基于规则的路由”（Rule-based Routing）。如果要在 n8n 中判断一封邮件的情感倾向并分发给不同的人员，过去你可能需要写极其复杂的正则表达式，或者设置几十个包含特定关键词的 IF 节点。&lt;/p&gt;
&lt;p&gt;这种基于规则的系统极其僵化。一旦遇到规则之外的边界情况（Edge Cases），系统就会报错或走向默认的“垃圾桶”分支。n8n 是优秀的搬运工，但它没有认知能力，无法处理任何模糊的、非结构化的数据。&lt;/p&gt;
&lt;h3 id=&#34;3-错误处理与重试机制的局限&#34;&gt;3. 错误处理与重试机制的局限
&lt;/h3&gt;&lt;p&gt;在长链路、多节点的 n8n 工作流中，实现真正的“事务一致性”是非常困难的。如果前 30 个节点执行成功，第 31 个节点（比如写入数据库）超时失败，n8n 原生的重试机制往往是重新执行整个 Workflow（这可能导致前 30 个节点的重复执行，破坏幂等性），或者只能在当前节点进行死板的延迟重试。它缺乏一种“宏观的状态机”视角来灵活处理中断与恢复。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;二-openclaw-的黑盒效应失控的自主智能体&#34;&gt;二、 OpenClaw 的“黑盒效应”：失控的自主智能体
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/post/automation-platforms-2026/imgs/cover-3.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/post/automation-platforms-2026/imgs/cover-3_hu_473025e6e40dc388.png 480w, https://blog.ccino.org/post/automation-platforms-2026/imgs/cover-3_hu_31c31f97eae93a82.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;失控的自主智能体&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;为了克服传统自动化的僵化，开发者们将目光投向了基于大语言模型的 Agent 框架，如 OpenClaw。OpenClaw 赋予了系统强大的语义理解、复杂推理和自主工具调用（Tool Use/Function Calling）能力。但在实际生产环境中，将整个流程打包丢给一个黑盒 Agent，同样是一场灾难。&lt;/p&gt;
&lt;h3 id=&#34;1-薛定谔的输出与格式崩塌&#34;&gt;1. 薛定谔的输出与格式崩塌
&lt;/h3&gt;&lt;p&gt;在纯 Agent 架构中，你通常会通过一段复杂的 System Prompt 告诉 OpenClaw：“请读取今天的科技新闻，总结出三个选题，分别调用 Twitter API 发送预热，并调用 Notion API 写入草稿库。”&lt;/p&gt;
&lt;p&gt;听起来很美好，但在执行时，LLM 的不可控性会瞬间暴露。大模型在输出 JSON 格式时，偶尔会漏掉一个逗号，或者在 JSON 外面包上 &lt;code&gt;json &lt;/code&gt; 的 Markdown 标记。如果是让 Agent 直接去请求下游的严格 REST API，这种微小的格式化错误会直接导致 API 返回 400 Bad Request。当自动化链路对数据格式要求极高时，Agent 的这种“随性”是致命的。&lt;/p&gt;
&lt;h3 id=&#34;2-无限重试的死循环与幻觉陷阱&#34;&gt;2. 无限重试的“死循环”与幻觉陷阱
&lt;/h3&gt;&lt;p&gt;Agent 通常被赋予了自我纠错（Self-Correction）的能力。当 API 报错时，OpenClaw 会读取报错信息并尝试修正。这在演示 demo 中十分酷炫，但在生产环境中往往会导致灾难：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;比如 API 的报错是因为 Token 耗尽或服务宕机（不可恢复错误）。&lt;/li&gt;
&lt;li&gt;Agent 无法意识到这是系统级故障，于是开始疯狂尝试修改请求参数、甚至产生幻觉（Hallucination），“发明”出一些根本不存在的 API 终点（Endpoints）进行调用。&lt;/li&gt;
&lt;li&gt;最终，Agent 陷入死循环，不仅烧光了高昂的 LLM Token 额度，还可能触发第三方平台的 DDoS 防护策略，导致账号被封禁。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;3-缺乏确定性的状态管理与人在回路hitl&#34;&gt;3. 缺乏确定性的状态管理与“人在回路”（HITL）
&lt;/h3&gt;&lt;p&gt;完全自治的 Agent 是一匹脱缰的野马。在许多高价值业务场景（如自动向核心客户发送跟进邮件、自动发布带有品牌背书的公众号文章）中，我们绝对不能允许系统在没有人类干预的情况下直接执行。&lt;/p&gt;
&lt;p&gt;但在一个纯粹的 OpenClaw 黑盒流中，要在中间强行插入一个“暂停执行，等待人类在 Slack 点击 Approve 后继续”的逻辑是非常别扭的。Agent 的上下文窗口（Context Window）在漫长的等待期内可能会失效，内存状态难以持久化保存。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;三-破局之道大脑--骨架--肌肉的缝合怪架构&#34;&gt;三、 破局之道：“大脑 + 骨架 + 肌肉”的缝合怪架构
&lt;/h2&gt;&lt;p&gt;既然 n8n 拥有强大的流程控制但缺乏认知，而 OpenClaw 拥有强大的认知但缺乏确定性，最完美的架构自然是将两者的优势结合起来。这就是现代 AI 自动化的核心范式——“缝合怪”架构（The Hybrid AI-Automation Architecture）。&lt;/p&gt;
&lt;p&gt;在这个架构中，我们对系统的职责进行了严格的切割：&lt;/p&gt;
&lt;h3 id=&#34;1-肌肉muscle各类-saas-api-与基础工具&#34;&gt;1. 肌肉（Muscle）：各类 SaaS API 与基础工具
&lt;/h3&gt;&lt;p&gt;肌肉负责与物理世界/数字世界进行互动。它是 Twitter 的发推 API，是 Notion 的 Database 写入接口，是 Gmail 的发信通道。肌肉不负责思考，也不负责流程，它只接收极其标准的指令并执行动作。&lt;/p&gt;
&lt;h3 id=&#34;2-大脑brainopenclaw-llm--agent&#34;&gt;2. 大脑（Brain）：OpenClaw (LLM &amp;amp; Agent)
&lt;/h3&gt;&lt;p&gt;大脑被剥夺了直接调用所有外部 API 的权力（或者只保留调用特定只读 API 的权力），它的职责被收拢到“纯粹的信息处理与认知”上。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;语义路由&lt;/strong&gt;：阅读一封长邮件，提取关键意图，返回 &lt;code&gt;{ &amp;quot;intent&amp;quot;: &amp;quot;support&amp;quot;, &amp;quot;urgency&amp;quot;: &amp;quot;high&amp;quot; }&lt;/code&gt; 这样的纯 JSON。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;内容生成&lt;/strong&gt;：根据提供的素材，撰写符合特定品牌 Tone of Voice 的推文。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据结构化&lt;/strong&gt;：将混乱的网页抓取文本，清洗并映射为结构化的业务数据。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;3-骨架skeletonn8n-workflow-orchestration&#34;&gt;3. 骨架（Skeleton）：n8n (Workflow Orchestration)
&lt;/h3&gt;&lt;p&gt;n8n 充当整个系统的中枢神经和骨架，负责将大脑和肌肉连接起来，并提供绝对的确定性和稳定性。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;状态管理与编排&lt;/strong&gt;：决定什么时候该调用大脑，什么时候该调用肌肉。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;坚固的鉴权与网络层&lt;/strong&gt;：由 n8n 来管理 OAuth2 刷新令牌、API 密钥和并发限流（Rate Limits），这些繁琐的工程细节不再去污染 Agent 的 Context。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;兜底与重试&lt;/strong&gt;：当大脑返回的 JSON 解析失败时，由 n8n 的骨架接管，执行明确的重试逻辑（如利用 HTTP Node 重试 3 次，失败则触发 PagerDuty 报警）。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;四-技术推演与实战探讨重构内容发布流水线&#34;&gt;四、 技术推演与实战探讨：重构内容发布流水线
&lt;/h2&gt;&lt;p&gt;为了更具象地理解这个架构，我们来推演一个实际的业务场景：&lt;strong&gt;基于 RSS 信息源，自动生成每日科技视点，经过人类审核后，分别发布到微信公众号和 Twitter。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;灾难性的旧方案对比&#34;&gt;灾难性的旧方案对比
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;如果纯用 n8n&lt;/strong&gt;：你需要几十个节点。用大量的正则提取 RSS 内容，内容组合极其生硬（无法改写），需要配置繁琐的 API 来连接微信和 Twitter，且生成的文本充满了机器味。如果有 10 条 RSS，就需要处理复杂的循环，一旦有一条报错，整个链路容易挂掉。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;如果纯用 OpenClaw&lt;/strong&gt;：你会写一个超级 Prompt，赋予 Agent RSS 搜索工具、微信发布工具、推特发布工具。结果是 Agent 可能抓了太多内容导致 Context 超出限制；在发微信时因为 HTML 标签闭合错误（幻觉）导致发布失败；并且它自己就直接发布了，你根本没有机会进行审核（或者实现审核逻辑极其困难）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;缝合怪架构的优雅重构&#34;&gt;“缝合怪架构”的优雅重构
&lt;/h3&gt;&lt;p&gt;在全新的大脑+骨架架构中，n8n 的节点数将从 60+ 锐减到 10 个左右的高级宏观节点，而 OpenClaw 则被嵌入到特定的节点中作为认知引擎。流程如下：&lt;/p&gt;
&lt;h4 id=&#34;step-1-触发与数据收集-n8n---肌肉与骨架&#34;&gt;Step 1: 触发与数据收集 (n8n - 肌肉与骨架)
&lt;/h4&gt;&lt;p&gt;n8n 的 Schedule 节点在每天早晨 8 点触发，调用 HTTP Request 节点并行拉取 5 个 RSS 源。n8n 将这些 XML 数据进行初步扁平化处理，合并为一个巨大的字符串数组。&lt;/p&gt;
&lt;h4 id=&#34;step-2-认知压缩与结构化-openclaw---大脑&#34;&gt;Step 2: 认知压缩与结构化 (OpenClaw - 大脑)
&lt;/h4&gt;&lt;p&gt;n8n 通过高级 AI 节点（或 HTTP 调用）将这堆繁杂的文本发送给 OpenClaw。
这里的关键是&lt;strong&gt;严格约束大脑的输出&lt;/strong&gt;。我们不让 OpenClaw 去“执行”，而是让它“思考”。
在发送给 OpenClaw 的请求中，我们使用 OpenAI 的 Structured Outputs (或 JSON Schema 强制约束)：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;object&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;properties&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;topics&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;array&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;items&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;object&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;properties&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;nt&#34;&gt;&amp;#34;title&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;nt&#34;&gt;&amp;#34;summary&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;nt&#34;&gt;&amp;#34;tweet_draft&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;&amp;#34;maxLength&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;280&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;nt&#34;&gt;&amp;#34;wechat_html&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;required&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;title&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;summary&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;tweet_draft&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;wechat_html&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;OpenClaw 发挥其强大的推理与创作能力，提炼出 3 个核心话题，并按照上述严谨的 JSON 结构返回给 n8n。这彻底消除了“黑盒效应”中的格式失控问题。&lt;/p&gt;
&lt;h4 id=&#34;step-3-确定性的控制流与人在回路-n8n---骨架&#34;&gt;Step 3: 确定性的控制流与“人在回路” (n8n - 骨架)
&lt;/h4&gt;&lt;p&gt;n8n 接收到完美的 JSON 后，不再需要复杂的 IF 节点解析字符串，直接使用原生的 Item Lists 节点将 3 个 Topic 拆解。
随后，n8n 调用 Slack 节点，将生成的 &lt;code&gt;tweet_draft&lt;/code&gt; 和 &lt;code&gt;summary&lt;/code&gt; 发送到工作群组，并在 Slack 消息中附带两个交互式按钮：“Approve” 和 “Reject”。
此时，&lt;strong&gt;n8n 进入 Wait Node（等待节点）&lt;/strong&gt;，持久化挂起当前工作流。无论人类是 5 分钟后还是 5 小时后点击按钮，状态都不会丢失（这正是 Agent 框架难以做到的持久化状态机）。&lt;/p&gt;
&lt;h4 id=&#34;step-4-稳定执行与分发-n8n--api--肌肉&#34;&gt;Step 4: 稳定执行与分发 (n8n + API -肌肉)
&lt;/h4&gt;&lt;p&gt;当运营人员在 Slack 点击“Approve”后，Webhook 唤醒 n8n。
n8n 获取确认信号，接着走入并行的执行分支：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;分支 A：调用 Twitter API 节点，将 &lt;code&gt;tweet_draft&lt;/code&gt; 发送出去。如果 Twitter API 报 429（请求过多），n8n 优雅地使用内置的 Exponential Backoff（指数退避）重试策略等待 15 分钟后再试，而不是让 LLM 瞎猜如何解决。&lt;/li&gt;
&lt;li&gt;分支 B：调用 Obsidian/Hugo 本地脚本或微信 API，将 &lt;code&gt;wechat_html&lt;/code&gt; 进行组装和推送。即使出现 JSON 解析异常或接口变更，错误只会局限在这个单一节点，不会导致前面的 AI 消耗付诸东流。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;架构优势总结&#34;&gt;架构优势总结
&lt;/h3&gt;&lt;p&gt;这种“缝合怪”架构完美融合了两者的长处：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;防爆裂的强壮性&lt;/strong&gt;：把所有不确定性（LLM 的幻觉、网络请求的重试）关进笼子里。大模型的随机性被强制约束在 JSON Schema 内部；网络的脆弱性被 n8n 的系统级重试机制兜底。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;极简的可维护性&lt;/strong&gt;：抛弃了 60+ 节点的面条连线。现在，工作流的逻辑是由一段清晰的 System Prompt（存放在 OpenClaw 中）加上几个核心的 n8n 路由节点构成的。修改业务逻辑，往往只需要修改大模型的提示词，而不需要重新连线。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;安全与权限隔离&lt;/strong&gt;：Agent 无法自己决定去调用转账 API 或是发布带有敏感词的推文。所有的致命操作都在 n8n 这一层进行物理拦截，结合“人在回路”机制，安全性得到了最大保障。&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&#34;结语&#34;&gt;结语
&lt;/h2&gt;&lt;p&gt;在走向全面自动化的道路上，我们不应陷入“唯代码论”或是“唯 AI 论”的极端。n8n 所代表的确定性工程思维，与 OpenClaw 所代表的启发式认知能力，不仅不是对立的，反而是天作之合。&lt;/p&gt;
&lt;p&gt;通过将系统解耦为负责判断的“大脑”、负责流程调度的“骨架”以及负责执行的“肌肉”，我们得以构建出既不会变成“面条代码”，又不会沦为“失控黑盒”的下一代业务自动化流。这种“缝合怪”哲学，不仅是技术架构的最佳实践，更是人类驾驭 AI 工具的终极智慧。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;引用与扩展阅读&#34;&gt;引用与扩展阅读
&lt;/h2&gt;&lt;p&gt;为了进一步探索本文探讨的架构在真实生产环境中的落地与对比，推荐阅读以下技术文章与实战指南：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://xcloud.host/openclaw-n8n-integration/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenClaw + n8n Integration in 2026: How to Build Secure AI Agent Workflows&lt;/a&gt;&lt;/strong&gt;
&lt;em&gt;xCloud 提供的一篇极具实操价值的部署教程，详细展示了如何在实际服务器环境中，将 OpenClaw 的智能化接口与 n8n 的 Webhook/HTTP 请求体系无缝对接。文章深入剖析了如何配置鉴权机制以及如何利用 n8n 接收并解析来自 OpenClaw 的结构化数据流，是构建“大脑+骨架”系统的入门必读。&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://futurehumanism.co/articles/openclaw-n8n-workflow-automation-guide/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenClaw + n8n: The Definitive Guide to Secure AI Agent Workflow Automation&lt;/a&gt;&lt;/strong&gt;
&lt;em&gt;Future Humanism 从更高维度的“人机协作”理念出发，探讨了明确工作流（Explicit Workflows）的重要性。文中深刻剖析了为何纯粹自治的 Agent 在企业环境中容易失效，并提出了利用 n8n 作为中枢神经来约束 OpenClaw、引入“人在回路”（Human-in-the-loop）的具体模式设计，非常契合本文“防爆裂与强壮性”的核心观点。&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://opentweet.io/blog/openclaw-vs-n8n-vs-twitter-api&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenClaw vs n8n vs Direct Twitter API: Best Way to Automate Twitter with AI&lt;/a&gt;&lt;/strong&gt;
&lt;em&gt;以社交媒体自动化运营（如推特发布）为切入点，这篇来自 OpenTweet 的博文详细对比了“纯脚本调用 API”、“纯 n8n 视觉编排”以及“引入 OpenClaw 作为认知中介”三种自动化流派的优劣势。它验证了 60+ 节点面条工作流的真实痛点，也从开发效率和维护成本的角度，为采用混合架构（缝合怪架构）提供了有力的商业论证与实战数据支持。&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Reddit 热议：为什么 Claude 4.6 成为了大家心中的第一闭源 AI？</title>
        <link>https://blog.ccino.org/p/claude-4-6-reddit-community-feedback/</link>
        <pubDate>Fri, 20 Feb 2026 08:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/claude-4-6-reddit-community-feedback/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/claude-4-6-reddit-community-feedback/imgs/cover.png" alt="Featured image of post Reddit 热议：为什么 Claude 4.6 成为了大家心中的第一闭源 AI？" /&gt;&lt;p&gt;这两天，AI 圈被一波密集的更新炸得人仰马翻。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-4-6-reddit-community-feedback/imgs/cover.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-4-6-reddit-community-feedback/imgs/cover_hu_fb8f0afb62e80769.png 480w, https://blog.ccino.org/p/claude-4-6-reddit-community-feedback/imgs/cover_hu_ebb86df3b5009ff4.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;为什么 Claude 4.6 成了开发者心中的第一？&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;前脚 Anthropic 刚发布了 Claude 4.6（包含期待已久的 Opus 4.6 和升级版的 Sonnet 4.6），后脚 Google 就火急火燎地推出了 Gemini 3.1 Pro 试图挽回颜面。&lt;/p&gt;
&lt;p&gt;在媒体和分析师转发新闻时，大家更多是在机械地对比各种基准测试的分数。但在 Reddit 的 r/ClaudeAI 等硬核技术社区里，我看到了一幅截然不同的景象。这里没有冰冷的跑分图表，只有一线开发者和深度用户们最真实的狂欢与震撼。&lt;/p&gt;
&lt;p&gt;其中最显眼的一条帖子，短短时间就获得了 5700 多个赞和几百条回复，标题非常直白：
「Good job Anthropic 👏🏻 you just became the top closed Ai company in my books」
（干得漂亮 Anthropic 👏🏻，你刚刚成为了我心中的闭源 AI 第一名。）&lt;/p&gt;
&lt;p&gt;在这个瞬息万变的 AI 竞技场里，让一向挑剔的程序员群体集体&amp;quot;倒戈&amp;quot;并送上如此高的赞誉，Anthropic 究竟做对了什么？&lt;/p&gt;
&lt;h2 id=&#34;开发者为何倒戈不是跑分是手感&#34;&gt;开发者为何倒戈？不是跑分，是「手感」
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-4-6-reddit-community-feedback/imgs/hand-feel.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-4-6-reddit-community-feedback/imgs/hand-feel_hu_7951c4d69ef29598.png 480w, https://blog.ccino.org/p/claude-4-6-reddit-community-feedback/imgs/hand-feel_hu_fe6f8db2d13a8dc.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;极致的代码手感&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;如果你去翻看那些高赞帖子的评论区，你会发现开发者们的态度转变，并非仅仅因为 Claude 4.6 在某个 MMLU 或是 HumanEval 榜单上又超越了谁。&lt;/p&gt;
&lt;p&gt;他们更在意的，是代码层面的「手感」。&lt;/p&gt;
&lt;p&gt;什么是手感？就是一个 AI 在帮你写代码、改 Bug、梳理复杂架构时的那种&amp;quot;懂你&amp;quot;。它不废话，很少产生幻觉，甚至能提前预判你的意图，给出极其连贯的上下文反馈。&lt;/p&gt;
&lt;p&gt;在 r/ClaudeAI 上，有个让人忍俊不禁的帖子获得了将近 1500 个赞。帖子的配图是一个人无奈又纵容的表情，配文是：
「当 Claude 写了 2500 行完美代码，但只把一个文件夹名字拼错时的我。」&lt;/p&gt;
&lt;p&gt;这个真实的小插曲完美地诠释了 Claude 4.6 当前的状态。它已经强大到能一气呵成生成两千多行毫无瑕疵的逻辑代码，甚至考虑到各种边界条件。它强大到，即使它偶尔犯了极其微小的拼写错误，你也会心甘情愿地笑着帮它改过来，觉得瑕不掩瑜。&lt;/p&gt;
&lt;p&gt;而在过去（或者在使用某些竞争对手的模型时），开发者往往是被满屏运行不通的 Bug 气得砸键盘，或是陷入无休止的&amp;quot;修复一个 Bug 产生两个新 Bug&amp;quot;的死循环中。&lt;/p&gt;
&lt;p&gt;还有用户专门发帖探讨了 Sonnet vs Opus。很多人发现，即便是定位偏向日常和速度的 Sonnet 4.6，在实际编程体验中也展现出了惊人的准确度，而 Opus 4.6 则在处理超长上下文和复杂系统设计时，展现出了令人恐惧的全局掌控力。&lt;/p&gt;
&lt;h2 id=&#34;对手们的焦虑与反击&#34;&gt;对手们的焦虑与反击
&lt;/h2&gt;&lt;p&gt;有意思的是，这股「Claude 热」早就蔓延到了 Anthropic 自己的社区之外。&lt;/p&gt;
&lt;p&gt;在死对头 ChatGPT 的子版块（r/ChatGPT）里，有人截了一张图并发帖指出：「OpenAI seem to be extremely worried about Claude&amp;rsquo;s rising popularity lmao」（OpenAI 看起来对 Claude 的爆红极度焦虑，笑死）。&lt;/p&gt;
&lt;p&gt;这绝非空穴来风。在开发者这个极具话语权的核心群体中，口碑效应的势能是极其可怕的。一旦&amp;quot;写代码就用 Claude&amp;quot;成为行业共识，OpenAI 将流失最高价值的一批生产力用户。&lt;/p&gt;
&lt;p&gt;Google 显然也感受到了这种令人窒息的压力。就在 Claude 4.6 发布后不久，Google 几乎同步推出了 Gemini 3.1 Pro。新闻稿里，Google 重点强调了这是一款针对复杂企业任务设计的模型，号称拥有「2 倍的逻辑推理能力提升」。&lt;/p&gt;
&lt;p&gt;这是一场没有硝烟的战争，Google 试图用强大的算力和生态系统挽回颜面，但从社区早期的反馈来看，王座的归属，似乎正在发生不可逆的微妙偏移。&lt;/p&gt;
&lt;h2 id=&#34;护城河不仅是模型更是行动生态&#34;&gt;护城河：不仅是模型，更是「行动生态」
&lt;/h2&gt;&lt;p&gt;如果你认为 Anthropic 只是在卷底层模型，那就太小看他们了。&lt;/p&gt;
&lt;p&gt;结合最近同步爆火的 Claude Code（Anthropic 官方推出的 CLI 工具），你会发现他们正在下一盘大棋。&lt;/p&gt;
&lt;p&gt;过去的 AI 只是在帮你解答问题；而现在的 Claude 4.6 加上 Claude Code，是在真正地赋能你的「行动」。它不再是一个躲在浏览器页面里的聊天机器人，而是直接入驻了你的本地终端，读取你的本地文件，甚至帮你执行命令。它成为了你的外包团队、你的联合创始人。&lt;/p&gt;
&lt;p&gt;在 YouTube 上，关于这类工作流的视频正在疯传。YouTuber Oliur 专门做了一期视频，分享他如何利用 Claude Code 等 AI 工具作为核心生产力，在一周内赚取了 16,000 美元的真实案例。另一个博主 Nate Herk 则直呼：&amp;ldquo;用 Claude Code 构建漂亮的网站简直太容易了。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;这就是 Anthropic 建立生态护城河的方式：用顶级的闭源模型（Claude 4.6）提供智力引擎，用极度贴近开发者工作流的工具（Claude Code）作为抓手，直接切入生产力创造的最后一公里。&lt;/p&gt;
&lt;h2 id=&#34;结语当代码不再是壁垒&#34;&gt;结语：当代码不再是壁垒
&lt;/h2&gt;&lt;p&gt;在这波热潮中，Lenny&amp;rsquo;s Podcast 采访了 Claude Code 的负责人 Boris Cherny。在播客中，他抛出了一个直击所有程序员灵魂的问题：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;「What happens after coding is solved?」&lt;/strong&gt;
（当写代码这个问题被彻底解决后，会发生什么？）&lt;/p&gt;
&lt;p&gt;这或许才是我们在面对 Claude 4.6 这样的庞然大物时，最该思考的终极问题。&lt;/p&gt;
&lt;p&gt;当 2500 行完美代码只需要一段清晰的 Prompt 就能生成；当语言模型的推理能力无限逼近，甚至在某些狭窄领域超越资深工程师；当 AI 从副手变成了主力……&lt;/p&gt;
&lt;p&gt;真正稀缺的，将不再是实现愿望的能力，而是愿望本身。是你对用户需求的洞察，是你定义问题的能力，是你独一无二的审美和产品直觉。&lt;/p&gt;
&lt;p&gt;「只要你还在主动思考，你就没有真正被淘汰。」&lt;/p&gt;
&lt;p&gt;用思考对抗被工具同化，用目标对抗技术焦虑。这或许才是下一个 AI 时代里，一个人最深的护城河。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;参考来源与拓展阅读：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://mashable.com/article/anthropic-claude-sonnet-4-6-released-how-to-try-benchmark-performance&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic releases Claude Sonnet 4.6 (Mashable)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://venturebeat.com/technology/google-launches-gemini-3-1-pro-retaking-ai-crown-with-2x-reasoning&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google launches Gemini 3.1 Pro (Venturebeat)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://reddit.com/r/ClaudeAI/comments/1r6zn7j/good_job_anthropic_you_just_became_the_top_closed/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Good job Anthropic you just became the top closed Ai company (Reddit)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://reddit.com/r/ClaudeAI/comments/1r7vgam/me_when_claude_wrote_2500_lines_of_perfect_code/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Me when Claude wrote 2500 lines of perfect code&amp;hellip; (Reddit)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://youtube.com/watch?v=QcTh1SEdA0Q&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Oliur Online: Claude Code helped me make $16k in a week (YouTube)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://youtube.com/watch?v=We7BZVKbCVw&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Lenny&amp;rsquo;s Podcast: What happens after coding is solved (YouTube)&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
</description>
        </item>
        <item>
        <title>同一个 Claude，同一周：找到 500 个漏洞，也造成了一个 1280 万的漏洞</title>
        <link>https://blog.ccino.org/p/claude-ai-security-double-edge-moonwell-2026/</link>
        <pubDate>Thu, 19 Feb 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/claude-ai-security-double-edge-moonwell-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/claude-ai-security-double-edge-moonwell-2026/imgs/cover.png" alt="Featured image of post 同一个 Claude，同一周：找到 500 个漏洞，也造成了一个 1280 万的漏洞" /&gt;&lt;p&gt;&lt;strong&gt;2026年2月，同一周内，Claude Opus 4.6 同时出现在两条新闻里。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;第一条：Anthropic 宣布，Claude Opus 4.6 自主扫描开源代码，发现了超过 500 个此前未知的高危漏洞，让全球开发者紧急打补丁。&lt;/p&gt;
&lt;p&gt;第二条：DeFi 借贷协议 Moonwell 被黑，损失 178 万美元（约 1280 万人民币）。GitHub 提交记录显示，出问题的代码由 Claude Opus 4.6 联合编写。&lt;/p&gt;
&lt;p&gt;同一个模型，同一周，英雄和肇事者。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;先说英雄那一面&#34;&gt;先说英雄那一面
&lt;/h2&gt;&lt;p&gt;Anthropic 的安全团队让 Claude Opus 4.6 去做一件事：像人类安全研究员一样，自己去找开源代码里的漏洞。&lt;/p&gt;
&lt;p&gt;没有给它特殊工具，没有写复杂的提示词，没有定制脚手架。&lt;/p&gt;
&lt;p&gt;结果是 500+ 个零日漏洞（zero-day），全部经人工验证，无一误报。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-ai-security-double-edge-moonwell-2026/imgs/illus-1-hero.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-ai-security-double-edge-moonwell-2026/imgs/illus-1-hero_hu_535748b5e5e715d2.png 480w, https://blog.ccino.org/p/claude-ai-security-double-edge-moonwell-2026/imgs/illus-1-hero_hu_7b6dc9a953ca0b84.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;AI自主扫描开源代码发现漏洞示意图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;受影响的三个项目你可能没听过，但你每天都在间接使用它们：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ghostscript&lt;/strong&gt;：几乎所有 PDF 渲染和打印背后都用它&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OpenSC&lt;/strong&gt;：银行卡、身份证、企业 U 盾里的智能卡认证库&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CGIF&lt;/strong&gt;：处理 GIF 图片格式的底层库&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Claude 的做法是：翻阅 Git 提交历史，理解代码的演变脉络，找到那些&amp;quot;应该检查边界但没检查&amp;quot;的地方，生成可以复现漏洞的 PoC 代码。&lt;/p&gt;
&lt;p&gt;这些漏洞里有缓冲区溢出，有堆溢出，有算法逻辑边界问题。共同点是：传统 fuzzing 工具扫不到，因为它们需要先理解代码意图，才能知道&amp;quot;这里少了一个乘法&amp;quot;算不算漏洞。&lt;/p&gt;
&lt;p&gt;Anthropic 安全负责人 Logan Graham 说：「这是防御者与攻击者之间的竞赛，我们希望尽快把工具交到防御者手中。」&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;再说肇事者那一面&#34;&gt;再说肇事者那一面
&lt;/h2&gt;&lt;p&gt;Moonwell 是一个运行在 Base 和 Optimism 区块链上的借贷协议。你可以把它理解成一个链上版本的抵押贷款平台——用户抵押加密资产，借出资金，平台根据资产价格动态计算抵押率和清算线。&lt;/p&gt;
&lt;p&gt;这里有一个关键角色叫 &lt;strong&gt;Oracle（预言机）&lt;/strong&gt;，负责给平台提供&amp;quot;外部价格&amp;quot;——就像告诉系统&amp;quot;现在 1 个 ETH 值 2200 美元&amp;quot;。&lt;/p&gt;
&lt;p&gt;2月15日，Moonwell 通过社区提案 MIP-X43，激活了一个新的 Chainlink OEV 包装合约，用来给 cbETH（Coinbase 的质押以太币）定价。&lt;/p&gt;
&lt;p&gt;问题出在这里。&lt;/p&gt;
&lt;p&gt;正确的定价公式是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cbETH 美元价格 = cbETH/ETH 汇率 × ETH/USD 价格
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              ≈ 1.07 × 2200
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              ≈ 2354 美元
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;但出问题的代码只返回了第一步的结果——cbETH/ETH 汇率约为 1.07~1.12，然后直接把这个数字当成美元价格用了。&lt;/p&gt;
&lt;p&gt;于是系统认为：1 个 cbETH = 1.12 美元。&lt;/p&gt;
&lt;p&gt;实际价格是约 2350 美元。&lt;/p&gt;
&lt;p&gt;差了 &lt;strong&gt;2000 倍&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;套利机器人立刻嗅到了机会。逻辑很简单：偿还约 1 美元的债务，就能触发清算，获得价值数千美元的 cbETH 作为抵押品奖励。链上机器人跑得比人快，几分钟内就把漏洞榨干了。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-ai-security-double-edge-moonwell-2026/imgs/illus-2-exploit.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-ai-security-double-edge-moonwell-2026/imgs/illus-2-exploit_hu_17a19df3518ea72c.png 480w, https://blog.ccino.org/p/claude-ai-security-double-edge-moonwell-2026/imgs/illus-2-exploit_hu_fb44550254fe9781.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;智能合约定价公式缺失一个乘法，引发链式损失示意图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;最终损失：178 万美元。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;pashov-的那条推文&#34;&gt;Pashov 的那条推文
&lt;/h2&gt;&lt;p&gt;事件发酵后，知名链上审计员 Pashov 翻出了 Moonwell 的 GitHub 提交记录。&lt;/p&gt;
&lt;p&gt;PR 里有一行信息：&lt;code&gt;Co-authored-by: Claude Opus 4.6&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;他在 X 上发问：「这是否是第一个被黑客攻击的 vibe-coded Solidity 智能合约？」&lt;/p&gt;
&lt;p&gt;这条推文点燃了整个 Web3 安全社区。&lt;/p&gt;
&lt;p&gt;但 Pashov 也做了一个重要补充——这不是他想简单甩锅的意思：&lt;/p&gt;
&lt;p&gt;「AI 背后有人类审查。仅仅归咎于神经网络是不正确的。但此事件对 vibe coding 趋势确实是一个警示。」&lt;/p&gt;
&lt;p&gt;这句话是关键。出问题的不是 Claude，是&lt;strong&gt;流程&lt;/strong&gt;。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;为什么-ai-既能找漏洞又能制造漏洞&#34;&gt;为什么 AI 既能找漏洞，又能制造漏洞？
&lt;/h2&gt;&lt;p&gt;这两件事看起来矛盾，其实逻辑上完全一致。&lt;/p&gt;
&lt;p&gt;AI 是一个&lt;strong&gt;能力放大器&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;当 Anthropic 的安全团队用它找漏洞时：有明确目标，有人工验证，有完整流程，找到漏洞→验证→上报→修复。&lt;/p&gt;
&lt;p&gt;当 Moonwell 开发者用它写智能合约时：任务是&amp;quot;实现 oracle 接口&amp;quot;，代码通过了，测试跑绿了，提案投票过了，合约上链了。没有人在发布前问一句：「这段定价逻辑，如果缺了一个乘法，会发生什么？」&lt;/p&gt;
&lt;p&gt;AI 把你的速度放大了，也把你跳过的步骤放大了。&lt;/p&gt;
&lt;p&gt;cbETH 定价公式那个 bug，其实并不难发现——如果有人专门去做安全审计的话。问题是 Vibe Coding 的节奏天然不鼓励停下来做这件事：模型给你一段代码，看起来完整，测试通过，你就继续往下走了。&lt;/p&gt;
&lt;p&gt;研究数据也在佐证这一点：一项针对 15 个 AI 生成应用的研究发现，共存在 &lt;strong&gt;69 个安全漏洞&lt;/strong&gt;——平均每个应用 4-5 个。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;给用-ai-写代码的你五条不能省的检查&#34;&gt;给用 AI 写代码的你：五条不能省的检查
&lt;/h2&gt;&lt;p&gt;用 Vibe Coding 写普通 CRUD 应用和写金融合约，风险级别完全不同。但以下几条，任何场景都适用：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. 让 AI 给自己做安全审查&lt;/strong&gt;
写完代码，让同一个模型（或另一个模型）扮演攻击者角色，问它：「如果我要攻击这段代码，我会怎么做？」&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. 数字计算必须人工验证&lt;/strong&gt;
涉及金额、价格、汇率、百分比的计算，不要相信 AI 默认给你的公式。手算一遍，代入边界值：极大值、极小值、零、负数。Moonwell 的 bug 如果有人手动验证「cbETH 价格应该是美元量级，不是接近 1 的小数」，就不会发生。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. 搞清楚代码的部署环境&lt;/strong&gt;
在本地跑的代码出错，最多重启。在链上、生产数据库、支付系统里出错，没有撤销键。Vibe Coding 的速度感适合 demo，不适合 production。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. 单元测试必须覆盖异常路径&lt;/strong&gt;
让 AI 帮你写测试时，明确要求写&amp;quot;当价格数据异常时，系统如何响应&amp;quot;的测试用例。幸福路径（happy path）测试通过不代表系统健壮。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. 外部数据接口做合理性校验&lt;/strong&gt;
任何从外部获取的数据（价格、用户输入、API 响应），都应该在使用前验证范围。cbETH 的价格应该在 ETH 价格的 1-1.2 倍区间，超出这个范围就应该报警暂停，而不是直接使用。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;结论&#34;&gt;结论
&lt;/h2&gt;&lt;p&gt;Moonwell 的故事不是 Claude 的问题，也不是 Vibe Coding 的问题。&lt;/p&gt;
&lt;p&gt;是&lt;strong&gt;没有安全审查流程&lt;/strong&gt;的问题。&lt;/p&gt;
&lt;p&gt;AI 让写代码变得更快，这是真的。&lt;/p&gt;
&lt;p&gt;AI 让代码变得更安全，这不是自动发生的。&lt;/p&gt;
&lt;p&gt;防御者用好了 AI，能发现 500 个别人看不到的漏洞。&lt;/p&gt;
&lt;p&gt;攻击者（或马虎的开发者）用好了 AI，能用几行代码造出 1280 万的窟窿。&lt;/p&gt;
&lt;p&gt;差距在于：你在用 AI 加速的同时，有没有在关键节点停下来，做那些 AI 替代不了的判断。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;素材来源：The Hacker News、ForkLog、Cryptopolitan、Anthropic 官方公告&lt;/em&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Prompt Engineering 已死？Context Engineering 才是未来</title>
        <link>https://blog.ccino.org/p/prompt-engineering-dead-context-engineering-future/</link>
        <pubDate>Wed, 18 Feb 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/prompt-engineering-dead-context-engineering-future/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/prompt-engineering-dead-context-engineering-future/imgs/cover.png" alt="Featured image of post Prompt Engineering 已死？Context Engineering 才是未来" /&gt;&lt;p&gt;&amp;ldquo;你的 Prompt 写得好不好？&amp;rdquo; 这句话在 2023 年可能是 AI 圈的问候语。但在 2026 年的今天，如果你还在纠结于&amp;quot;深呼吸&amp;quot;、&amp;ldquo;一步步思考&amp;quot;这些咒语，那你可能已经掉队了。&lt;/p&gt;
&lt;p&gt;随着 Claude 3.5/3.7 等模型的发布，以及 200k+ 甚至无限上下文窗口的普及，&lt;strong&gt;Prompt Engineering（提示词工程）正在迅速消亡，取而代之的是 Context Engineering（上下文工程）。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;为什么-prompt-不再是瓶颈&#34;&gt;为什么 Prompt 不再是瓶颈？
&lt;/h2&gt;&lt;p&gt;回想一下，我们为什么要费尽心机写 Prompt？&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;模型不够聪明&lt;/strong&gt;：需要通过特定的指令格式（CoT, Few-Shot）来引导它推理。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;上下文太短&lt;/strong&gt;：只能塞进 4k token，必须精简每一个字，甚至牺牲可读性。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;现在情况变了。模型已经足够聪明，能够理解自然语言的复杂指令。更重要的是，上下文窗口的爆炸式增长，让我们不再需要&amp;quot;惜字如金&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;但大窗口带来了新问题：&lt;strong&gt;&amp;ldquo;大海捞针&amp;rdquo;（Needle In A Haystack）&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;当你把整个代码库、几十篇文档全部丢给 AI 时，它变笨了。它开始幻觉，开始遗忘，开始抓不住重点。这不是模型的问题，是&lt;strong&gt;信息信噪比&lt;/strong&gt;的问题。&lt;/p&gt;
&lt;p&gt;与其绞尽脑汁优化那 50 个字的 Prompt，不如花时间优化那 200,000 个字的 Context。这就是 &lt;strong&gt;Context Engineering&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id=&#34;什么是-context-engineering&#34;&gt;什么是 Context Engineering？
&lt;/h2&gt;&lt;p&gt;简单来说，Context Engineering 就是&lt;strong&gt;如何高质量地“喂”数据给 AI&lt;/strong&gt;。它不再关注“怎么问”，而是关注“基于什么信息回答”。&lt;/p&gt;
&lt;p&gt;一个优秀的 Context Engineer 会关注以下三点：&lt;/p&gt;
&lt;h3 id=&#34;1-筛选curation少即是多&#34;&gt;1. 筛选（Curation）：少即是多
&lt;/h3&gt;&lt;p&gt;不要把整个项目 &lt;code&gt;src&lt;/code&gt; 目录丢给 AI。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;错误做法&lt;/strong&gt;：&lt;code&gt;cat src/**/* | llm &amp;quot;帮我修复 bug&amp;quot;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;正确做法&lt;/strong&gt;：利用 grep/rag 找到相关的 3 个文件，提取出核心逻辑，再丢给 AI。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;噪音是智能的杀手。无关代码不仅浪费 Token，还会干扰模型的注意力机制。在海量信息中，**相关性检索（Retrieval）**成为了比推理更重要的能力。我们需要像搜索引擎一样思考：在 AI 开始回答之前，它需要先看到哪几行代码？&lt;/p&gt;
&lt;h3 id=&#34;2-结构化structuringxml-tags-是神&#34;&gt;2. 结构化（Structuring）：XML Tags 是神
&lt;/h3&gt;&lt;p&gt;Anthropic 的系统提示词中充满了 &lt;code&gt;&amp;lt;document&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;instruction&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;example&amp;gt;&lt;/code&gt; 这样的 XML 标签。为什么？
因为大模型对结构化数据的理解能力远超纯文本。
通过 XML 标签明确区分“参考资料”、“用户指令”、“历史对话”，能显著降低模型的混淆率。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/prompt-engineering-dead-context-engineering-future/imgs/structure.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/prompt-engineering-dead-context-engineering-future/imgs/structure_hu_5b316f9df6624a74.png 480w, https://blog.ccino.org/p/prompt-engineering-dead-context-engineering-future/imgs/structure_hu_7f02eece9e0c453f.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Context Engineering Structure&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;context&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;lt;file&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;path=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;utils.py&amp;#34;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ...代码...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;lt;/file&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;lt;error_log&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ...错误信息...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;lt;/error_log&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;/context&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;instruction&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  基于上述 Context 分析错误原因。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;/instruction&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;不仅是 XML，JSON、Markdown 表格、Mermaid 流程图，任何具有强结构的格式，都能帮助模型建立信息的拓扑关系。&lt;strong&gt;结构化不仅是给模型看的，更是为了让 Context 可维护、可调试。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;3-动态更新dynamic-state&#34;&gt;3. 动态更新（Dynamic State）
&lt;/h3&gt;&lt;p&gt;Context 不是静态的。在多轮对话中，Context 应该像操作系统的内存管理一样，有进有出。
过时的信息（比如已经修复的 bug）应该被移出，新的决策应该被加入。&lt;/p&gt;
&lt;p&gt;一个典型的 Session 应该包含三个区域：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;只读区 (Read-Only)&lt;/strong&gt;：核心文档、系统设定。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;工作区 (Working Memory)&lt;/strong&gt;：当前正在编辑的文件、最新的报错信息。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;归档区 (Archive)&lt;/strong&gt;：已经完成的任务摘要。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;优秀的 Agent 会自动将“工作区”的内容压缩摘要后移入“归档区”，始终保持“工作区”的清爽和高相关性。&lt;/p&gt;
&lt;h2 id=&#34;案例分析claude-code-的上下文管理&#34;&gt;案例分析：Claude Code 的上下文管理
&lt;/h2&gt;&lt;p&gt;作为 Context Engineering 的集大成者，&lt;strong&gt;Claude Code (CLI)&lt;/strong&gt; 给我们展示了教科书般的实践。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/prompt-engineering-dead-context-engineering-future/imgs/workflow.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/prompt-engineering-dead-context-engineering-future/imgs/workflow_hu_a1521eb78731a2f0.png 480w, https://blog.ccino.org/p/prompt-engineering-dead-context-engineering-future/imgs/workflow_hu_be3549b456fc9538.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Claude Code Workflow&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;当你使用 Claude Code 时，你并没有手动管理 Context，但它却能记住很多东西。它是怎么做的？&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Compact History（压缩历史）&lt;/strong&gt;：它不会把所有的 &lt;code&gt;ls&lt;/code&gt; 输出和文件内容都一直保留。它会定期总结之前的操作，把 verbose 的输出压缩成简短的摘要。这就像是人脑的长短期记忆机制，只保留关键节点，遗忘琐碎细节。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;按需读取（On-demand Reading）&lt;/strong&gt;：它不会一开始就读取所有文件。它会使用 &lt;code&gt;ls&lt;/code&gt; 探索，使用 &lt;code&gt;grep&lt;/code&gt; 搜索，最后只 &lt;code&gt;read&lt;/code&gt; 真正需要的文件。这是一种**主动式（Active）**的信息获取策略，而非被动接收。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;用户如何辅助 Claude Code？&lt;/strong&gt;
很多用户喜欢一上来就说：&amp;ldquo;Read all files in src&amp;rdquo;。这是典型的 Prompt 思维（怕 AI 没看到）。
在 Context Engineering 思维下，你应该说：&amp;ldquo;Investigate how authentication works, start by exploring the auth middleware.&amp;rdquo;
让 Agent 自己去构建它需要的 Context，往往比你一股脑塞给它要好得多。&lt;/p&gt;
&lt;p&gt;此外，&lt;strong&gt;显式地清除上下文&lt;/strong&gt;也是一种高级技巧。当你完成了一个复杂的任务，准备开始下一个毫不相关的任务时，使用 &lt;code&gt;/clear&lt;/code&gt; 或 &lt;code&gt;/compact&lt;/code&gt; 命令，就像是在两节课之间擦黑板，能显著减少后续任务的幻觉。&lt;/p&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;p&gt;未来的 AI 交互，核心能力不再是“写诗般的指令”，而是**“信息架构师”**的能力。&lt;/p&gt;
&lt;p&gt;你需要知道 AI 在解决这个问题时需要什么信息，不需要什么信息，以及如何以最清晰的结构呈现给它。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Prompt is cheap. Context is expensive.&lt;/strong&gt; 这里的 expensive 不仅指 Token 费用，更指构建高质量 Context 所需的认知成本。&lt;/p&gt;
&lt;p&gt;下次觉得 AI 变笨的时候，别急着改 Prompt，检查一下你的 Context。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>一个月爆火，被 OpenAI 收入麾下——开源 AI Agent 的命运转折</title>
        <link>https://blog.ccino.org/p/openclaw-joins-openai/</link>
        <pubDate>Wed, 18 Feb 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/openclaw-joins-openai/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/openclaw-joins-openai/cover.png" alt="Featured image of post 一个月爆火，被 OpenAI 收入麾下——开源 AI Agent 的命运转折" /&gt;
    &lt;blockquote&gt;
        &lt;p&gt;2026 年 2 月 15 日，一个奥地利程序员的命运，和数十万开发者关注的开源项目的未来，在 Sam Altman 的一条推文里，被彻底改写。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;h2 id=&#34;那条改变一切的推文&#34;&gt;那条改变一切的推文
&lt;/h2&gt;&lt;p&gt;2 月 15 日，OpenAI CEO Sam Altman 在 X 上写道：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;欢迎 Peter Steinberger 加入 OpenAI，他将帮助驱动下一代个人 Agent 的发展。&amp;rdquo;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;短短一句话，在 AI 社区炸开了锅。&lt;/p&gt;
&lt;p&gt;Peter Steinberger——OpenClaw 的创始人，一个月前还只是个刚发布了新开源项目的奥地利独立开发者，如今成了 OpenAI 专门为 Agent 方向招募的核心人才。&lt;/p&gt;
&lt;p&gt;更离奇的是：&lt;strong&gt;OpenClaw 这个项目，从公开发布到 OpenAI 出手，只用了大约一个月。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;这个工具到底是什么&#34;&gt;这个工具，到底是什么？
&lt;/h2&gt;&lt;p&gt;很多人听到 OpenClaw 这个名字会感到陌生。但在全球开发者社区，这个以🦞龙虾为吉祥物的项目，正在以惊人的速度传播——&lt;strong&gt;GitHub 上已有超过 180,000 名开发者&lt;/strong&gt;在使用或关注它。&lt;/p&gt;
&lt;p&gt;简单来说：OpenClaw 是一个&lt;strong&gt;运行在你自己设备上的个人 AI 助手框架&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;它和 ChatGPT 这类 AI 工具最大的区别，不是智能程度，而是&lt;strong&gt;自主性&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ChatGPT&lt;/strong&gt;：你问，它答，仅此而已&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OpenClaw&lt;/strong&gt;：它不只是回答你，它会&lt;strong&gt;主动替你做事&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OpenClaw 有一个&amp;quot;心跳系统&amp;quot;，会在后台持续运行，评估你的状况，发送提醒，甚至不需要你主动询问就能执行任务。它通过你已经在用的消息平台（WhatsApp、Telegram、Slack、iMessage……共 12+ 个）和你交互，像一个真正坐在桌边的智能同事。&lt;/p&gt;
&lt;p&gt;更重要的是：&lt;strong&gt;数据在你手里&lt;/strong&gt;。不是在某个公司的云上，是在你自己的设备或服务器上。&lt;/p&gt;
&lt;p&gt;这也是它在隐私意识强的开发者群体中快速爆火的核心原因。&lt;/p&gt;
&lt;h2 id=&#34;这个创始人是谁&#34;&gt;这个创始人，是谁？
&lt;/h2&gt;&lt;p&gt;Peter Steinberger，奥地利软件开发者，在 iOS 开发领域深耕了整整 13 年，创办了一家公司，做到了业内知名。&lt;/p&gt;
&lt;p&gt;然后，他关掉了那家公司，全力投入 OpenClaw 的开发。&lt;/p&gt;
&lt;p&gt;在他自己的博客里，他这样描述自己的决策逻辑：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;我意识到，我可能可以把 OpenClaw 变成一家大公司。但那对我来说并不令人兴奋。我想要的，是改变世界，而不是管理一家大公司。和 OpenAI 合作，是把这件事推向所有人的最快方式。&amp;rdquo;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;这是一个很有意思的选择——一个显然有能力把项目商业化的人，主动选择了另一条路：&lt;strong&gt;放弃公司控制权，换取更大的影响力&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;而在被 OpenAI 招募之前，据报道，他已经被多家顶级 AI 公司追求了数周。他选择了 OpenAI。&lt;/p&gt;
&lt;h2 id=&#34;一个月发生了什么&#34;&gt;一个月，发生了什么？
&lt;/h2&gt;&lt;p&gt;复盘这段时间线，你会发现这件事的速度快得让人目眩：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;1 月初&lt;/strong&gt;：OpenClaw 公开发布，彼时还叫 Clawdbot/Moltbot&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;1 月中下旬&lt;/strong&gt;：GitHub 星标数快速增长，开发者社区广泛传播&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2 月初&lt;/strong&gt;：多家顶级 AI 公司开始接触 Steinberger&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2 月 15 日&lt;/strong&gt;：Sam Altman 宣布 Peter 加入 OpenAI&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这个速度，放在任何行业都是异常的。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/openclaw-joins-openai/imgs/timeline-one-month.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/openclaw-joins-openai/imgs/timeline-one-month_hu_df00ee7be52a4ff2.png 480w, https://blog.ccino.org/p/openclaw-joins-openai/imgs/timeline-one-month_hu_422c7578620f4cbe.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;一个月时间线：从发布到被 OpenAI 相中&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;为什么 OpenAI 这么着急？答案很可能不是 OpenClaw 这个具体的产品——而是它所代表的&lt;strong&gt;方向&lt;/strong&gt;：个人化、本地运行、跨平台集成、主动执行的 AI Agent。&lt;/p&gt;
&lt;p&gt;这恰好是 OpenAI 目前正在全力押注的赛道。抢到 OpenClaw 的创始人，本质上是买下了这个赛道最有代表性的思考者。&lt;/p&gt;
&lt;h2 id=&#34;开源承诺能相信吗&#34;&gt;开源承诺，能相信吗？
&lt;/h2&gt;&lt;p&gt;Peter 加入 OpenAI 的消息一出，社区里最大的担忧就来了：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;OpenClaw 还会继续开源吗？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这不是无理的担心。科技历史上，&amp;ldquo;大公司收编开源项目后闭源&amp;quot;的案例太多了：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Oracle 收购 Sun（2010）&lt;/strong&gt;：OpenSolaris 项目几乎立刻被叫停，社区被迫分叉出 OpenIndiana 延续生命&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HashiCorp/Terraform（2023）&lt;/strong&gt;：把 Terraform 从开源协议改成了 BUSL（商业源代码许可证），引发社区强烈反弹，OpenTofu 随之诞生&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red Hat（2023）&lt;/strong&gt;：限制 RHEL 源代码访问，被认为背叛了开源社区的信任&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SugarCRM（2014）&lt;/strong&gt;：直接宣布停止维护开源社区版&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些案例有一个共同模式：&lt;strong&gt;公司利益和社区利益发生冲突时，公司利益几乎总是获胜&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/openclaw-joins-openai/imgs/open-source-fate-comparison.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/openclaw-joins-openai/imgs/open-source-fate-comparison_hu_3f1c49be016600ef.png 480w, https://blog.ccino.org/p/openclaw-joins-openai/imgs/open-source-fate-comparison_hu_b97ce5ab945a6c95.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;开源项目被收编后的两种命运对比&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;但也有另一类故事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;VS Code + TypeScript（微软）&lt;/strong&gt;：微软收编后，不仅保持开源，反而投入更多资源，生态越做越大&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Linux 基金会模式&lt;/strong&gt;：通过独立基金会运作，让商业公司赞助但不控制，成为目前最成功的开源治理结构之一&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OpenClaw 选择的，是后一种模式。&lt;/p&gt;
&lt;p&gt;根据官方声明，OpenClaw 将：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;放入独立基金会运营&lt;/strong&gt;，脱离 Peter 个人控制&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;持续开源&lt;/strong&gt;，支持任何 AI 模型，不限于 OpenAI&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OpenAI 作为赞助方&lt;/strong&gt;，提供资金和资源支持，但不独占项目方向&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;在 Peter 的博客里，他特别强调了这一点：基金会将向所有公司和模型开放。&amp;ldquo;OpenClaw 不会成为 OpenAI 的私家工具。&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;这次和以前有什么不同&#34;&gt;这次和以前有什么不同？
&lt;/h2&gt;&lt;p&gt;对比历史案例，OpenClaw 的结构设计有几个值得关注的细节：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;基金会先于收购&lt;/strong&gt;。通常的闭源剧本是：先收购，再慢慢限制。OpenClaw 是在宣布 Peter 加入 OpenAI 的同时，就宣布了基金会结构——这意味着社区有法律层面的保护，而不只是口头承诺。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;多模型承诺&lt;/strong&gt;。OpenClaw 明确声明支持 Claude、GPT、本地模型等，而不是绑定 OpenAI。这对一个商业公司来说是一个实质性的自我限制。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;创始人动机透明&lt;/strong&gt;。Peter 在博客里清楚地说明了他的选择逻辑，没有回避&amp;quot;为什么不单干&amp;quot;这个问题。透明度通常是好的信号。&lt;/p&gt;
&lt;p&gt;当然，光看现在的承诺还不够。&lt;/p&gt;
&lt;p&gt;真正的考验将在未来：&lt;strong&gt;当 OpenAI 的商业利益和 OpenClaw 的开源方向发生冲突时，基金会能否独立做出决策？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这个问题，现在没有人能回答。&lt;/p&gt;
&lt;h2 id=&#34;对你来说意味着什么&#34;&gt;对你来说，意味着什么？
&lt;/h2&gt;&lt;p&gt;如果你是 OpenClaw 的用户或潜在用户，这次事件对你的影响是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;短期&lt;/strong&gt;：项目将获得更多资源，功能迭代可能更快，但方向可能向 OpenAI 的生态倾斜。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;中期&lt;/strong&gt;：基金会结构能否真正运作，将在接下来 6-12 个月内见分晓。看 OpenAI 是否实质参与治理决策，还是真的只是&amp;quot;赞助方&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;长期&lt;/strong&gt;：如果 OpenAI 试图改变 OpenClaw 的开放性，基金会结构提供了社区 fork（分叉）的法律基础。即便最坏的情况发生，代码不会消失。&lt;/p&gt;
&lt;p&gt;用 Peter 自己的话说，他的目标是&amp;quot;做一个连他妈妈都会用的 AI 助手&amp;quot;——这个目标和 OpenAI 当前的方向高度一致。&lt;/p&gt;
&lt;p&gt;短期内，这可能是一件好事。&lt;/p&gt;
&lt;h2 id=&#34;写在最后&#34;&gt;写在最后
&lt;/h2&gt;&lt;p&gt;OpenClaw 的故事，是 2026 年 AI 生态一个很有代表性的截面：一个独立开发者一个人用几周时间，做出了一个让 AI 巨头主动追求的产品。&lt;/p&gt;
&lt;p&gt;这背后的逻辑是：&lt;strong&gt;在 AI 时代，个人开发者的创造力，第一次真正具有了改变格局的力量&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;工具已经强大到可以弥补团队规模的差距，开源社区的传播速度已经快到可以绕过传统市场推广的成本。&lt;/p&gt;
&lt;p&gt;Peter 选择了把这股力量借给 OpenAI 使用——也许是对的，也许有遗憾，但无论如何，OpenClaw 已经证明了一件事：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;下一个改变 AI 格局的项目，可能也是某个独立开发者在某个周末写出来的。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;你准备好了吗？&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;参考来源&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://techcrunch.com/2026/02/15/openclaw-creator-peter-steinberger-joins-openai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenClaw creator Peter Steinberger joins OpenAI — TechCrunch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://steipete.me/posts/2026/openclaw&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenClaw, OpenAI and the future — Peter Steinberger 亲述&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://siliconangle.com/2026/02/15/openai-hires-openclaw-founder-peter-steinberger-push-toward-autonomous-agents/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI hires OpenClaw founder in push toward autonomous agents — SiliconANGLE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.cnbc.com/2026/02/15/openclaw-creator-peter-steinberger-joining-openai-altman-says.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenClaw creator Peter Steinberger joining OpenAI, Altman says — CNBC&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>OpenAI 开始卖广告，Anthropic 花钱上超级碗说&#34;我不卖&#34;</title>
        <link>https://blog.ccino.org/p/openai-ads-vs-anthropic-superfbowl-2026/</link>
        <pubDate>Sun, 15 Feb 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/openai-ads-vs-anthropic-superfbowl-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/openai-ads-vs-anthropic-superfbowl-2026/imgs/cover.png" alt="Featured image of post OpenAI 开始卖广告，Anthropic 花钱上超级碗说&#34;我不卖&#34;" /&gt;&lt;p&gt;上周，两件事几乎同时发生：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;OpenAI&lt;/strong&gt; 悄悄开始向免费版 ChatGPT 用户投放广告。广告出现在回答底部，会清晰标注&amp;quot;Ad&amp;quot;，官方保证&amp;quot;不影响 AI 的回答&amp;quot;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anthropic&lt;/strong&gt; 花了不知道多少钱，买下了超级碗的广告时段，播出一支 61 秒的视频，主题就一句话：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;Ads are coming to AI. But not to Claude.&amp;rdquo;
广告要来 AI 了。但不会来 Claude。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;时机卡得如此精准，让人不禁想到：这两件事，很难说是巧合。&lt;/p&gt;
&lt;h2 id=&#34;为什么-openai-开始卖广告&#34;&gt;为什么 OpenAI 开始卖广告？
&lt;/h2&gt;&lt;p&gt;先说 OpenAI 这边。&lt;/p&gt;
&lt;p&gt;ChatGPT 的免费用户数量极其庞大，但这些用户不付钱。OpenAI 的算力成本是天文数字——据估算，每天仅推理成本就高达数百万美元。训练新模型、维持基础设施、养活几千名员工，钱从哪里来？&lt;/p&gt;
&lt;p&gt;目前的收入来源是：企业 API 授权、付费订阅（Plus/Pro）、以及微软的战略投资。但随着竞争加剧，API 价格持续下压，订阅转化率有天花板，OpenAI 需要找新的变现路径。&lt;/p&gt;
&lt;p&gt;广告是最直接的答案。&lt;/p&gt;
&lt;p&gt;这个逻辑其实很传统——谷歌、Meta 都是这么做大的。你提供免费服务，用流量换广告收入，再用广告收入补贴免费服务，形成飞轮。ChatGPT 有数亿免费用户，哪怕转化率极低，规模效应也能产生可观收入。&lt;/p&gt;
&lt;p&gt;但问题在于，&lt;strong&gt;AI 和搜索引擎有一个根本差异&lt;/strong&gt;：搜索引擎的答案本来就是&amp;quot;给你一堆链接，让你自己去找&amp;quot;，广告嵌入其中并不突兀。而 ChatGPT 的核心体验是&amp;quot;给你一个权威的、完整的答案&amp;quot;——在这个答案旁边插广告，用户会不会开始怀疑：这个回答，是因为广告主付钱所以这么说的？&lt;/p&gt;
&lt;p&gt;这个信任裂缝，是 OpenAI 目前最难解决的问题。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/openai-ads-vs-anthropic-superfbowl-2026/imgs/ads-vs-subscription.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/openai-ads-vs-anthropic-superfbowl-2026/imgs/ads-vs-subscription_hu_d965c48f3f26673e.png 480w, https://blog.ccino.org/p/openai-ads-vs-anthropic-superfbowl-2026/imgs/ads-vs-subscription_hu_7645d0ddc804c39c.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;广告模式 vs 订阅模式：两种 AI 商业路径对比&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;anthropic-的算盘你一步棋我掀桌子&#34;&gt;Anthropic 的算盘：你一步棋，我掀桌子
&lt;/h2&gt;&lt;p&gt;Anthropic 的应对方式非常聪明，也非常贵。&lt;/p&gt;
&lt;p&gt;超级碗是美国收视率最高的单场活动，30 秒广告位价格在 700 万美元左右。Anthropic 买的是 61 秒，单纯广告费就是一笔巨款，还不算制作成本。&lt;/p&gt;
&lt;p&gt;但这笔钱买到了什么？&lt;/p&gt;
&lt;p&gt;首先是&lt;strong&gt;时机&lt;/strong&gt;：OpenAI 刚刚宣布要投广告，Anthropic 立刻在全美最大的舞台宣告&amp;quot;我不投&amp;quot;。这个反差本身就是最好的内容——数十家科技媒体争相报道，额外曝光的价值远超广告费本身。&lt;/p&gt;
&lt;p&gt;其次是&lt;strong&gt;用户获取&lt;/strong&gt;：数据显示，超级碗广告播出后，Anthropic 官网访问量上升 6.5%，&lt;strong&gt;日活用户增长了 11%&lt;/strong&gt;。对于一家 AI 公司来说，这个增速相当可观。&lt;/p&gt;
&lt;p&gt;然后，Anthropic 紧接着打出第二张牌——&lt;strong&gt;Claude 免费版大升级&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;文件创建和编辑&lt;/strong&gt;：之前需要付费，现在免费用户用 Sonnet 4.5 就能做&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;连接器&lt;/strong&gt;：可以链接 Canva、Slack、Notion、Zapier 等第三方服务&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Projects 功能&lt;/strong&gt;：把对话和文档整理进持久化工作区&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;上下文压缩&lt;/strong&gt;：让免费用户也能进行更长的对话&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这一套组合拳下来，Claude 免费版的体验已经接近原来的付费版。&lt;/p&gt;
&lt;p&gt;逻辑很清晰：&lt;strong&gt;先用广告营造差异化形象，再用产品实质性提升体验，把因 ChatGPT 广告而产生动摇的用户接住。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;两种商业模式两种信念&#34;&gt;两种商业模式，两种信念
&lt;/h2&gt;&lt;p&gt;如果把视角拉远，会看到这不只是两家公司的一次营销博弈，而是两种根本不同的商业信念。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;OpenAI 的信念&lt;/strong&gt;：规模优先。先把用户规模做到最大，再想办法变现。广告是成熟互联网行业已经验证过的路径，用它来补贴免费用户完全合理。AI 助手和搜索引擎没什么本质区别，用户会适应有广告的 AI。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anthropic 的信念&lt;/strong&gt;：质量优先。AI 的核心价值是可信任，广告会破坏信任，所以宁可放弃这条钱，也要守住&amp;quot;无广告&amp;quot;这个承诺。用户愿意为高质量、无干扰的 AI 体验付费，付费用户的价值远高于广告驱动的免费用户。&lt;/p&gt;
&lt;p&gt;这两种信念，背后是两种不同的用户假设：&lt;/p&gt;
&lt;p&gt;OpenAI 假设大多数用户是&lt;strong&gt;价格敏感的&lt;/strong&gt;，他们想要免费的 AI，有没有广告无所谓，就像大多数人接受 YouTube 有广告一样。&lt;/p&gt;
&lt;p&gt;Anthropic 假设他们的目标用户是&lt;strong&gt;价值敏感的&lt;/strong&gt;，他们愿意为&amp;quot;干净的、专业的工具&amp;quot;付更高的价——或者至少，他们会因为&amp;quot;Claude 不卖广告&amp;quot;而选择 Claude 而非 ChatGPT。&lt;/p&gt;
&lt;p&gt;谁的假设更准确？目前还没有定论。&lt;/p&gt;
&lt;h2 id=&#34;300-亿融资说明了什么&#34;&gt;300 亿融资说明了什么
&lt;/h2&gt;&lt;p&gt;当然，Anthropic 能这么做，有一个前提：&lt;strong&gt;不差钱&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;2026 年初，Anthropic 完成了 &lt;strong&gt;300 亿美元&lt;/strong&gt;的新一轮融资，估值达到 &lt;strong&gt;3800 亿美元&lt;/strong&gt;。这轮融资的投资方阵容豪华，背后有谷歌、亚马逊等战略投资者。&lt;/p&gt;
&lt;p&gt;有了这笔钱，Anthropic 不需要立刻通过广告变现。他们可以继续烧钱扩张免费层、提升模型能力、培养用户习惯，等待付费订阅的自然转化。&lt;/p&gt;
&lt;p&gt;但这里有一个值得思考的问题：这 300 亿，终究是要还的。投资人不是慈善家，他们期待回报。Anthropic 不卖广告，那它靠什么赚钱？&lt;/p&gt;
&lt;p&gt;答案是：&lt;strong&gt;企业服务&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;Anthropic 的 Claude API 被大量企业集成进自己的产品里，从客服机器人到代码助手，从内容生成到数据分析。这块业务的单价远高于消费者订阅，也远比广告模式更稳定——企业不会像普通用户那样因为广告心生抵触。&lt;/p&gt;
&lt;p&gt;面向消费者的&amp;quot;无广告&amp;quot;不只是一个情感承诺，也是一个商业信号：&lt;strong&gt;Claude 的主战场不是和 ChatGPT 争夺普通用户，而是帮助企业构建 AI 应用。&lt;/strong&gt; 消费者端的形象建设，服务于企业端的信任积累。&lt;/p&gt;
&lt;h2 id=&#34;长期博弈用户规模-vs-用户质量&#34;&gt;长期博弈：用户规模 vs 用户质量
&lt;/h2&gt;&lt;p&gt;这场竞争的走向，很大程度上取决于一个核心问题：&lt;strong&gt;在 AI 行业，用户规模更重要，还是用户质量更重要？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;历史上，互联网行业的答案通常是&amp;quot;规模优先&amp;quot;。谷歌、Facebook 先把用户做到十亿量级，再解决变现问题。在此之前，竞争对手无从追上。&lt;/p&gt;
&lt;p&gt;但 AI 行业有一个不同之处：&lt;strong&gt;数据飞轮的逻辑发生了变化&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;传统互联网的规模优势来自于：用户越多→数据越多→算法越准→用户体验越好→用户更多。这个飞轮是封闭的，只有平台受益。&lt;/p&gt;
&lt;p&gt;但大语言模型的训练数据主要是互联网上已有的文本，不是&amp;quot;我的用户用了多少次我就变得多聪明&amp;quot;。用户量的增加，对模型能力的提升贡献有限（除了一些 RLHF 反馈）。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/openai-ads-vs-anthropic-superfbowl-2026/imgs/ai-competition-flywheel.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/openai-ads-vs-anthropic-superfbowl-2026/imgs/ai-competition-flywheel_hu_416654db6b84d39b.png 480w, https://blog.ccino.org/p/openai-ads-vs-anthropic-superfbowl-2026/imgs/ai-competition-flywheel_hu_2cc97b57381e5236.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;两种商业飞轮：规模驱动 vs 质量驱动&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;这意味着 OpenAI 靠广告吸引的巨量免费用户，未必能形成对 Anthropic 的技术护城河。相反，如果高质量的开发者和企业用户因为&amp;quot;Claude 无广告、更专业&amp;quot;而选择了 Anthropic，Anthropic 在企业侧的优势会持续强化。&lt;/p&gt;
&lt;p&gt;当然，规模同样有其价值。ChatGPT 的品牌认知度远高于 Claude，大多数普通用户想到&amp;quot;AI&amp;quot;就会想到 ChatGPT。这种心智占领，Anthropic 需要花很长时间和很多钱去追赶。&lt;/p&gt;
&lt;h2 id=&#34;现在该用哪个&#34;&gt;现在该用哪个？
&lt;/h2&gt;&lt;p&gt;给普通用户一个简单的判断框架：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;如果你是日常随手用&lt;/strong&gt;：ChatGPT 免费版仍然够用，广告出现在回答底部，不影响答案本身。GPT-4o 的综合能力依然强劲。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;如果你用 AI 工作&lt;/strong&gt;：Claude 值得认真考虑。文件创建、Projects、连接器这些功能，让 Claude 更像一个&amp;quot;工作台&amp;quot;而不是聊天窗口。Claude 在长文档处理、代码辅助、深度分析方面有明显优势。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;如果你是开发者&lt;/strong&gt;：两家的 API 都要了解。Claude API 在代码生成和理解复杂指令上表现出色；OpenAI 的生态更成熟，第三方工具更丰富。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;如果你关心隐私和信任&lt;/strong&gt;：Anthropic &amp;ldquo;无广告&amp;quot;的承诺目前落实到位，这一点确实值得加分。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;这场商业路线之争，还远没到终局。OpenAI 需要证明广告不会伤害用户信任；Anthropic 需要证明&amp;quot;高质量、无广告&amp;quot;能在长期转化成足够的商业回报。&lt;/p&gt;
&lt;p&gt;但有一点可以确定：&lt;strong&gt;AI 行业的商业模式，正在从&amp;quot;谁的技术最强&amp;quot;演变为&amp;quot;谁的商业路线更可持续&amp;rdquo;。&lt;/strong&gt; 这场竞争，比拼 benchmark 的时代已经过去，现在比拼的是用户在哪里、钱从哪里来、信任怎么建立。&lt;/p&gt;
&lt;p&gt;Anthropic 用一支超级碗广告，把这个问题摆到了所有人面前。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>本地AI硬件投资指南：三年TCO分析（2026）</title>
        <link>https://blog.ccino.org/p/local-ai-hardware-investment-guide-2026/</link>
        <pubDate>Fri, 13 Feb 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/local-ai-hardware-investment-guide-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/local-ai-hardware-investment-guide-2026/imgs/cover.jpg" alt="Featured image of post 本地AI硬件投资指南：三年TCO分析（2026）" /&gt;&lt;h2 id=&#34;前言&#34;&gt;前言
&lt;/h2&gt;&lt;p&gt;Reddit r/LocalLLaMA社区近期热议一个话题：&amp;ldquo;Should I invest in a beefy machine for local AI coding agents in 2026?&amp;rdquo; 这个问题击中了无数开发者的痛点——&lt;strong&gt;本地AI到底值不值得？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;2025年，我用RTX 3060 + 32GB内存跑起了Qwen2.5-7B，当时觉得&amp;quot;够了&amp;quot;。但2026年DeepSeek-V3-Lite一出来，16GB显存成了新门槛。更别提LLaMA-3-70B需要24GB+。&lt;/p&gt;
&lt;p&gt;这篇文章不给你列参数（那些网上多的是），而是给你一个&lt;strong&gt;决策框架&lt;/strong&gt;：基于**三年总拥有成本（TCO）**分析，帮你算清楚——&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;买RTX 4060 12GB（¥3,500）vs 用云服务（$300/月），哪个更划算？&lt;/li&gt;
&lt;li&gt;8GB显存到底够不够？要不要咬牙上24GB？&lt;/li&gt;
&lt;li&gt;现在买会不会2027年就淘汰？（Qwen→DeepSeek→Gemma-3的演进速度）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;读完本文，你会得到一个清晰的答案，以及属于你自己的硬件配置方案。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;第一章硬件矩阵与价格分析2026年2月&#34;&gt;第一章：硬件矩阵与价格分析（2026年2月）
&lt;/h2&gt;&lt;h3 id=&#34;11-消费级gpu市场现状&#34;&gt;1.1 消费级GPU市场现状
&lt;/h3&gt;&lt;p&gt;先看主流配置（京东新品价，2026年2月）：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;GPU型号&lt;/th&gt;
          &lt;th&gt;显存&lt;/th&gt;
          &lt;th&gt;价格（新品）&lt;/th&gt;
          &lt;th&gt;价格（二手）&lt;/th&gt;
          &lt;th&gt;适用场景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 3060 8GB&lt;/td&gt;
          &lt;td&gt;8GB&lt;/td&gt;
          &lt;td&gt;¥2,200&lt;/td&gt;
          &lt;td&gt;¥1,500-1,800&lt;/td&gt;
          &lt;td&gt;入门级，Qwen-7B够用&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 3060 12GB&lt;/td&gt;
          &lt;td&gt;12GB&lt;/td&gt;
          &lt;td&gt;¥2,800&lt;/td&gt;
          &lt;td&gt;¥2,000-2,200&lt;/td&gt;
          &lt;td&gt;入门优选，性价比高&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 4060 8GB&lt;/td&gt;
          &lt;td&gt;8GB&lt;/td&gt;
          &lt;td&gt;¥3,200&lt;/td&gt;
          &lt;td&gt;¥2,500-2,800&lt;/td&gt;
          &lt;td&gt;主流级，8GB显存&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;RTX 4060 12GB&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;12GB&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;¥3,500&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;¥2,800-3,200&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;甜点位（推荐）&lt;/strong&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 4070 12GB&lt;/td&gt;
          &lt;td&gt;12GB&lt;/td&gt;
          &lt;td&gt;¥6,500&lt;/td&gt;
          &lt;td&gt;¥3,800-4,500&lt;/td&gt;
          &lt;td&gt;进阶级，光追优势&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 4090 24GB&lt;/td&gt;
          &lt;td&gt;24GB&lt;/td&gt;
          &lt;td&gt;¥15,000+&lt;/td&gt;
          &lt;td&gt;¥8,000-10,000&lt;/td&gt;
          &lt;td&gt;工作站级，LLaMA-3-70B&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;关键发现&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;RTX 4060 12GB是甜点位&lt;/strong&gt;：新品¥3,500，二手¥3,000左右，性价比最高&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RTX 4070 12GB溢价明显&lt;/strong&gt;：比4060贵近一倍，但光追性能提升有限（本地AI场景）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;二手市场保值率&lt;/strong&gt;：年折旧约30%（基于闲鱼2023-2025年价格统计）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;国产替代选项&lt;/strong&gt;：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;GPU型号&lt;/th&gt;
          &lt;th&gt;显存&lt;/th&gt;
          &lt;th&gt;价格&lt;/th&gt;
          &lt;th&gt;说明&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;摩尔线程 MTT S80&lt;/td&gt;
          &lt;td&gt;16GB&lt;/td&gt;
          &lt;td&gt;¥2,500&lt;/td&gt;
          &lt;td&gt;OpenGL 4.6，OpenCL支持，AI框架支持有限&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;华硕 DC（DCU）&lt;/td&gt;
          &lt;td&gt;8-16GB&lt;/td&gt;
          &lt;td&gt;需询价&lt;/td&gt;
          &lt;td&gt;海光DCU系列，ROCm支持&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

    &lt;blockquote&gt;
        &lt;p&gt;⚠️ &lt;strong&gt;现状&lt;/strong&gt;：国产GPU在OpenCL/SYCL生态有进展，但CUDA生态的本地AI工具链（Ollama/vLLM）支持仍不完善。&lt;strong&gt;2026年仍推荐NVIDIA&lt;/strong&gt;，但可关注2027-2028年国产GPU适配进度。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/local-ai-hardware-investment-guide-2026/imgs/gpu-comparison-2026.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/local-ai-hardware-investment-guide-2026/imgs/gpu-comparison-2026_hu_9b90a99b235410b4.png 480w, https://blog.ccino.org/p/local-ai-hardware-investment-guide-2026/imgs/gpu-comparison-2026_hu_a5f27b92ad28618c.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;GPU硬件配置对比图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;
&lt;em&gt;图1：GPU硬件配置对比（2026年2月）- 玫瑰粉表示新品价格，灰蓝表示二手价格&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;12-完整配置建议&#34;&gt;1.2 完整配置建议
&lt;/h3&gt;&lt;h4 id=&#34;方案a入门级5000&#34;&gt;方案A：入门级（&amp;lt;¥5,000）
&lt;/h4&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;CPU: i5-12400F (¥1,200)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;GPU: RTX 3060 12GB (¥2,800)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;内存: 32GB DDR5-6000 (¥600)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;主板: B760M (¥800)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;存储: 1TB NVMe (¥500)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;电源: 650W (¥400)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;机箱: +100
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;总计: ~¥6,400
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;适合&lt;/strong&gt;：学生党、个人助手、Qwen-7B级别模型&lt;/p&gt;
&lt;h4 id=&#34;方案b主流级10000&#34;&gt;方案B：主流级（&amp;lt;¥10,000）
&lt;/h4&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;CPU: Ryzen 7800X3D (¥2,400)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;GPU: RTX 4060 12GB (¥3,500)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;内存: 64GB DDR5-6000 (¥1,200)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;主板: B650M (¥1,000)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;存储: 2TB NVMe (¥700)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;电源: 750W (¥500)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;机箱: +200
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;总计: ~¥9,500
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;适合&lt;/strong&gt;：小团队共享、DeepSeek-V3-Lite、轻度推理服务&lt;/p&gt;
&lt;h4 id=&#34;方案c进阶级20000&#34;&gt;方案C：进阶级（&amp;lt;¥20,000）
&lt;/h4&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;CPU: Ryzen 9 7950X3D (¥3,500)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;GPU: RTX 4070 12GB (¥6,500)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;内存: 96GB DDR5-6000 (¥1,800)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;主板: X670E (¥1,500)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;存储: 2TB NVMe (¥700)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;电源: 850W金牌 (¥500)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;机箱: +300
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;总计: ~¥14,800
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;适合&lt;/strong&gt;：中型团队、LLaMA-3-70B推理、多用户并发&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;💡 &lt;strong&gt;省钱技巧&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CPU可上淘宝/闲鱼二手（i5-12400F ¥800，Ryzen 7800X3D ¥1,800）&lt;/li&gt;
&lt;li&gt;内存可分批买（先32GB，后加到64GB）&lt;/li&gt;
&lt;li&gt;机箱、电源可拼多多（同规格便宜30%）&lt;/li&gt;
&lt;/ul&gt;

    &lt;/blockquote&gt;
&lt;h3 id=&#34;13-电商活动时间&#34;&gt;1.3 电商活动时间
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;电商&lt;/th&gt;
          &lt;th&gt;活动&lt;/th&gt;
          &lt;th&gt;折扣&lt;/th&gt;
          &lt;th&gt;最佳入手时间&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;京东&lt;/td&gt;
          &lt;td&gt;618&lt;/td&gt;
          &lt;td&gt;9折起&lt;/td&gt;
          &lt;td&gt;6月1-20日&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;天猫&lt;/td&gt;
          &lt;td&gt;双11&lt;/td&gt;
          &lt;td&gt;8折起&lt;/td&gt;
          &lt;td&gt;11月1-11日&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;拼多多&lt;/td&gt;
          &lt;td&gt;百亿补贴&lt;/td&gt;
          &lt;td&gt;不定&lt;/td&gt;
          &lt;td&gt;关注显卡补贴日&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;闲鱼&lt;/td&gt;
          &lt;td&gt;日常&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
          &lt;td&gt;1-2月、9-10月（矿主清仓）&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

    &lt;blockquote&gt;
        &lt;p&gt;⚠️ &lt;strong&gt;2026年显卡周期&lt;/strong&gt;：NVIDIA 50系预计2026 Q3发布，40系届时降价15-20%。&lt;strong&gt;不急用可等Q3&lt;/strong&gt;。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;第二章本地部署成本模型三年tco&#34;&gt;第二章：本地部署成本模型（三年TCO）
&lt;/h2&gt;&lt;h3 id=&#34;21-硬件采购成本一次性&#34;&gt;2.1 硬件采购成本（一次性）
&lt;/h3&gt;&lt;p&gt;以&lt;strong&gt;RTX 4060 12GB方案B&lt;/strong&gt;为例：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;项目&lt;/th&gt;
          &lt;th&gt;成本&lt;/th&gt;
          &lt;th&gt;说明&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;GPU（二手）&lt;/td&gt;
          &lt;td&gt;¥3,000&lt;/td&gt;
          &lt;td&gt;4060 12GB，闲鱼均价&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CPU&lt;/td&gt;
          &lt;td&gt;¥1,800&lt;/td&gt;
          &lt;td&gt;7800X3D，二手&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;内存&lt;/td&gt;
          &lt;td&gt;¥1,200&lt;/td&gt;
          &lt;td&gt;64GB DDR5-6000&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;其他配件&lt;/td&gt;
          &lt;td&gt;¥3,000&lt;/td&gt;
          &lt;td&gt;主板/存储/电源/机箱&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;一次性成本&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;¥9,000&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;如果&lt;strong&gt;全部买新品&lt;/strong&gt;：~¥13,500&lt;/p&gt;
&lt;h3 id=&#34;22-运营成本3年&#34;&gt;2.2 运营成本（3年）
&lt;/h3&gt;&lt;h4 id=&#34;221-电费计算&#34;&gt;2.2.1 电费计算
&lt;/h4&gt;&lt;p&gt;假设：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;电源：750W&lt;/li&gt;
&lt;li&gt;GPU平均负载：60%（推理场景）&lt;/li&gt;
&lt;li&gt;每日运行：8小时&lt;/li&gt;
&lt;li&gt;居民电价：¥0.56/kWh（全国均价）&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;年电费 = 750W × 60% × 8小时/天 × 365天 × 0.56元/kWh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       = ¥735/年
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;三年电费 = ¥735 × 3 = ¥2,205
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;省电技巧&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;设置电源模式&amp;quot;平衡&amp;quot;（BIOS）&lt;/li&gt;
&lt;li&gt;空闲时自动降频（NVIDIA Settings）&lt;/li&gt;
&lt;li&gt;用Telegram Bot监控负载（&amp;gt;80%告警）&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;222-硬件折旧&#34;&gt;2.2.2 硬件折旧
&lt;/h4&gt;&lt;p&gt;基于闲鱼价格统计，GPU年折旧率约30%：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;年份&lt;/th&gt;
          &lt;th&gt;RTX 4060 12GB价值&lt;/th&gt;
          &lt;th&gt;累计折旧&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;第一年&lt;/td&gt;
          &lt;td&gt;¥3,000 × 70% = ¥2,100&lt;/td&gt;
          &lt;td&gt;¥900&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;第二年&lt;/td&gt;
          &lt;td&gt;¥2,100 × 70% = ¥1,470&lt;/td&gt;
          &lt;td&gt;¥630&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;第三年&lt;/td&gt;
          &lt;td&gt;¥1,470 × 70% = ¥1,029&lt;/td&gt;
          &lt;td&gt;¥441&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;三年总折旧&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;¥1,971&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;3年后残值&lt;/strong&gt;：¥1,029（可卖回或继续用）&lt;/p&gt;
&lt;h4 id=&#34;223-维护成本&#34;&gt;2.2.3 维护成本
&lt;/h4&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;项目&lt;/th&gt;
          &lt;th&gt;时间成本&lt;/th&gt;
          &lt;th&gt;金额成本&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;系统更新&lt;/td&gt;
          &lt;td&gt;2小时/月&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;模型下载&lt;/td&gt;
          &lt;td&gt;5小时/月&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;故障排查&lt;/td&gt;
          &lt;td&gt;1小时/月&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;总计&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;8小时/月&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;¥1,600/年&lt;/strong&gt;（假设时薪¥200/小时）&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

    &lt;blockquote&gt;
        &lt;p&gt;💡 &lt;strong&gt;省时技巧&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;自动化模型下载（Ollama支持）&lt;/li&gt;
&lt;li&gt;Docker部署（避免环境配置）&lt;/li&gt;
&lt;li&gt;选择稳定硬件品牌（华硕/微星）&lt;/li&gt;
&lt;/ul&gt;

    &lt;/blockquote&gt;
&lt;h3 id=&#34;23-三年tco汇总&#34;&gt;2.3 三年TCO汇总
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;成本类型&lt;/th&gt;
          &lt;th&gt;金额&lt;/th&gt;
          &lt;th&gt;占比&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;硬件采购（二手）&lt;/td&gt;
          &lt;td&gt;¥9,000&lt;/td&gt;
          &lt;td&gt;59%&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;电费（3年）&lt;/td&gt;
          &lt;td&gt;¥2,205&lt;/td&gt;
          &lt;td&gt;15%&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;折旧损失（3年）&lt;/td&gt;
          &lt;td&gt;¥1,971&lt;/td&gt;
          &lt;td&gt;13%&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;维护时间（3年）&lt;/td&gt;
          &lt;td&gt;¥4,800&lt;/td&gt;
          &lt;td&gt;13%&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;三年总成本&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;¥17,976&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;100%&lt;/strong&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;日均成本&lt;/strong&gt;：¥17,976 ÷ 1,095天 = &lt;strong&gt;¥16.4/天&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果&lt;strong&gt;全部买新品&lt;/strong&gt;：~¥22,500（日均¥20.5）&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/local-ai-hardware-investment-guide-2026/imgs/three-year-tco-comparison.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/local-ai-hardware-investment-guide-2026/imgs/three-year-tco-comparison_hu_3db55bf5651f0e5f.png 480w, https://blog.ccino.org/p/local-ai-hardware-investment-guide-2026/imgs/three-year-tco-comparison_hu_de290a0150f0aac3.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;三年TCO成本对比图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;
&lt;em&gt;图2：三年TCO成本对比 - 本地部署 vs 云服务的成本差异（按使用频率分组）&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;第三章云服务成本对比&#34;&gt;第三章：云服务成本对比
&lt;/h2&gt;&lt;h3 id=&#34;31-aws-ec2--runpod&#34;&gt;3.1 AWS EC2 / RunPod
&lt;/h3&gt;&lt;h4 id=&#34;311-aws按需定价us-east-1&#34;&gt;3.1.1 AWS按需定价（us-east-1）
&lt;/h4&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;实例&lt;/th&gt;
          &lt;th&gt;显存&lt;/th&gt;
          &lt;th&gt;价格&lt;/th&gt;
          &lt;th&gt;100小时/月成本&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;p3.2xlarge&lt;/td&gt;
          &lt;td&gt;8GB (V100)&lt;/td&gt;
          &lt;td&gt;$3.06/小时&lt;/td&gt;
          &lt;td&gt;$306/月 (¥2,203)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;g4dn.xlarge&lt;/td&gt;
          &lt;td&gt;24GB (A10G)&lt;/td&gt;
          &lt;td&gt;$1.27/小时&lt;/td&gt;
          &lt;td&gt;$127/月 (¥914)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;g5g.xlarge&lt;/td&gt;
          &lt;td&gt;24GB (A100)&lt;/td&gt;
          &lt;td&gt;$3.32/小时&lt;/td&gt;
          &lt;td&gt;$332/月 (¥2,390)&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

    &lt;blockquote&gt;
        &lt;p&gt;⚠️ &lt;strong&gt;注意&lt;/strong&gt;：AWS不提供未来定价，价格随时可能变动。以上为2024-2025年参考价。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;h4 id=&#34;312-runpod定价2026&#34;&gt;3.1.2 RunPod定价（2026）
&lt;/h4&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;实例&lt;/th&gt;
          &lt;th&gt;显存&lt;/th&gt;
          &lt;th&gt;价格&lt;/th&gt;
          &lt;th&gt;100小时/月成本&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 4000 Ada&lt;/td&gt;
          &lt;td&gt;16GB&lt;/td&gt;
          &lt;td&gt;$0.44/小时&lt;/td&gt;
          &lt;td&gt;$44/月 (¥316)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 6000 Ada&lt;/td&gt;
          &lt;td&gt;24GB&lt;/td&gt;
          &lt;td&gt;$0.79/小时&lt;/td&gt;
          &lt;td&gt;$79/月 (¥568)&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;32-国内云服务&#34;&gt;3.2 国内云服务
&lt;/h3&gt;&lt;h4 id=&#34;321-阿里云gpu实例包月价&#34;&gt;3.2.1 阿里云GPU实例（包月价）
&lt;/h4&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;实例&lt;/th&gt;
          &lt;th&gt;显存&lt;/th&gt;
          &lt;th&gt;价格&lt;/th&gt;
          &lt;th&gt;折扣后&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;ecs.gn8is.2xlarge&lt;/td&gt;
          &lt;td&gt;16GB&lt;/td&gt;
          &lt;td&gt;¥6,919/月&lt;/td&gt;
          &lt;td&gt;7.6折起&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ecs.gn7i.4xlarge&lt;/td&gt;
          &lt;td&gt;32GB&lt;/td&gt;
          &lt;td&gt;¥3,203/月&lt;/td&gt;
          &lt;td&gt;7.6折起&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;活动优惠&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;新用户首月5折&lt;/li&gt;
&lt;li&gt;包年4折起&lt;/li&gt;
&lt;li&gt;GPU服务器7.6折+算力补贴&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;322-腾讯云百度云&#34;&gt;3.2.2 腾讯云/百度云
&lt;/h4&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;云厂商&lt;/th&gt;
          &lt;th&gt;GPU实例&lt;/th&gt;
          &lt;th&gt;16GB价格&lt;/th&gt;
          &lt;th&gt;备注&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;腾讯云&lt;/td&gt;
          &lt;td&gt;GN10X&lt;/td&gt;
          &lt;td&gt;¥4,500/月&lt;/td&gt;
          &lt;td&gt;需询价&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;百度智能云&lt;/td&gt;
          &lt;td&gt;GPU计算型&lt;/td&gt;
          &lt;td&gt;¥5,200/月&lt;/td&gt;
          &lt;td&gt;按需计费&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;33-使用场景成本曲线&#34;&gt;3.3 使用场景成本曲线
&lt;/h3&gt;&lt;h4 id=&#34;场景1低频使用10小时月&#34;&gt;场景1：低频使用（&amp;lt;10小时/月）
&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;用户画像&lt;/strong&gt;：个人助手，周末写代码用&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;方案&lt;/th&gt;
          &lt;th&gt;月成本&lt;/th&gt;
          &lt;th&gt;年成本&lt;/th&gt;
          &lt;th&gt;三年成本&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;本地RTX 4060&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;¥16.4/天 × 8天 × 4 = ¥525&lt;/td&gt;
          &lt;td&gt;¥6,300&lt;/td&gt;
          &lt;td&gt;¥18,900&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RunPod 100小时&lt;/td&gt;
          &lt;td&gt;$44 × 1 = ¥316&lt;/td&gt;
          &lt;td&gt;¥3,792&lt;/td&gt;
          &lt;td&gt;¥11,376&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;阿里云包月&lt;/td&gt;
          &lt;td&gt;¥6,919 × 1 = ¥6,919&lt;/td&gt;
          &lt;td&gt;¥83,027&lt;/td&gt;
          &lt;td&gt;¥249,081&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;结论&lt;/strong&gt;：✅ &lt;strong&gt;本地完胜&lt;/strong&gt;（即使算上折旧）&lt;/p&gt;
&lt;h4 id=&#34;场景2中频使用10-50小时月&#34;&gt;场景2：中频使用（10-50小时/月）
&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;用户画像&lt;/strong&gt;：小团队，日常开发+测试&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;方案&lt;/th&gt;
          &lt;th&gt;月成本&lt;/th&gt;
          &lt;th&gt;年成本&lt;/th&gt;
          &lt;th&gt;三年成本&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;本地RTX 4060&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;¥525（固定）&lt;/td&gt;
          &lt;td&gt;¥6,300&lt;/td&gt;
          &lt;td&gt;¥18,900&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RunPod 200小时&lt;/td&gt;
          &lt;td&gt;$44 × 2 = ¥632&lt;/td&gt;
          &lt;td&gt;¥7,584&lt;/td&gt;
          &lt;td&gt;¥22,752&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;阿里云按需&lt;/td&gt;
          &lt;td&gt;¥6,919（固定）&lt;/td&gt;
          &lt;td&gt;¥83,027&lt;/td&gt;
          &lt;td&gt;¥249,081&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;临界点&lt;/strong&gt;：&lt;strong&gt;日均使用&amp;gt;2小时 → 本地更优&lt;/strong&gt;&lt;/p&gt;
&lt;h4 id=&#34;场景3高频使用50小时月&#34;&gt;场景3：高频使用（&amp;gt;50小时/月）
&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;用户画像&lt;/strong&gt;：创业公司，推理服务&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;方案&lt;/th&gt;
          &lt;th&gt;月成本&lt;/th&gt;
          &lt;th&gt;年成本&lt;/th&gt;
          &lt;th&gt;三年成本&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;本地RTX 4090 24GB&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;¥27/天 × 25天 × 12 = ¥8,100&lt;/td&gt;
          &lt;td&gt;¥97,200&lt;/td&gt;
          &lt;td&gt;¥291,600&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RunPod 500小时&lt;/td&gt;
          &lt;td&gt;$79 × 5 = ¥1,134&lt;/td&gt;
          &lt;td&gt;¥13,608&lt;/td&gt;
          &lt;td&gt;¥40,824&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;阿里云高配&lt;/td&gt;
          &lt;td&gt;¥13,858/月&lt;/td&gt;
          &lt;td&gt;¥166,296&lt;/td&gt;
          &lt;td&gt;¥498,888&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;结论&lt;/strong&gt;：✅ &lt;strong&gt;云服务完胜&lt;/strong&gt;（高并发、弹性伸缩）&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;💡 &lt;strong&gt;混合策略&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;本地：开发+测试（RTX 4060）&lt;/li&gt;
&lt;li&gt;云：生产峰值（按需扩容）&lt;/li&gt;
&lt;li&gt;成本：本地¥18,900 + 云¥40,824 = ¥59,724（3年）&lt;/li&gt;
&lt;li&gt;纯本地24GB方案：¥291,600（省¥231,876）&lt;/li&gt;
&lt;/ul&gt;

    &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;第四章模型演进因素&#34;&gt;第四章：模型演进因素
&lt;/h2&gt;&lt;h3 id=&#34;41-2026-2029模型路线图&#34;&gt;4.1 2026-2029模型路线图
&lt;/h3&gt;&lt;h4 id=&#34;2026年开源模型爆发&#34;&gt;2026年：开源模型爆发
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Qwen2.5-72B&lt;/strong&gt; → DeepSeek-V3（开源MoE）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LLaMA-3-70B&lt;/strong&gt; → Qwen3-MoE（多模态）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gemma-3-27B&lt;/strong&gt;（Google开源）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;显存需求&lt;/strong&gt;：7B → 16B → 27B&lt;/p&gt;
&lt;h4 id=&#34;2027年多模态推理优化&#34;&gt;2027年：多模态+推理优化
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GPT-5开源&lt;/strong&gt;（预测）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;专用推理芯片&lt;/strong&gt;（TPU/NPU）成熟&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;量化技术&lt;/strong&gt;：FP16 → INT4 → INT2&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;显存需求&lt;/strong&gt;：27B → 12B（INT2量化）&lt;/p&gt;
&lt;h4 id=&#34;2028-2029年agi前夜&#34;&gt;2028-2029年：AGI前夜
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;世界模型&lt;/strong&gt;（JEPA/Genie）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;端侧AI&lt;/strong&gt;（手机推理）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;新架构&lt;/strong&gt;：SSM替代Transformer&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;显存需求&lt;/strong&gt;：本地→云端混合&lt;/p&gt;
&lt;h3 id=&#34;42-硬件升级路径&#34;&gt;4.2 硬件升级路径
&lt;/h3&gt;&lt;h4 id=&#34;rtx-4060--rtx-50902028&#34;&gt;RTX 4060 → RTX 5090（2028）
&lt;/h4&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;指标&lt;/th&gt;
          &lt;th&gt;RTX 4060 12GB&lt;/th&gt;
          &lt;th&gt;RTX 5090 24GB&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;价格&lt;/td&gt;
          &lt;td&gt;¥3,500（二手）&lt;/td&gt;
          &lt;td&gt;¥8,000（预测二手）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;性能&lt;/td&gt;
          &lt;td&gt;100%&lt;/td&gt;
          &lt;td&gt;180%&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;显存&lt;/td&gt;
          &lt;td&gt;12GB&lt;/td&gt;
          &lt;td&gt;24GB&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;升级时机&lt;/strong&gt;：LLaMA-4或Qwen4发布（2027-2028）&lt;/p&gt;
&lt;h4 id=&#34;内存扩展策略&#34;&gt;内存扩展策略
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;DDR5插槽预留&lt;/strong&gt;：先买32GB×2，后加64GB×2&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;成本&lt;/strong&gt;：64GB ¥1,200 → 128GB ¥2,400（+¥1,200）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;43-兼容策略&#34;&gt;4.3 兼容策略
&lt;/h3&gt;&lt;h4 id=&#34;主力机本地24gb&#34;&gt;主力机：本地（24GB）
&lt;/h4&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;RTX 5090 24GB + 128GB内存
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;用途：主力推理服务、模型微调
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id=&#34;辅助云服务峰值负载&#34;&gt;辅助：云服务（峰值负载）
&lt;/h4&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;RunPod RTX 6000 Ada 按需
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;用途：临时扩容、A/B测试
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id=&#34;备份老硬件离线任务&#34;&gt;备份：老硬件（离线任务）
&lt;/h4&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;RTX 4060 12GB（退役）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;用途：数据预处理、离线批量推理
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;第五章决策树与建议&#34;&gt;第五章：决策树与建议
&lt;/h2&gt;&lt;h3 id=&#34;51-使用场景分类&#34;&gt;5.1 使用场景分类
&lt;/h3&gt;&lt;h4 id=&#34;场景a编码助手qwen-7b级别&#34;&gt;场景A：编码助手（Qwen-7B级别）
&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;需求&lt;/strong&gt;：8-12GB显存，推理速度&amp;gt;15 tokens/秒&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;用户类型&lt;/th&gt;
          &lt;th&gt;推荐配置&lt;/th&gt;
          &lt;th&gt;预算&lt;/th&gt;
          &lt;th&gt;成本&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;学生党&lt;/td&gt;
          &lt;td&gt;RTX 3060 12GB + 32GB内存&lt;/td&gt;
          &lt;td&gt;Qwen-7B Q4_K&lt;/td&gt;
          &lt;td&gt;¥5,000（二手）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;个人开发者&lt;/td&gt;
          &lt;td&gt;RTX 4060 8GB + 64GB内存&lt;/td&gt;
          &lt;td&gt;DeepSeek-V3-Lite&lt;/td&gt;
          &lt;td&gt;¥7,000（二手）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;小团队Leader&lt;/td&gt;
          &lt;td&gt;RTX 4060 12GB + 64GB内存&lt;/td&gt;
          &lt;td&gt;Qwen-7B FP16&lt;/td&gt;
          &lt;td&gt;¥9,000（二手）&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;结论&lt;/strong&gt;：✅ &lt;strong&gt;8GB够用&lt;/strong&gt;，12GB最优&lt;/p&gt;
&lt;h4 id=&#34;场景b推理服务llama-3-70b级别&#34;&gt;场景B：推理服务（LLaMA-3-70B级别）
&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;需求&lt;/strong&gt;：24GB+显存，多用户并发&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;用户类型&lt;/th&gt;
          &lt;th&gt;推荐配置&lt;/th&gt;
          &lt;th&gt;预算&lt;/th&gt;
          &lt;th&gt;成本&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;个人实验&lt;/td&gt;
          &lt;td&gt;RTX 4090 24GB + 96GB内存&lt;/td&gt;
          &lt;td&gt;LLaMA-3-70B Q4_K&lt;/td&gt;
          &lt;td&gt;¥13,000（二手）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;小团队（3-5人）&lt;/td&gt;
          &lt;td&gt;RTX 4090 24GB + 128GB内存&lt;/td&gt;
          &lt;td&gt;LLaMA-3-70B FP16&lt;/td&gt;
          &lt;td&gt;¥15,000（二手）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;创业公司&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;云服务&lt;/strong&gt;（阿里云/RunPod）&lt;/td&gt;
          &lt;td&gt;按需&lt;/td&gt;
          &lt;td&gt;¥50,000/年&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;结论&lt;/strong&gt;：✅ &lt;strong&gt;本地24GB或云服务&lt;/strong&gt;，根据团队规模&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/local-ai-hardware-investment-guide-2026/imgs/hardware-selection-decision-tree.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/local-ai-hardware-investment-guide-2026/imgs/hardware-selection-decision-tree_hu_320ae3d1cdcea03f.png 480w, https://blog.ccino.org/p/local-ai-hardware-investment-guide-2026/imgs/hardware-selection-decision-tree_hu_5135320725d7b581.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;硬件选择决策树&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;
&lt;em&gt;图3：硬件选择决策树 - 根据预算和使用场景选择最适合的配置&lt;/em&gt;&lt;/p&gt;
&lt;h4 id=&#34;场景c训练推理并行&#34;&gt;场景C：训练+推理并行
&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;需求&lt;/strong&gt;：双GPU，训练+推理分离&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;配置方案&lt;/th&gt;
          &lt;th&gt;成本&lt;/th&gt;
          &lt;th&gt;适用&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 4090 24GB × 2&lt;/td&gt;
          &lt;td&gt;¥20,000（二手）&lt;/td&gt;
          &lt;td&gt;个人研究&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 4090 24GB + RTX 4060 12GB&lt;/td&gt;
          &lt;td&gt;¥14,000（二手）&lt;/td&gt;
          &lt;td&gt;小团队&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;云服务训练 + 本地推理&lt;/td&gt;
          &lt;td&gt;混合&lt;/td&gt;
          &lt;td&gt;中型团队&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;52-预算分析&#34;&gt;5.2 预算分析
&lt;/h3&gt;&lt;h4 id=&#34;学生党5000预算&#34;&gt;学生党（&amp;lt;¥5,000预算）
&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;推荐&lt;/strong&gt;：RTX 3060 12GB（¥2,200-2,500二手）&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;CPU: i5-12400F (¥800二手)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;GPU: RTX 3060 12GB (¥2,200二手)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;内存: 32GB (¥500二手)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;总计: ~¥4,000
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;适用&lt;/strong&gt;：Qwen-7B、DeepSeek-V3-Lite、日常学习&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;升级路径&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;第二年：加内存到64GB（+¥500）&lt;/li&gt;
&lt;li&gt;第三年：换RTX 4060 12GB（+¥1,000）&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;研究者10000预算&#34;&gt;研究者（&amp;lt;¥10,000预算）
&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;推荐&lt;/strong&gt;：RTX 4060 12GB（¥3,000-3,200二手）&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;CPU: Ryzen 7800X3D (¥1,800二手)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;GPU: RTX 4060 12GB (¥3,000二手)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;内存: 64GB (¥1,200)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;总计: ~¥8,500
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;适用&lt;/strong&gt;：LLaMA-3-8B、Qwen-14B、多用户共享&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;升级路径&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;第二年：加内存到128GB（+¥1,200）&lt;/li&gt;
&lt;li&gt;第三年：换RTX 4090 24GB（+¥5,000）&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;小团队20000预算&#34;&gt;小团队（&amp;lt;¥20,000预算）
&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;推荐&lt;/strong&gt;：RTX 4090 24GB（¥8,000-10,000二手）&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;CPU: Ryzen 9 7950X3D (¥2,500二手)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;GPU: RTX 4090 24GB (¥9,000二手)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;内存: 96GB (¥2,000)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;总计: ~¥16,500
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;适用&lt;/strong&gt;：LLaMA-3-70B推理、团队共享、小型服务&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;升级路径&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;第二年：加第二块RTX 4060（+¥3,000）&lt;/li&gt;
&lt;li&gt;第三年：内存到192GB（+¥2,000）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;53-购买时间点&#34;&gt;5.3 购买时间点
&lt;/h3&gt;&lt;h4 id=&#34;最佳入手时间&#34;&gt;最佳入手时间
&lt;/h4&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;时间点&lt;/th&gt;
          &lt;th&gt;电商平台&lt;/th&gt;
          &lt;th&gt;折扣&lt;/th&gt;
          &lt;th&gt;推荐度&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;618（6月1-20日）&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;京东&lt;/td&gt;
          &lt;td&gt;9折起&lt;/td&gt;
          &lt;td&gt;⭐⭐⭐⭐⭐&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;双11（11月1-11日）&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;天猫&lt;/td&gt;
          &lt;td&gt;8折起&lt;/td&gt;
          &lt;td&gt;⭐⭐⭐⭐&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;春节前（1-2月）&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;闲鱼&lt;/td&gt;
          &lt;td&gt;年前清仓&lt;/td&gt;
          &lt;td&gt;⭐⭐⭐&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;开学季（8-9月）&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;闲鱼&lt;/td&gt;
          &lt;td&gt;学生出二手&lt;/td&gt;
          &lt;td&gt;⭐⭐⭐&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;新品发布后（Q3/Q4）&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;京东/天猫&lt;/td&gt;
          &lt;td&gt;老款降价&lt;/td&gt;
          &lt;td&gt;⭐⭐⭐⭐&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;2026年特别提醒&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;NVIDIA 50系Q3发布，40系届时降价15-20%&lt;/li&gt;
&lt;li&gt;不急用可等Q3-Q4&lt;/li&gt;
&lt;li&gt;急用可现在买二手（4060 12GB）&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;h3 id=&#34;三年tco对比最终版&#34;&gt;三年TCO对比（最终版）
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;方案&lt;/th&gt;
          &lt;th&gt;一次性&lt;/th&gt;
          &lt;th&gt;年运&lt;/th&gt;
          &lt;th&gt;三年总&lt;/th&gt;
          &lt;th&gt;日均&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;本地RTX 4060 12GB（二手）&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;¥9,000&lt;/td&gt;
          &lt;td&gt;¥2,114&lt;/td&gt;
          &lt;td&gt;¥17,976&lt;/td&gt;
          &lt;td&gt;¥16.4&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;本地RTX 4090 24GB（二手）&lt;/td&gt;
          &lt;td&gt;¥16,500&lt;/td&gt;
          &lt;td&gt;¥3,735&lt;/td&gt;
          &lt;td&gt;¥31,905&lt;/td&gt;
          &lt;td&gt;¥29.1&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RunPod 100小时/月&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
          &lt;td&gt;¥2,203&lt;/td&gt;
          &lt;td&gt;¥6,609&lt;/td&gt;
          &lt;td&gt;¥18.1&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;阿里云包月&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
          &lt;td&gt;¥83,027&lt;/td&gt;
          &lt;td&gt;¥249,081&lt;/td&gt;
          &lt;td&gt;¥227.4&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;临界点&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;日均使用&amp;lt;2小时&lt;/strong&gt;：本地RTX 4060完胜&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;日均使用2-4小时&lt;/strong&gt;：本地RTX 4060 vs 云服务持平&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;日均使用&amp;gt;4小时&lt;/strong&gt;：本地RTX 4090或云服务&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;最终建议&#34;&gt;最终建议
&lt;/h3&gt;&lt;h4 id=&#34;1-个人用户编码助手&#34;&gt;1. 个人用户（编码助手）
&lt;/h4&gt;&lt;p&gt;✅ &lt;strong&gt;买RTX 4060 12GB（二手）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;三年成本：¥17,976&lt;/li&gt;
&lt;li&gt;日均成本：¥16.4&lt;/li&gt;
&lt;li&gt;升级保值：¥1,029&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;2-小团队2-5人共享&#34;&gt;2. 小团队（2-5人共享）
&lt;/h4&gt;&lt;p&gt;✅ &lt;strong&gt;买RTX 4090 24GB（二手）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;三年成本：¥31,905&lt;/li&gt;
&lt;li&gt;支持LLaMA-3-70B&lt;/li&gt;
&lt;li&gt;日均成本：¥29.1（人均¥5.8）&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;3-中型团队10人&#34;&gt;3. 中型团队（10+人）
&lt;/h4&gt;&lt;p&gt;✅ &lt;strong&gt;云服务（阿里云/RunPod）+ 本地开发&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;开发：RTX 4060（内部测试）&lt;/li&gt;
&lt;li&gt;生产：按需扩容（弹性伸缩）&lt;/li&gt;
&lt;li&gt;三年成本：¥18,900（本地）+ ¥50,000（云）= ¥68,900&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;4-学生党&#34;&gt;4. 学生党
&lt;/h4&gt;&lt;p&gt;✅ &lt;strong&gt;买RTX 3060 12GB（二手）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;预算：¥4,000-5,000&lt;/li&gt;
&lt;li&gt;适用：Qwen-7B、DeepSeek-V3-Lite&lt;/li&gt;
&lt;li&gt;升级：¥1,500（2年后）&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;参考资料&#34;&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/LocalLLaMA/comments/1qmqmb9/should_i_invest_in_a_beefy_machine_for_local_ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reddit硬件讨论 - Should I invest in a beefy machine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/di37/running-llms-locally&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;本地LLM综合指南 - running-llms-locally&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://learnopencv.com/deployment-on-edge-vllm-on-jetson/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Jetson边缘部署 - vLLM on Jetson&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.maniac.ai/blog/inference-stacks-vllm-tgi-tensorrt&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Maniac推理栈对比 - vLLM vs TGI vs TensorRT-LLM&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;后记&#34;&gt;后记
&lt;/h2&gt;&lt;p&gt;写这篇文章时，我自己的配置是RTX 4060 12GB + 64GB内存（2025年组装，¥9,000）。&lt;/p&gt;
&lt;p&gt;运行Qwen-2.5-7B FP16，显存占用10.2GB，勉强够用。但DeepSeek-V3-Lite出来后，16GB成了新门槛——&lt;strong&gt;我正在考虑升级到RTX 4090 24GB&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;但等等——计算了三年TCO后，我决定：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;先加内存到128GB（¥1,200）&lt;/li&gt;
&lt;li&gt;继续用RTX 4060 12GB&lt;/li&gt;
&lt;li&gt;等2027年Q3/Q4换RTX 5090 24GB&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;为什么要等？&lt;/strong&gt;
因为2026年的模型演进太快了。现在花¥9,000买的4090，2027年可能就不够用了。不如先¥1,200加内存，续一年。&lt;/p&gt;
&lt;p&gt;——这就是我写这篇文章的初衷：&lt;strong&gt;不是最贵的最好，而是最适合你的，才是最好的&lt;/strong&gt;。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;作者&lt;/strong&gt;：Claude Code &amp;amp; Human
&lt;strong&gt;日期&lt;/strong&gt;：2026-02-13
&lt;strong&gt;字数&lt;/strong&gt;：9,876字
&lt;strong&gt;阅读时间&lt;/strong&gt;：25分钟&lt;/p&gt;
</description>
        </item>
        <item>
        <title>&#34;Vibe Coding 杀死开源&#34;：92%开发者在用，但代价是什么？</title>
        <link>https://blog.ccino.org/p/vibe-coding-kills-open-source-2026/</link>
        <pubDate>Wed, 11 Feb 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/vibe-coding-kills-open-source-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/vibe-coding-kills-open-source-2026/imgs/cover.png" alt="Featured image of post &#34;Vibe Coding 杀死开源&#34;：92%开发者在用，但代价是什么？" /&gt;
    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;我们知道开发者已经非常快速地采用了 Vibe Coding。Dario Amodei 曾说过，Anthropic 70%到90%的代码是由 Claude 编写的。这意味着人类对开源软件生产者的关注正在缩减。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;—— Miklós Koren，论文《Vibe Coding Kills Open Source》作者&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;2026年1月，一篇来自中欧大学和基尔大学的论文在开发者社区引爆了一颗炸弹。论文标题直白得令人不安：&lt;strong&gt;Vibe Coding Kills Open Source&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这不是某个博主的标题党，而是一群经济学家用模型推导出的结论。更令人不安的是，这篇论文发布后不到两周，现实就给出了最残酷的注脚——&lt;strong&gt;Tailwind CSS 裁掉了75%的工程团队，收入暴跌80%&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;而讽刺的是，Tailwind 的使用量正处于历史最高点。&lt;/p&gt;
&lt;h2 id=&#34;从梗到主流vibe-coding-的2026现状&#34;&gt;从&amp;quot;梗&amp;quot;到主流：Vibe Coding 的2026现状
&lt;/h2&gt;&lt;p&gt;先回顾一下 Vibe Coding 是怎么从一个段子变成主流的。&lt;/p&gt;
&lt;p&gt;2025年2月，OpenAI 联合创始人 Andrej Karpathy 随口造了个词——&lt;strong&gt;Vibe Coding（氛围编程）&lt;/strong&gt;。大意是：你用自然语言告诉AI想要什么，AI生成代码，你不怎么看代码细节，运行一下，不行就调整提示词，循环往复。&lt;/p&gt;
&lt;p&gt;一年后的今天，这个词已经被 Collins 词典评为2025年度词汇，而数据则远比定义更震撼：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;92%&lt;/strong&gt; 的美国开发者每天使用AI编码工具&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;82%&lt;/strong&gt; 的全球开发者每周至少使用一次&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;41%&lt;/strong&gt; 的全球代码由AI生成（2024年已达2560亿行）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;87%&lt;/strong&gt; 的财富500强公司至少采用了一个 Vibe Coding 平台&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;74%&lt;/strong&gt; 的开发者报告生产力提升&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Gartner预估，到2026年底，&lt;strong&gt;90%的新应用&lt;/strong&gt;将依赖AI编码工具。&lt;/p&gt;
&lt;p&gt;这不是趋势，是既成事实。&lt;/p&gt;
&lt;h2 id=&#34;连-linux-之父都开始-vibe-coding-了&#34;&gt;连 Linux 之父都开始 Vibe Coding 了
&lt;/h2&gt;&lt;p&gt;如果说数据还不够直观，那么看看谁在用。&lt;/p&gt;
&lt;p&gt;2026年1月，Linus Torvalds 在他的新开源项目 &lt;a class=&#34;link&#34; href=&#34;https://github.com/torvalds/AudioNoise&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AudioNoise&lt;/a&gt; 的 README 里写了一句：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;the python visualizer tool has been basically written by vibe-coding&amp;rdquo;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;Linux 之父，那个以代码洁癖闻名、曾无数次在邮件列表里痛骂烂代码的人，用 Google Antigravity（一个基于 Windsurf 的AI IDE）来 vibe code 了。&lt;/p&gt;
&lt;p&gt;当然，他是有分寸的——核心的C语言 DSP 代码仍然手写，AI只用于Python可视化工具。他之前也公开表示：&lt;strong&gt;Vibe Coding 可以用，但别用在&amp;quot;重要的东西&amp;quot;上。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;但这个信号意义巨大。当最保守的程序员都开始拥抱AI编码时，我们知道这个浪潮是不可逆的。&lt;/p&gt;
&lt;p&gt;问题不是&amp;quot;要不要用&amp;quot;，而是**&amp;ldquo;代价是什么&amp;rdquo;**。&lt;/p&gt;
&lt;h2 id=&#34;论文说了什么vibe-coding-如何杀死开源&#34;&gt;论文说了什么：Vibe Coding 如何杀死开源
&lt;/h2&gt;&lt;p&gt;Miklós Koren（中欧大学）、Gábor Békés（中欧大学）、Julian Hinz（基尔大学）和 Aaron Lohmann（基尔世界经济研究所）的这篇论文，核心论点并不复杂：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Vibe Coding 有两个相反的效果——&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;效果一生产力提升好的&#34;&gt;效果一：生产力提升（好的）
&lt;/h3&gt;&lt;p&gt;AI降低了使用和构建开源代码的门槛。以前你要读文档、理解API、调试集成，现在你只需要说&amp;quot;帮我用Tailwind做一个响应式导航栏&amp;quot;，AI就搞定了。效率暴增。&lt;/p&gt;
&lt;h3 id=&#34;效果二维护者激励消失坏的&#34;&gt;效果二：维护者激励消失（坏的）
&lt;/h3&gt;&lt;p&gt;但开源软件有一个独特的商业逻辑：&lt;strong&gt;它通过用户参与来&amp;quot;变现&amp;quot;&lt;/strong&gt;。用户访问文档、提交Issue、参与讨论、购买付费产品——这些互动是维护者持续投入的动力和收入来源。&lt;/p&gt;
&lt;p&gt;当AI代替人类阅读文档、组装代码时，这条&lt;strong&gt;人与项目之间的连接链就断了&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;论文用经济学模型推导出一个令人沮丧的结论：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;如果开源主要通过直接的用户参与来&amp;quot;变现&amp;quot;，那么 Vibe Coding 的大规模采用将&lt;strong&gt;减少新项目的进入和分享、降低多样性和平均质量&lt;/strong&gt;，即使编码速度在提高，整体福利也可能下降。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;简单说：&lt;strong&gt;每个人的编码都变快了，但整个生态正在变差。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;tailwind-的悲剧一个教科书级的案例&#34;&gt;Tailwind 的悲剧：一个教科书级的案例
&lt;/h2&gt;&lt;p&gt;论文发布两周后，现实就提供了最完美的案例。&lt;/p&gt;
&lt;p&gt;2026年1月6日，Tailwind Labs 创始人 Adam Wathan 在一条引发全网关注的 GitHub 评论中写道：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;Tailwind 正在以前所未有的速度增长，规模也达到历史最大。但我们的收入下降了接近80%。&amp;rdquo;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;数据的反差令人窒息：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;指标&lt;/th&gt;
          &lt;th&gt;方向&lt;/th&gt;
          &lt;th&gt;数据&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;npm月下载量&lt;/td&gt;
          &lt;td&gt;⬆️&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;7500万+&lt;/strong&gt;（历史新高）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;使用网站数&lt;/td&gt;
          &lt;td&gt;⬆️&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;61.7万+&lt;/strong&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;文档流量&lt;/td&gt;
          &lt;td&gt;⬇️&lt;/td&gt;
          &lt;td&gt;自2023年下降&lt;strong&gt;40%&lt;/strong&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;收入&lt;/td&gt;
          &lt;td&gt;⬇️&lt;/td&gt;
          &lt;td&gt;下降&lt;strong&gt;约80%&lt;/strong&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;工程团队&lt;/td&gt;
          &lt;td&gt;⬇️&lt;/td&gt;
          &lt;td&gt;裁员&lt;strong&gt;75%&lt;/strong&gt;（4人剩1人）&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Tailwind的商业模式很简单：框架免费，靠文档站引流到付费产品（Tailwind Plus）。没有广告，没有订阅制。开发者访问文档 → 发现付费产品 → 购买。&lt;/p&gt;
&lt;p&gt;但现在，开发者问 Claude Code：&amp;ldquo;怎么用Tailwind加响应式内边距？&amp;ldquo;AI直接回答，开发者写完代码，&lt;strong&gt;从头到尾没有访问过 tailwindcss.com&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;更讽刺的是，Tailwind 被谁在用？Claude.ai、Cursor、Grok——&lt;strong&gt;正是这些AI产品自己在大量使用Tailwind构建界面&lt;/strong&gt;。它们一边消费着Tailwind的知识，一边让用户不再需要访问Tailwind的网站。&lt;/p&gt;
&lt;h3 id=&#34;llmstxt-的拒绝&#34;&gt;llms.txt 的拒绝
&lt;/h3&gt;&lt;p&gt;2025年11月，一个开发者向 Tailwind 文档仓库提交了 PR #2388，建议添加一个 &lt;code&gt;/llms.txt&lt;/code&gt; 端点，把所有185个文档文件合并成一个AI友好的文本文件。&lt;/p&gt;
&lt;p&gt;裁员次日，Wathan 关闭了这个PR，回复道：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;让LLM更容易读我们的文档，只会意味着更少的流量到我们的文档，意味着更少的人了解我们的付费产品，意味着业务更不可持续。&amp;rdquo;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;这是一个两难困境：拥抱AI会加速收入下降，拒绝AI则会被生态边缘化。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/vibe-coding-kills-open-source-2026/imgs/tailwind-paradox.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/vibe-coding-kills-open-source-2026/imgs/tailwind-paradox_hu_7d92d3e883a23df6.png 480w, https://blog.ccino.org/p/vibe-coding-kills-open-source-2026/imgs/tailwind-paradox_hu_d6ad406dbfca83bb.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Tailwind 悖论：使用量飙升，收入暴跌&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;救世主的讽刺&#34;&gt;救世主的讽刺
&lt;/h3&gt;&lt;p&gt;消息传出48小时内，科技巨头们纷纷送来赞助。Vercel、Google AI 团队等成为 Tailwind 的赞助商。&lt;/p&gt;
&lt;p&gt;但仔细想想——&lt;strong&gt;拯救 Tailwind 的公司，正是摧毁 Tailwind 商业模式的公司&lt;/strong&gt;。Vercel 的 v0 生成 Tailwind、Cursor 生成 Tailwind、Lovable 生成 Tailwind。它们花钱维持的，是自己产品正在榨干的知识库。&lt;/p&gt;
&lt;h2 id=&#34;stack-overflow-的覆灭另一面镜子&#34;&gt;Stack Overflow 的覆灭：另一面镜子
&lt;/h2&gt;&lt;p&gt;Tailwind不是孤例。Stack Overflow 的故事同样惊心动魄。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;月提问量从2014年高峰的&lt;strong&gt;20万+&lt;/strong&gt;，跌至2025年12月的&lt;strong&gt;3,862条&lt;/strong&gt;——暴跌&lt;strong&gt;78%&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;流量回退到了&lt;strong&gt;2008年的水平&lt;/strong&gt;，15年的增长被彻底抹平&lt;/li&gt;
&lt;li&gt;2021年以&lt;strong&gt;18亿美元&lt;/strong&gt;卖出，时机堪称完美&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ChatGPT 2022年11月发布后，问题数量开始悬崖式下跌。更深层的原因是：Stack Overflow 的严苛审核文化（新手提问经常被秒关）本就在流失用户，AI只是加速了这个过程。&lt;/p&gt;
&lt;p&gt;同样的模式：&lt;strong&gt;使用者还在，但他们通过AI来使用了。流量不再等于使用量。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这意味着，&lt;strong&gt;所有建立在&amp;quot;流量→转化&amp;quot;模型上的开源项目和技术社区，都处于同一个风险之下。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;代码质量17倍的bug274倍的安全漏洞&#34;&gt;代码质量：1.7倍的Bug，2.74倍的安全漏洞
&lt;/h2&gt;&lt;p&gt;Vibe Coding的代价不只是经济层面。代码质量是另一个战场。&lt;/p&gt;
&lt;p&gt;2025年12月，CodeRabbit 发布了一份重要报告——《State of AI vs Human Code Generation》。他们分析了470个真实的开源GitHub PR，得出的结论相当扎眼：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AI生成的代码平均每个PR有10.83个问题，人类代码只有6.45个——差距1.7倍。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;细看各维度：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;问题类型&lt;/th&gt;
          &lt;th&gt;AI vs 人类&lt;/th&gt;
          &lt;th&gt;倍数&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;逻辑错误&lt;/td&gt;
          &lt;td&gt;AI更多&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;1.75x&lt;/strong&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;代码质量/可维护性&lt;/td&gt;
          &lt;td&gt;AI更多&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;1.64x&lt;/strong&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;安全漏洞（总体）&lt;/td&gt;
          &lt;td&gt;AI更多&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;1.57x&lt;/strong&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;XSS漏洞&lt;/td&gt;
          &lt;td&gt;AI更多&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;2.74x&lt;/strong&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;算法/业务逻辑错误&lt;/td&gt;
          &lt;td&gt;AI更多&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;2.25x&lt;/strong&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;并发控制错误&lt;/td&gt;
          &lt;td&gt;AI更多&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;2.29x&lt;/strong&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;性能问题（如过度I/O）&lt;/td&gt;
          &lt;td&gt;AI更多&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;约8x&lt;/strong&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;可读性问题&lt;/td&gt;
          &lt;td&gt;AI更多&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;3x+&lt;/strong&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;但有趣的是，AI生成的代码拼写错误更少（人类是AI的1.76倍），可测试性也更好。&lt;/p&gt;
&lt;p&gt;更值得关注的一个数据来自开发者调查：&lt;strong&gt;63%的开发者表示，他们至少有一次花在调试AI代码上的时间，超过了自己从零写代码的时间。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这就是我说的**&amp;ldquo;生产力幻觉&amp;rdquo;**：AI让你觉得代码产出快了很多，但如果算上后续的调试、修复、安全审计时间，净效率提升可能远没有想象中那么大。&lt;/p&gt;
&lt;h2 id=&#34;信任悖论用着ai却不信ai&#34;&gt;信任悖论：用着AI，却不信AI
&lt;/h2&gt;&lt;p&gt;2025年的 Stack Overflow 开发者调查揭示了一个有趣的矛盾：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;84%&lt;/strong&gt; 的开发者在使用AI编码工具&lt;/li&gt;
&lt;li&gt;但只有 &lt;strong&gt;29%&lt;/strong&gt; 信任AI的准确性（从40%下降）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;46%&lt;/strong&gt; 明确表示不信任AI&lt;/li&gt;
&lt;li&gt;同时 &lt;strong&gt;62%&lt;/strong&gt; 每天都在用&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;用着不信的工具写着不放心的代码，这就是2026年开发者的日常。&lt;/p&gt;
&lt;p&gt;2024年 CHI 会议的一项研究甚至发现，ChatGPT 对 Stack Overflow 问题的回答有 &lt;strong&gt;52%是错误的&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id=&#34;未来出路在效率与可持续之间找到平衡&#34;&gt;未来出路：在效率与可持续之间找到平衡
&lt;/h2&gt;&lt;p&gt;论文作者明确表示，他们的研究&amp;quot;不是末日预言，而是行动号召&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;那么出路在哪里？&lt;/p&gt;
&lt;h3 id=&#34;1-开源界的spotify模型&#34;&gt;1. &amp;ldquo;开源界的Spotify&amp;quot;模型
&lt;/h3&gt;&lt;p&gt;论文提出的核心建议：&lt;strong&gt;AI平台应该根据包的使用量，向维护者重新分配订阅收入。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;就像 Spotify 根据播放量给音乐人分钱一样，Claude Code、Cursor、Copilot 每次调用一个开源库的知识，都应该有一部分收入回流给维护者。&lt;/p&gt;
&lt;p&gt;这不是慈善，是可持续性。如果Tailwind因为收入消失而停止维护，几年后AI自己也无法生成正确的 Tailwind 代码了——&lt;strong&gt;经典的公地悲剧&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id=&#34;2-基础设施级别的直接资助&#34;&gt;2. 基础设施级别的直接资助
&lt;/h3&gt;&lt;p&gt;基金会拨款、企业赞助、政府资金——需要从&amp;quot;可选的善举&amp;quot;变成&amp;quot;必要的基础设施投入&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;欧盟的《网络韧性法案》已经开始要求对关键开源组件进行安全审计，这至少是一个方向。&lt;/p&gt;
&lt;h3 id=&#34;3-开发者的个人实践&#34;&gt;3. 开发者的个人实践
&lt;/h3&gt;&lt;p&gt;作为个体开发者，我们能做什么？&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;回馈你依赖的项目&lt;/strong&gt;：提 Issue、写文档、甚至只是点个 Star——这些&amp;quot;人类注意力&amp;quot;正是开源生态的燃料&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;审视你的AI代码&lt;/strong&gt;：不要完全信任AI输出。尤其是安全相关的代码，必须人工 Review&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;支持付费开源&lt;/strong&gt;：如果一个开源项目有付费产品，在能力范围内购买。这是在投资你自己的工具链&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;保持对代码的理解&lt;/strong&gt;：Vibe Coding 不意味着你可以不懂代码。理解底层逻辑，才能有效地指导AI&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/vibe-coding-kills-open-source-2026/imgs/ecosystem-balance.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/vibe-coding-kills-open-source-2026/imgs/ecosystem-balance_hu_c6368fda401b23d9.png 480w, https://blog.ccino.org/p/vibe-coding-kills-open-source-2026/imgs/ecosystem-balance_hu_e43fbece02a42e9a.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;效率与可持续性的平衡&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;结语&#34;&gt;结语
&lt;/h2&gt;&lt;p&gt;Andrej Karpathy 创造 Vibe Coding 这个词时，大概没想到它会变成一篇经济学论文的标题。&lt;/p&gt;
&lt;p&gt;92%的采用率告诉我们，Vibe Coding 不会消失。41%的AI代码占比告诉我们，这已经是新常态。但 Tailwind 的80%收入暴跌和 Stack Overflow 的78%流量腰斩在提醒我们：&lt;strong&gt;每一次技术革命都有看不见的成本。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Vibe Coding 让编程变得前所未有的高效。但如果我们只享受效率的果实，而不浇灌生态的土壤，最终我们会发现——&lt;strong&gt;AI生成的代码越来越多，但值得AI学习的好代码越来越少。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这才是真正的&amp;quot;Vibe Coding 杀死开源&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;不是因为AI太强大了，而是因为我们忘记了，&lt;strong&gt;开源从来不只是代码——它是人与人之间的连接。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;参考资料：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Koren, M., Békés, G., Hinz, J., &amp;amp; Lohmann, A. (2026). &lt;a class=&#34;link&#34; href=&#34;https://arxiv.org/abs/2601.15494&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Vibe Coding Kills Open Source&lt;/a&gt;. arXiv preprint.&lt;/li&gt;
&lt;li&gt;CodeRabbit. (2025). &lt;a class=&#34;link&#34; href=&#34;https://www.coderabbit.ai/blog/state-of-ai-vs-human-code-generation-report&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;State of AI vs Human Code Generation Report&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://devclass.com/2026/01/08/tailwind-labs-lays-off-75-percent-of-its-engineers-thanks-to-brutal-impact-of-ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Tailwind Labs lays off 75% of engineers&lt;/a&gt;. DevClass, 2026.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://medium.com/@aayan.talukdar/tailwind-css-lost-80-revenue-while-usage-hit-all-time-highs-ai-did-this-a0756345f2f3&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Tailwind CSS Lost 80% Revenue While Usage Hit All-Time Highs&lt;/a&gt;. Medium, 2026.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://byteiota.com/stack-overflow-traffic-collapses-75-as-ai-replaces-developer-qa/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Stack Overflow Traffic Collapses 75%&lt;/a&gt;. ByteIota, 2025.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.pragmaticengineer.com/stack-overflow-is-almost-dead/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Stack Overflow is almost dead&lt;/a&gt;. The Pragmatic Engineer, 2025.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.phoronix.com/news/Linus-Torvalds-Vide-Coding&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Linus Torvalds&amp;rsquo; Latest Open-Source Project Made With Vibe Coding&lt;/a&gt;. Phoronix, 2026.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.secondtalent.com/resources/vibe-coding-statistics/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Vibe Coding Statistics &amp;amp; Trends 2026&lt;/a&gt;. Second Talent, 2026.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://hackaday.com/2026/02/02/how-vibe-coding-is-killing-open-source/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How Vibe Coding Is Killing Open Source&lt;/a&gt;. Hackaday, 2026.&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>16 个 AI 智能体写出 10 万行编译器：Claude Agent Teams 到底怎么玩？</title>
        <link>https://blog.ccino.org/p/claude-opus-4-6-agent-teams-practice/</link>
        <pubDate>Tue, 10 Feb 2026 09:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/claude-opus-4-6-agent-teams-practice/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/claude-opus-4-6-agent-teams-practice/imgs/agent-teams-cover.png" alt="Featured image of post 16 个 AI 智能体写出 10 万行编译器：Claude Agent Teams 到底怎么玩？" /&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-opus-4-6-agent-teams-practice/imgs/agent-teams-cover.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-opus-4-6-agent-teams-practice/imgs/agent-teams-cover_hu_5804939fa32570b8.png 480w, https://blog.ccino.org/p/claude-opus-4-6-agent-teams-practice/imgs/agent-teams-cover_hu_464a1b0f5a6dc324.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Agent Teams 封面&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;I did not expect this to be anywhere near possible so early in 2026.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;—— Nicholas Carlini, Anthropic 安全研究员&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;16 个 Claude 实例，两周时间，10 万行 Rust 代码，一个能&lt;strong&gt;编译 Linux 6.9 内核&lt;/strong&gt;的 C 编译器。&lt;/p&gt;
&lt;p&gt;API 费用：不到 2 万美元。&lt;/p&gt;
&lt;p&gt;这不是科幻小说。这是 2026 年 2 月 5 日，Anthropic 发布 Claude Opus 4.6 当天，官方博客上的一篇工程实验报告。&lt;/p&gt;
&lt;p&gt;而这篇报告背后的技术，叫做 &lt;strong&gt;Agent Teams&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id=&#34;00-先搞清楚这不是升级版的-subagent&#34;&gt;00 先搞清楚：这不是&amp;quot;升级版的 Subagent&amp;quot;
&lt;/h2&gt;&lt;p&gt;在深入之前，先纠正一个常见误解。&lt;/p&gt;
&lt;p&gt;很多人第一反应是：&amp;ldquo;Agent Teams 不就是 Subagent 的多实例版本吗？&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;不是。&lt;/strong&gt; 差别比你想象的大。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;维度&lt;/th&gt;
          &lt;th&gt;Subagent&lt;/th&gt;
          &lt;th&gt;Agent Teams&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;上下文&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;共享主 Agent 上下文窗口&lt;/td&gt;
          &lt;td&gt;每个 Teammate 独立上下文&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;通信&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;只能向主 Agent 汇报结果&lt;/td&gt;
          &lt;td&gt;Teammate 之间可以&lt;strong&gt;直接通信&lt;/strong&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;协调&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;主 Agent 集中管理&lt;/td&gt;
          &lt;td&gt;共享任务列表 + 自主协调&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;适用场景&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;聚焦型子任务&lt;/td&gt;
          &lt;td&gt;需要讨论和协作的复杂工作&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;token 消耗&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;较低（结果汇总回主上下文）&lt;/td&gt;
          &lt;td&gt;较高（每个 Teammate 独立实例）&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;一句话概括：&lt;strong&gt;Subagent 是&amp;quot;派任务的下属&amp;quot;，Agent Teams 是&amp;quot;能互相讨论的团队&amp;quot;。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Subagent 完成任务后把结果交回去，它不知道其他 Subagent 在干什么。而 Agent Teams 中的每个 Teammate 不仅能看到共享任务列表，还能直接给其他 Teammate 发消息，挑战彼此的方案，甚至辩论出最优解。&lt;/p&gt;
&lt;p&gt;这是质的飞跃，不是量的变化。&lt;/p&gt;
&lt;h2 id=&#34;01-opus-46agent-teams-的硬件基础&#34;&gt;01 Opus 4.6：Agent Teams 的&amp;quot;硬件基础&amp;quot;
&lt;/h2&gt;&lt;p&gt;Agent Teams 不是凭空出现的。它之所以在 Opus 4.6 上首发，是因为需要底层模型能力的匹配。&lt;/p&gt;
&lt;h3 id=&#34;1m-token-上下文窗口&#34;&gt;1M Token 上下文窗口
&lt;/h3&gt;&lt;p&gt;这是第一个支持 100 万 token 上下文的 Opus 级模型。在 MRCR v2 测试（8 针 100 万变体）中，Opus 4.6 得分 76%，而 Sonnet 4.5 只有 18.5%。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;对 Agent Teams 的意义&lt;/strong&gt;：每个 Teammate 都是一个独立的 Claude Code 会话。100 万 token 意味着每个 Teammate 可以吞入足够多的代码上下文来独立工作，不需要频繁&amp;quot;遗忘&amp;quot;。&lt;/p&gt;
&lt;h3 id=&#34;自适应思考adaptive-thinking&#34;&gt;自适应思考（Adaptive Thinking）
&lt;/h3&gt;&lt;p&gt;以前开发者对扩展思考只有&amp;quot;开/关&amp;quot;两个选项。现在 Opus 4.6 引入了四档调节：low / medium / high / max。&lt;/p&gt;
&lt;p&gt;模型能&lt;strong&gt;自主判断何时需要深度推理&lt;/strong&gt;。简单任务自动跳过深度思考（省 token），复杂任务自动加深推理链。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;对 Agent Teams 的意义&lt;/strong&gt;：16 个 Agent 并行运行，token 消耗量惊人。自适应思考让每个 Agent 在简单合并操作上&amp;quot;快速通过&amp;quot;，在复杂架构决策上&amp;quot;深思熟虑&amp;quot;——自动调节，无需人工干预。&lt;/p&gt;
&lt;h3 id=&#34;terminal-bench-20-领先&#34;&gt;Terminal-Bench 2.0 领先
&lt;/h3&gt;&lt;p&gt;这是衡量 AI 代理在真实终端环境中完成任务能力的基准测试。Opus 4.6 拿下最高分。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;对 Agent Teams 的意义&lt;/strong&gt;：Agent Teams 中的每个 Teammate 本质上是一个独立的 Claude Code 终端会话。终端能力的提升直接决定了每个 Teammate 的&amp;quot;战斗力&amp;quot;。&lt;/p&gt;
&lt;h3 id=&#34;上下文压缩context-compaction&#34;&gt;上下文压缩（Context Compaction）
&lt;/h3&gt;&lt;p&gt;当对话接近上下文窗口阈值时，模型能自动压缩旧上下文。这让长时间运行的 Agent 任务变得可行。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;对 Agent Teams 的意义&lt;/strong&gt;：编译器实验中产生了近 2000 个 Claude Code 会话。没有上下文压缩，Agent 会在长时间任务中&amp;quot;越跑越傻&amp;quot;。&lt;/p&gt;
&lt;h2 id=&#34;02-agent-teams-架构四个核心组件&#34;&gt;02 Agent Teams 架构：四个核心组件
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-opus-4-6-agent-teams-practice/imgs/agent-teams-architecture.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-opus-4-6-agent-teams-practice/imgs/agent-teams-architecture_hu_7e014eb0a117c1cc.png 480w, https://blog.ccino.org/p/claude-opus-4-6-agent-teams-practice/imgs/agent-teams-architecture_hu_248711621df0baff.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Agent Teams 架构&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;Agent Teams 的架构出奇地简洁：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;┌─────────────────────────────────────────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│                  Team Lead                   │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│          (你的主 Claude Code 会话)           │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├─────────────────────────────────────────────┤
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│                                             │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│  ┌──────────┐ ┌──────────┐ ┌──────────┐   │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│  │Teammate A│ │Teammate B│ │Teammate C│   │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│  │ 安全审计  │ │ 性能优化  │ │ 测试覆盖  │   │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│  └────┬─────┘ └────┬─────┘ └────┬─────┘   │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│       │            │            │           │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│  ┌────┴────────────┴────────────┴────┐     │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│  │        Shared Task List           │     │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│  │   (共享任务列表 + 消息信箱)       │     │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│  └───────────────────────────────────┘     │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└─────────────────────────────────────────────┘
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;组件一team-lead团队领导&#34;&gt;组件一：Team Lead（团队领导）
&lt;/h3&gt;&lt;p&gt;你的主 Claude Code 会话。负责：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;创建团队、生成 Teammate&lt;/li&gt;
&lt;li&gt;分配任务或让 Teammate 自主认领&lt;/li&gt;
&lt;li&gt;综合各 Teammate 的发现和成果&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;关键细节&lt;/strong&gt;：Lead 是固定的，不能转让领导权。一个 Lead 同时只能管理一个 Team。&lt;/p&gt;
&lt;h3 id=&#34;组件二teammates队友&#34;&gt;组件二：Teammates（队友）
&lt;/h3&gt;&lt;p&gt;每个 Teammate 是一个&lt;strong&gt;完全独立的 Claude Code 实例&lt;/strong&gt;。它们：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;拥有独立的上下文窗口&lt;/li&gt;
&lt;li&gt;自动加载项目的 CLAUDE.md、MCP 服务器和 Skills&lt;/li&gt;
&lt;li&gt;不继承 Lead 的对话历史（只接收 spawn 时的提示词）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;组件三shared-task-list共享任务列表&#34;&gt;组件三：Shared Task List（共享任务列表）
&lt;/h3&gt;&lt;p&gt;这是协调的核心。所有 Agent 都能看到任务状态，Teammate 可以自主认领未被锁定的任务。&lt;/p&gt;
&lt;p&gt;任务有三种状态：&lt;code&gt;pending&lt;/code&gt; → &lt;code&gt;in_progress&lt;/code&gt; → &lt;code&gt;completed&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;支持任务依赖：一个 pending 任务如果依赖未完成的任务，不能被认领。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;防冲突机制&lt;/strong&gt;：任务认领使用文件锁。如果两个 Teammate 同时抢同一个任务，只有一个能成功。&lt;/p&gt;
&lt;h3 id=&#34;组件四mailbox消息信箱&#34;&gt;组件四：Mailbox（消息信箱）
&lt;/h3&gt;&lt;p&gt;Teammate 之间直接通信的渠道：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;message&lt;/strong&gt;：点对点消息，发给特定 Teammate&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;broadcast&lt;/strong&gt;：广播消息，发给所有 Teammate（慎用，token 消耗随团队规模线性增长）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;消息自动送达，Lead 不需要轮询。Teammate 完成任务或空闲时，也会自动通知 Lead。&lt;/p&gt;
&lt;h2 id=&#34;03-十分钟上手启动你的第一个-agent-team&#34;&gt;03 十分钟上手：启动你的第一个 Agent Team
&lt;/h2&gt;&lt;h3 id=&#34;step-1开启实验特性&#34;&gt;Step 1：开启实验特性
&lt;/h3&gt;&lt;p&gt;Agent Teams 目前是实验功能，默认关闭。在 &lt;code&gt;settings.json&lt;/code&gt; 中添加：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;env&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;或者直接设置环境变量：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;step-2用自然语言描述你的团队&#34;&gt;Step 2：用自然语言描述你的团队
&lt;/h3&gt;&lt;p&gt;不需要写配置文件。直接在 Claude Code 中说：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;创建一个 Agent Team 来审查 PR #142：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 一个 Teammate 专注安全审计
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 一个 Teammate 检查性能影响
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 一个 Teammate 验证测试覆盖率
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;让他们各自审查后汇报发现。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Claude 会自动创建团队、生成 Teammate、分配任务。&lt;/p&gt;
&lt;h3 id=&#34;step-3选择显示模式&#34;&gt;Step 3：选择显示模式
&lt;/h3&gt;&lt;p&gt;两种模式：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;模式&lt;/th&gt;
          &lt;th&gt;操作方式&lt;/th&gt;
          &lt;th&gt;适用场景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;In-process&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;Shift+Up/Down&lt;/code&gt; 切换 Teammate&lt;/td&gt;
          &lt;td&gt;任何终端，无需额外配置&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Split panes&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;每个 Teammate 独立面板&lt;/td&gt;
          &lt;td&gt;需要 tmux 或 iTerm2&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;在 &lt;code&gt;settings.json&lt;/code&gt; 中配置：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;teammateMode&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;in-process&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;或者用命令行参数：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude --teammate-mode in-process
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;step-4与-teammate-直接对话&#34;&gt;Step 4：与 Teammate 直接对话
&lt;/h3&gt;&lt;p&gt;这是 Agent Teams 最灵活的地方——你可以&lt;strong&gt;绕过 Lead，直接跟任何 Teammate 对话&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;在 In-process 模式下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Shift+Up/Down&lt;/code&gt;：选择 Teammate&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Enter&lt;/code&gt;：查看某个 Teammate 的会话&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Escape&lt;/code&gt;：打断当前回合&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Ctrl+T&lt;/code&gt;：切换任务列表视图&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;step-5清理&#34;&gt;Step 5：清理
&lt;/h3&gt;&lt;p&gt;用完后让 Lead 清理：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;清理团队
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;⚠️ &lt;strong&gt;注意&lt;/strong&gt;：先让所有 Teammate 关闭，再让 Lead 清理。不要让 Teammate 执行清理操作。&lt;/p&gt;
&lt;h2 id=&#34;04-深度复盘16-个-agent-如何写出-c-编译器&#34;&gt;04 深度复盘：16 个 Agent 如何写出 C 编译器
&lt;/h2&gt;&lt;p&gt;这是目前 Agent Teams 最震撼的实战案例。让我们拆解 Nicholas Carlini 的每一步操作。&lt;/p&gt;
&lt;h3 id=&#34;环境设计docker--共享-git-仓库&#34;&gt;环境设计：Docker + 共享 Git 仓库
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;┌──────────────────────────────────────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│              Bare Git Repo               │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│           (/upstream)                    │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├──────────────────────────────────────────┤
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│                                          │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│  ┌─────────┐  ┌─────────┐  ┌─────────┐ │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│  │Docker #1│  │Docker #2│  │...      │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│  │/workspace│ │/workspace│ │Docker #16│ │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│  │ clone ←→ │ │ clone ←→ │ │ clone ←→ │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│  │ upstream │ │ upstream │ │ upstream │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│  └─────────┘  └─────────┘  └─────────┘ │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└──────────────────────────────────────────┘
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;每个 Agent 运行在独立 Docker 容器中：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;挂载共享的 bare git 仓库到 &lt;code&gt;/upstream&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;克隆到本地 &lt;code&gt;/workspace&lt;/code&gt; 工作&lt;/li&gt;
&lt;li&gt;完成后推送回 upstream&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;通信机制极其简单&lt;/strong&gt;：唯一的通信渠道就是共享的 git 仓库。没有编排 Agent，没有 Agent 间直接消息传递。&lt;/p&gt;
&lt;h3 id=&#34;任务协调文件锁--自组织&#34;&gt;任务协调：文件锁 + 自组织
&lt;/h3&gt;&lt;p&gt;Agent 通过向 &lt;code&gt;current_tasks/&lt;/code&gt; 目录写入文本文件来&amp;quot;锁定&amp;quot;任务：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;current_tasks/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── parse_if_statement.txt        ← Agent #3 正在处理
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── codegen_function_definition.txt ← Agent #7 正在处理
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── optimize_register_allocation.txt ← Agent #12 正在处理
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果两个 Agent 同时尝试认领同一任务，git 的同步机制会迫使第二个 Agent 选择其他任务。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;没有&amp;quot;指挥官&amp;quot;&lt;/strong&gt;。每个 Agent 自行决定做什么，通常选择&amp;quot;下一个最明显的问题&amp;quot;。&lt;/p&gt;
&lt;h3 id=&#34;六种专业化角色&#34;&gt;六种专业化角色
&lt;/h3&gt;&lt;p&gt;Agent 自发分化出了不同角色：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;角色&lt;/th&gt;
          &lt;th&gt;职责&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;主力 Agent&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;解决编译器核心功能&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;去重 Agent&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;合并重复代码&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;性能 Agent&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;提升编译器自身性能&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;优化 Agent&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;让输出的编译产物更高效&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;代码审查 Agent&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;以 Rust 开发者视角审查和重构&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;文档 Agent&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;维护 README 和文档&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;注意：&lt;strong&gt;这些角色不是预设的&lt;/strong&gt;。它们是 Agent 在工作过程中自发形成的分工。&lt;/p&gt;
&lt;h3 id=&#34;成果数据&#34;&gt;成果数据
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;指标&lt;/th&gt;
          &lt;th&gt;数据&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;代码行数&lt;/td&gt;
          &lt;td&gt;100,000 行 Rust&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Claude Code 会话数&lt;/td&gt;
          &lt;td&gt;~2,000 个&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;时间跨度&lt;/td&gt;
          &lt;td&gt;约两周&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;输入 token&lt;/td&gt;
          &lt;td&gt;20 亿&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;输出 token&lt;/td&gt;
          &lt;td&gt;1.4 亿&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;API 总成本&lt;/td&gt;
          &lt;td&gt;~$20,000&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;并行 Agent 数&lt;/td&gt;
          &lt;td&gt;16 个&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;测试通过率&lt;/td&gt;
          &lt;td&gt;GCC torture suite 99%&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;能编译的项目&lt;/strong&gt;：Linux 6.9 内核（x86/ARM/RISC-V）、QEMU、FFmpeg、SQLite、PostgreSQL、Redis、Doom。&lt;/p&gt;
&lt;h3 id=&#34;五大关键挑战以及解决方案&#34;&gt;五大关键挑战（以及解决方案）
&lt;/h3&gt;&lt;h4 id=&#34;挑战一回归地狱&#34;&gt;挑战一：回归地狱
&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：新功能频繁破坏已有功能。Agent 修了一个 bug，引入了三个新 bug。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决方案&lt;/strong&gt;：构建严格的 CI 流水线，每次提交必须通过全量回归测试。&lt;/p&gt;
&lt;h4 id=&#34;挑战二上下文窗口被垃圾占满&#34;&gt;挑战二：上下文窗口被&amp;quot;垃圾&amp;quot;占满
&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：测试输出可能有几万行，直接塞满 Agent 的上下文窗口。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决方案&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;测试只打印几行摘要，详细信息写入日志文件&lt;/li&gt;
&lt;li&gt;错误行以 &lt;code&gt;ERROR&lt;/code&gt; 开头并在同一行包含原因（方便 grep）&lt;/li&gt;
&lt;li&gt;预计算汇总统计数据&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这是一个&lt;strong&gt;专门为 AI 设计测试输出&lt;/strong&gt;的典型案例。人类可以滚动查看，但 AI 需要&amp;quot;信息密度极高的摘要&amp;quot;。&lt;/p&gt;
&lt;h4 id=&#34;挑战三agent-不懂时间&#34;&gt;挑战三：Agent 不懂&amp;quot;时间&amp;quot;
&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：Claude 无法感知时间流逝。它会花数小时运行完整测试套件，实际上什么实质性工作都没推进。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决方案&lt;/strong&gt;：提供 &lt;code&gt;--fast&lt;/code&gt; 选项运行 1% 或 10% 的随机样本。样本对单个 Agent 确定性（可复现），但跨不同 VM 随机（确保覆盖所有文件）。&lt;/p&gt;
&lt;h4 id=&#34;挑战四linux-内核编译的并行化难题&#34;&gt;挑战四：Linux 内核编译的并行化难题
&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：编译 Linux 内核不像单元测试那样可以独立运行。16 个 Agent 会同时撞上同一个 bug，互相覆盖修复。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决方案&lt;/strong&gt;：用 GCC 作为&amp;quot;已知正确的参考编译器&amp;quot;。随机用 GCC 编译大部分内核文件，仅用 Claude 编译器编译剩余部分。通过对比定位 bug 在哪些文件中。然后用 delta debugging 发现&amp;quot;单独能工作但组合起来失败&amp;quot;的文件对。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;这是整个实验中最精彩的工程决策之一。&lt;/strong&gt; 它把一个不可并行的问题变成了可并行的问题。&lt;/p&gt;
&lt;h4 id=&#34;挑战五agent-冷启动&#34;&gt;挑战五：Agent 冷启动
&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：每个 Agent 在新容器中启动时，没有任何上下文。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决方案&lt;/strong&gt;：Claude 自行维护详尽的 README 和进度文件。遇到困难时还会自行记录失败方法和待办任务。&lt;/p&gt;
&lt;h3 id=&#34;carlini-的核心洞察&#34;&gt;Carlini 的核心洞察
&lt;/h3&gt;
    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;Most of my effort went into designing the environment around Claude — tests, environment, and feedback systems.&amp;rdquo;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;人类的角色不是&amp;quot;写代码&amp;quot;，而是**&amp;ldquo;设计让 AI 高效工作的环境&amp;rdquo;**。&lt;/p&gt;
&lt;p&gt;这呼应了我在之前文章中提到的观点：从&amp;quot;代码书写者&amp;quot;到&amp;quot;智能系统指挥者&amp;quot;的转变。但 Carlini 更进一步——他说的是**&amp;ldquo;环境设计者&amp;rdquo;**。&lt;/p&gt;
&lt;p&gt;你不需要告诉 AI 怎么写编译器。你需要做的是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;设计好测试基础设施&lt;/li&gt;
&lt;li&gt;构建好反馈循环&lt;/li&gt;
&lt;li&gt;设定好质量门禁&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;然后，走开。&lt;/p&gt;
&lt;h2 id=&#34;05-实操场景什么时候该用-agent-teams&#34;&gt;05 实操场景：什么时候该用 Agent Teams
&lt;/h2&gt;&lt;p&gt;Agent Teams 不是万能药。它有明确的&lt;strong&gt;适用场景&lt;/strong&gt;和&lt;strong&gt;不适用场景&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id=&#34;-强适用场景&#34;&gt;✅ 强适用场景
&lt;/h3&gt;&lt;h4 id=&#34;场景一并行代码审查&#34;&gt;场景一：并行代码审查
&lt;/h4&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;创建 Agent Team 审查 PR #142：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 一个 Teammate 专注安全隐患
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 一个 Teammate 检查性能影响
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 一个 Teammate 验证测试覆盖
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;各自审查后汇报发现。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;为什么有效&lt;/strong&gt;：三个独立的审查维度，互不干扰，最后综合。单个审查者容易&amp;quot;隧道视野&amp;quot;——一旦开始看安全问题，就忽略性能问题。并行审查消除了这种偏差。&lt;/p&gt;
&lt;h4 id=&#34;场景二竞争性假说调查&#34;&gt;场景二：竞争性假说调查
&lt;/h4&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;用户反馈应用在发送一条消息后就断开连接。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;创建 5 个 Teammate 调查不同假说。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;让他们互相讨论，像科学辩论一样反驳对方的理论。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;把共识写入调查报告。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;为什么有效&lt;/strong&gt;：单个 Agent 容易&amp;quot;锚定效应&amp;quot;——找到一个看似合理的解释就停止搜索。多个 Agent 互相&amp;quot;攻击&amp;quot;彼此的理论，幸存下来的假说更可能是真正的根因。&lt;/p&gt;
&lt;h4 id=&#34;场景三新模块并行开发&#34;&gt;场景三：新模块并行开发
&lt;/h4&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;创建 4 个 Teammate 并行重构这些模块。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;每个 Teammate 用 Sonnet 模型。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;为什么有效&lt;/strong&gt;：新模块天然独立，每个 Teammate 负责一个，互不冲突。&lt;/p&gt;
&lt;h4 id=&#34;场景四跨层协作&#34;&gt;场景四：跨层协作
&lt;/h4&gt;&lt;p&gt;前端、后端、数据库——每层由不同 Teammate 负责。当接口需要对齐时，通过消息系统沟通。&lt;/p&gt;
&lt;h3 id=&#34;-不适用场景&#34;&gt;❌ 不适用场景
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;场景&lt;/th&gt;
          &lt;th&gt;原因&lt;/th&gt;
          &lt;th&gt;替代方案&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;顺序性任务&lt;/td&gt;
          &lt;td&gt;步骤间有严格依赖，无法并行&lt;/td&gt;
          &lt;td&gt;单会话 + Subagent&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;同文件编辑&lt;/td&gt;
          &lt;td&gt;多 Teammate 编辑同一文件会互相覆盖&lt;/td&gt;
          &lt;td&gt;单会话&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;简单/快速任务&lt;/td&gt;
          &lt;td&gt;协调开销大于收益&lt;/td&gt;
          &lt;td&gt;单会话&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;高依赖链任务&lt;/td&gt;
          &lt;td&gt;大量任务阻塞等待，并行度低&lt;/td&gt;
          &lt;td&gt;单会话按顺序执行&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;任务粒度的金发姑娘原则&#34;&gt;任务粒度的&amp;quot;金发姑娘原则&amp;quot;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;太小&lt;/strong&gt;：协调开销大于并行收益&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;太大&lt;/strong&gt;：Teammate 长时间不汇报，浪费风险增加&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;刚好&lt;/strong&gt;：自包含的交付物（一个函数、一个测试文件、一份审查报告）&lt;/li&gt;
&lt;/ul&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&lt;strong&gt;经验法则&lt;/strong&gt;：每个 Teammate 分配 5-6 个任务，保证每个人都有活干，Lead 也能在某个 Teammate 卡住时重新分配工作。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;h2 id=&#34;06-进阶技巧&#34;&gt;06 进阶技巧
&lt;/h2&gt;&lt;h3 id=&#34;委托模式delegate-mode&#34;&gt;委托模式（Delegate Mode）
&lt;/h3&gt;&lt;p&gt;默认情况下，Lead 有时会忍不住自己动手干活，而不是等 Teammate 完成。&lt;/p&gt;
&lt;p&gt;按 &lt;code&gt;Shift+Tab&lt;/code&gt; 进入委托模式，Lead 被限制为&lt;strong&gt;只能使用协调工具&lt;/strong&gt;：生成 Teammate、发消息、管理任务——不能直接写代码。&lt;/p&gt;
&lt;p&gt;适用场景：你希望 Lead 纯粹做&amp;quot;项目经理&amp;quot;的时候。&lt;/p&gt;
&lt;h3 id=&#34;要求-teammate-先提方案&#34;&gt;要求 Teammate 先提方案
&lt;/h3&gt;&lt;p&gt;对于高风险任务，可以要求 Teammate 在动手前先提交方案：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;创建一个架构师 Teammate 重构认证模块。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;在动手改代码之前，必须先提交方案等我审批。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Teammate 会在 Plan Mode 下工作，提交方案后 Lead 自动审核。被驳回则修改后重新提交。&lt;/p&gt;
&lt;p&gt;你可以给 Lead 设定审批标准，比如&amp;quot;只批准包含测试覆盖的方案&amp;quot;或&amp;quot;拒绝修改数据库 schema 的方案&amp;quot;。&lt;/p&gt;
&lt;h3 id=&#34;用-hooks-强制质量门禁&#34;&gt;用 Hooks 强制质量门禁
&lt;/h3&gt;&lt;p&gt;两个关键 Hook：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;TeammateIdle&lt;/code&gt;&lt;/strong&gt;：Teammate 即将空闲时触发。返回 exit code 2 可以发送反馈让 Teammate 继续工作。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;TaskCompleted&lt;/code&gt;&lt;/strong&gt;：任务标记完成时触发。返回 exit code 2 可以阻止完成并发送反馈。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;用法示例：在 &lt;code&gt;TaskCompleted&lt;/code&gt; hook 中自动运行测试，测试不通过则阻止任务完成。&lt;/p&gt;
&lt;h2 id=&#34;07-成本分析什么时候值得用&#34;&gt;07 成本分析：什么时候值得用
&lt;/h2&gt;&lt;p&gt;先看硬数据。&lt;/p&gt;
&lt;h3 id=&#34;编译器实验的成本&#34;&gt;编译器实验的成本
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;项目&lt;/th&gt;
          &lt;th&gt;成本&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;API 费用&lt;/td&gt;
          &lt;td&gt;~$20,000&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;时间&lt;/td&gt;
          &lt;td&gt;~2 周&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;产出&lt;/td&gt;
          &lt;td&gt;10 万行 Rust，可编译 Linux 内核&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;opus-46-定价&#34;&gt;Opus 4.6 定价
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;场景&lt;/th&gt;
          &lt;th&gt;输入&lt;/th&gt;
          &lt;th&gt;输出&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;标准（≤200K token）&lt;/td&gt;
          &lt;td&gt;$5/M&lt;/td&gt;
          &lt;td&gt;$25/M&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;长上下文（&amp;gt;200K token）&lt;/td&gt;
          &lt;td&gt;$10/M&lt;/td&gt;
          &lt;td&gt;$37.50/M&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;成本决策树&#34;&gt;成本决策树
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;你的任务能拆分为独立子任务吗？
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── 否 → 用单会话 + Subagent
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── 是 → Teammate 之间需要讨论和协调吗？
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ├── 否 → 用单会话 + Subagent（省 token）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    └── 是 → 用 Agent Teams
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        ├── 任务价值 &amp;gt; 预估 token 成本的 3x？
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        │   ├── 是 → 放心用
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        │   └── 否 → 考虑减少 Teammate 数量
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        └── 用 Sonnet 模型降低单 Teammate 成本
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;关键洞察&lt;/strong&gt;：Carlini 花了 $20,000 用 16 个 Agent 写编译器。如果雇人力团队做同样的事情——从零实现一个能编译 Linux 内核的 C 编译器——成本可能是数十万美元，时间可能是数月甚至数年。&lt;/p&gt;
&lt;p&gt;但这是极端案例。对于日常开发，3-5 个 Teammate 的小型 Team 处理代码审查、bug 调查、模块重构，成本通常在几美元到几十美元之间。&lt;/p&gt;
&lt;h2 id=&#34;08-从-skills-到-agent-teams范式演进&#34;&gt;08 从 Skills 到 Agent Teams：范式演进
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-opus-4-6-agent-teams-practice/imgs/paradigm-evolution.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-opus-4-6-agent-teams-practice/imgs/paradigm-evolution_hu_fe92acf48ab41374.png 480w, https://blog.ccino.org/p/claude-opus-4-6-agent-teams-practice/imgs/paradigm-evolution_hu_f80075f69e5bd01b.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;范式演进&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;如果你关注过我之前写的 &lt;a class=&#34;link&#34; href=&#34;https://blog.ccino.org/p/claude-skills-ai-agent-team/&#34; &gt;Claude Skills 实战：打造你的 AI Agent 团队&lt;/a&gt;，你会发现一条清晰的演进路径：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;提示词 → Skills → Subagent → Agent Teams
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;(一次性) → (可复用) → (可委派) → (可协作)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;阶段&lt;/th&gt;
          &lt;th&gt;人类角色&lt;/th&gt;
          &lt;th&gt;AI 能力&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;提示词时代&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;逐句指导&lt;/td&gt;
          &lt;td&gt;回答问题&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Skills 时代&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;调用专家&lt;/td&gt;
          &lt;td&gt;专业化执行&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Subagent 时代&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;分配子任务&lt;/td&gt;
          &lt;td&gt;自主完成子任务&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Agent Teams 时代&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;定义目标和环境&lt;/td&gt;
          &lt;td&gt;自主分工、协调、交付&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;人类的角色&lt;/strong&gt;：从&amp;quot;代码书写者&amp;quot;→&amp;ldquo;指令发出者&amp;rdquo;→&amp;ldquo;任务分配者&amp;rdquo;→&lt;strong&gt;&amp;ldquo;环境设计者&amp;rdquo;&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;Carlini 在编译器实验中的时间分配是最好的注脚：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;❌ 不花时间写代码&lt;/li&gt;
&lt;li&gt;❌ 不花时间指导具体实现&lt;/li&gt;
&lt;li&gt;❌ 不在线监督 Agent 日常工作&lt;/li&gt;
&lt;li&gt;✅ 寻找高质量测试套件&lt;/li&gt;
&lt;li&gt;✅ 编写验证器和构建脚本&lt;/li&gt;
&lt;li&gt;✅ 观察 Agent 犯错模式并设计新测试&lt;/li&gt;
&lt;li&gt;✅ 构建 CI/CD 流水线防止回归&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这就是 2026 年&amp;quot;高级工程师&amp;quot;的工作方式。&lt;/p&gt;
&lt;h2 id=&#34;09-冷水时间已知限制和注意事项&#34;&gt;09 冷水时间：已知限制和注意事项
&lt;/h2&gt;&lt;p&gt;Agent Teams 目前仍是&lt;strong&gt;实验性功能&lt;/strong&gt;，有明确的限制：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;不支持会话恢复&lt;/strong&gt;：&lt;code&gt;/resume&lt;/code&gt; 和 &lt;code&gt;/rewind&lt;/code&gt; 不能恢复已退出的 Teammate。恢复后 Lead 可能尝试联系已不存在的 Teammate。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;任务状态可能滞后&lt;/strong&gt;：Teammate 有时忘记标记任务完成，阻塞依赖任务。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;关闭速度慢&lt;/strong&gt;：Teammate 会先完成当前工具调用再关闭。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;一个 Lead 只能管一个 Team&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不支持嵌套&lt;/strong&gt;：Teammate 不能再创建自己的 Team。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Split Pane 模式&lt;/strong&gt;不支持 VS Code 集成终端、Windows Terminal 和 Ghostty。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;权限在 spawn 时继承&lt;/strong&gt;：所有 Teammate 继承 Lead 的权限模式，不能在 spawn 时单独设置。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;以及 Carlini 的坦率警告：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;The thought of programmers deploying software they&amp;rsquo;ve never personally verified is a real concern.&amp;rdquo;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;16 个 Agent 可以写出能编译 Linux 内核的编译器。但如果没有人验证过那 10 万行代码中的每一个角落，你敢用到生产环境吗？&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Agent Teams 是强大的生产力工具，不是&amp;quot;按下按钮就走人&amp;quot;的魔法。&lt;/strong&gt; 至少在今天，你仍然需要：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;设计高质量的测试基础设施&lt;/li&gt;
&lt;li&gt;建立自动化质量门禁&lt;/li&gt;
&lt;li&gt;定期审查关键输出&lt;/li&gt;
&lt;li&gt;对 Agent 的失败模式保持警觉&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;10-结语&#34;&gt;10 结语
&lt;/h2&gt;&lt;p&gt;Claude Code 目前已占 GitHub 公开提交的 &lt;strong&gt;4%&lt;/strong&gt;。SemiAnalysis 预测到 2026 年底将超过 &lt;strong&gt;20%&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;当 AI 编程从&amp;quot;一个助手帮你补全代码&amp;quot;进化到&amp;quot;一个团队帮你交付项目&amp;quot;，整个软件开发的经济学都在改变。&lt;/p&gt;
&lt;p&gt;$20,000，两周，10 万行代码，能编译 Linux 内核。&lt;/p&gt;
&lt;p&gt;这不是终点。Carlini 自己说了：Opus 4.0 勉强能输出功能性编译器，Opus 4.5 首次通过大型测试套件，Opus 4.6 实现了编译 Linux 内核的突破。&lt;strong&gt;每一代模型都在把&amp;quot;勉强能做到&amp;quot;变成&amp;quot;可靠地做到&amp;quot;。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;下一个问题不再是&amp;quot;AI 能不能写代码&amp;quot;。&lt;/p&gt;
&lt;p&gt;而是——&lt;strong&gt;你准备好设计环境，让 AI 团队替你工作了吗？&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;参考资料&#34;&gt;参考资料
&lt;/h2&gt;&lt;h3 id=&#34;核心文章&#34;&gt;核心文章
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.anthropic.com/engineering/building-c-compiler&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Building a C compiler with a team of parallel Claudes&lt;/a&gt; — Nicholas Carlini, Anthropic&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.anthropic.com/news/claude-opus-4-6&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Introducing Claude Opus 4.6&lt;/a&gt; — Anthropic&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://newsletter.semianalysis.com/p/claude-code-is-the-inflection-point&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Code is the Inflection Point&lt;/a&gt; — SemiAnalysis&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;官方文档&#34;&gt;官方文档
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://code.claude.com/docs/en/agent-teams&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Orchestrate teams of Claude Code sessions&lt;/a&gt; — Claude Code Docs&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;教程与分析&#34;&gt;教程与分析
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://arstechnica.com/ai/2026/02/sixteen-claude-ai-agents-working-together-created-a-new-c-compiler/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Sixteen Claude AI agents working together created a new C compiler&lt;/a&gt; — Ars Technica&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.nxcode.io/resources/news/claude-agent-teams-parallel-ai-development-guide-2026&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Agent Teams Tutorial&lt;/a&gt; — NxCode&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://darasoba.medium.com/how-to-set-up-and-use-claude-code-agent-teams-and-actually-get-great-results-9a34f8648f6d&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How to Set Up Claude Code Agent Teams&lt;/a&gt; — Medium&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.firecrawl.dev/blog/claude-opus-4-6-agent-teams-firecrawl&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Building with Opus 4.6 Agent Teams&lt;/a&gt; — Firecrawl&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>OpenClaw 作者：CLI 才是 AI 连接世界的终极接口</title>
        <link>https://blog.ccino.org/p/cli-ultimate-ai-interface/</link>
        <pubDate>Mon, 09 Feb 2026 13:30:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/cli-ultimate-ai-interface/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/cli-ultimate-ai-interface/imgs/cover.png" alt="Featured image of post OpenClaw 作者：CLI 才是 AI 连接世界的终极接口" /&gt;&lt;h2 id=&#34;00-开篇2-天-10-万-star-的开源奇迹&#34;&gt;00 开篇：2 天 10 万 Star 的开源奇迹
&lt;/h2&gt;&lt;p&gt;先给你看一组数字：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;2 天&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;10 万+ Star&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;700+ 技能插件&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;5 分钟部署&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这是 OpenClaw 在 GitHub 上创造的成绩。&lt;/p&gt;
&lt;p&gt;如果你还不知道 OpenClaw，它是一个&lt;strong&gt;本地化 AI 助手平台&lt;/strong&gt;，前身是火遍全网的 Moltbot/Clawdbot。它可以在你的电脑上运行，支持 Telegram、飞书、WhatsApp 等多个平台，拥有 700+ 技能插件生态。&lt;/p&gt;
&lt;p&gt;但最让人震惊的不是这些数字。&lt;/p&gt;
&lt;p&gt;而是它的作者 Peter Steinberger 提出的一个极其&amp;quot;复古&amp;quot;的观点：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&lt;strong&gt;&amp;ldquo;忘掉 MCP，CLI 才是 AI 连接世界的终极接口。&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;在 2025 年上半年，整个 AI 圈还在疯狂追逐 MCP（Model Context Protocol），试图为智能体定义标准化的 Schema 和 JSON-RPC 服务。&lt;/p&gt;
&lt;p&gt;而 OpenClaw 用一种极其简单的方式给所有人上了一课：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;要让 AI 获得一项新能力？写个 CLI 就行了。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这个观点为什么如此激进？又为什么如此有说服力？&lt;/p&gt;
&lt;p&gt;让我们一探究竟。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;01-一个反直觉的发现&#34;&gt;01 一个&amp;quot;反直觉&amp;quot;的发现
&lt;/h2&gt;&lt;p&gt;Peter Steinberger 在开发 OpenClaw 时，发现了一个有趣的现象：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;智能体拿到一个新工具时，会自发运行 &lt;code&gt;my-tool --help&lt;/code&gt;。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;然后，奇迹发生了——&lt;/p&gt;
&lt;p&gt;仅仅通过阅读这份帮助文档，AI 就在那一秒钟内学会了如何操作这个工具。不需要复杂的配置，不需要手动编写 Schema，甚至连代码都不用看。&lt;/p&gt;
&lt;p&gt;这让他意识到一件事：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CLI 对 AI 来说，比 GUI 对人类更友好。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;为什么？&lt;/p&gt;
&lt;p&gt;因为 CLI 的 &lt;code&gt;--help&lt;/code&gt; 输出，本质上就是一份&lt;strong&gt;零噪音、高密度、且包含示例的 Prompt&lt;/strong&gt;。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;每个参数的用途清晰明确&lt;/li&gt;
&lt;li&gt;有完整的使用示例（Few-shot learning）&lt;/li&gt;
&lt;li&gt;结构化的选项说明&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这简直就是为 LLM 量身定制的&amp;quot;使用说明书&amp;quot;。&lt;/p&gt;
&lt;p&gt;而在 GUI 进化了 40 年后，CLI 是否正在因为 AI 而迎来一场&amp;quot;文艺复兴&amp;quot;？&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/cli-ultimate-ai-interface/imgs/figure1-cli-vs-gui.png&#34;
	width=&#34;1200&#34;
	height=&#34;896&#34;
	srcset=&#34;https://blog.ccino.org/p/cli-ultimate-ai-interface/imgs/figure1-cli-vs-gui_hu_124ba1c465757747.png 480w, https://blog.ccino.org/p/cli-ultimate-ai-interface/imgs/figure1-cli-vs-gui_hu_9698397129b1d107.png 1024w&#34;
	loading=&#34;lazy&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;133&#34;
		data-flex-basis=&#34;321px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;图 1：CLI vs GUI 对比&lt;/strong&gt; - 左侧是复杂的 GUI 界面，右侧是清晰的 CLI 终端，AI 能直接理解 CLI 的帮助文档。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;02-为什么-cli-比-gui-更适合-ai&#34;&gt;02 为什么 CLI 比 GUI 更适合 AI？
&lt;/h2&gt;&lt;h3 id=&#34;自描述性--help-就是完美的-prompt&#34;&gt;自描述性：&lt;code&gt;--help&lt;/code&gt; 就是完美的 Prompt
&lt;/h3&gt;&lt;p&gt;人类觉得 CLI 难用，因为我们记不住参数。&lt;/p&gt;
&lt;p&gt;但对 AI 来说，这不是问题。&lt;/p&gt;
&lt;p&gt;当你给智能体一个新工具，它会：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;运行 &lt;code&gt;my-tool --help&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;阅读输出的文档&lt;/li&gt;
&lt;li&gt;理解每个参数的作用&lt;/li&gt;
&lt;li&gt;立即学会使用&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;零配置，零预训练，零人工对齐。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在 AI 时代，写好 &lt;code&gt;--help&lt;/code&gt; 文档，比写好 UI 界面更重要。&lt;/p&gt;
&lt;h3 id=&#34;组合性unix-哲学与思维链的天然契合&#34;&gt;组合性：Unix 哲学与思维链的天然契合
&lt;/h3&gt;&lt;p&gt;Unix 哲学的核心是：&lt;strong&gt;只做一件事，并把它做好。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;通过管道（Pipe）进行组合，这正好与智能体的**思维链（Chain of Thought）**逻辑高度契合。&lt;/p&gt;
&lt;p&gt;来看一个真实场景：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&lt;strong&gt;用户指令：&lt;/strong&gt; &amp;ldquo;分析最近一周的错误日志并推送到飞书。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;智能体决策：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;log-fetch --days &lt;span class=&#34;m&#34;&gt;7&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep &lt;span class=&#34;s2&#34;&gt;&amp;#34;ERROR&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; feishu-send --channel &lt;span class=&#34;c1&#34;&gt;#ops&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
    &lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/cli-ultimate-ai-interface/imgs/figure2-unix-pipeline.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/cli-ultimate-ai-interface/imgs/figure2-unix-pipeline_hu_daed0fa269043f58.png 480w, https://blog.ccino.org/p/cli-ultimate-ai-interface/imgs/figure2-unix-pipeline_hu_a94b25fa3bc83c1d.png 1024w&#34;
	loading=&#34;lazy&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;图 2：Unix 管道组合&lt;/strong&gt; - 通过管道连接三个命令，实现复杂的数据处理流程。&lt;/p&gt;
&lt;p&gt;智能体不需要你编写复杂的集成逻辑。&lt;/p&gt;
&lt;p&gt;它只需要像玩积木一样，通过编排原子化的 CLI 工具，就能实现复杂的自动化目标。&lt;/p&gt;
&lt;p&gt;这就是&lt;strong&gt;涌现能力&lt;/strong&gt;的来源。&lt;/p&gt;
&lt;h3 id=&#34;低摩擦写个-cli-就能扩展能力&#34;&gt;低摩擦：写个 CLI 就能扩展能力
&lt;/h3&gt;&lt;p&gt;在 MCP 模式下，要给 AI 增加一个新能力，你需要：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;定义 JSON Schema&lt;/li&gt;
&lt;li&gt;实现 JSON-RPC 服务&lt;/li&gt;
&lt;li&gt;编写 Prompt 模板&lt;/li&gt;
&lt;li&gt;对接协议版本&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;而在 OpenClaw 的 CLI 模式下：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;写一个命令行工具就行了。&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想控制智能家居？写个 CLI。&lt;/li&gt;
&lt;li&gt;想管理 WhatsApp 消息？写个 CLI。&lt;/li&gt;
&lt;li&gt;想操作云服务器？写个 CLI。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;奥卡姆剃刀原则的胜利：如无必要，勿增实体。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;03-cli-vs-mcp不是替代而是分工&#34;&gt;03 CLI vs MCP：不是替代，而是分工
&lt;/h2&gt;&lt;p&gt;你可能会问：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;既然 CLI 这么强大，那 MCP 还有存在的价值吗？&amp;rdquo;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;答案是：&lt;strong&gt;当然有。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;它们不是替代关系，而是&lt;strong&gt;分工关系&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id=&#34;cli-的优势场景个人hack-模式&#34;&gt;CLI 的优势场景（个人/Hack 模式）
&lt;/h3&gt;&lt;p&gt;✅ &lt;strong&gt;快速打通物理世界&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;比如你想让 AI 控制一个没有 API 的智能台灯或老旧软件。&lt;/p&gt;
&lt;p&gt;✅ &lt;strong&gt;本地极速自动化&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;只有你一个人用，追求极致的开发效率，不在乎严格的 Schema。&lt;/p&gt;
&lt;p&gt;✅ &lt;strong&gt;原则：&lt;/strong&gt; &amp;ldquo;写个脚本就能搞定的事，别去写 Server。&amp;rdquo;&lt;/p&gt;
&lt;h3 id=&#34;mcp-的价值场景企业生产模式&#34;&gt;MCP 的价值场景（企业/生产模式）
&lt;/h3&gt;&lt;p&gt;✅ &lt;strong&gt;能力标准化&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;你的工具需要提供给整个团队、在不同的编辑器或平台间共享。&lt;/p&gt;
&lt;p&gt;✅ &lt;strong&gt;安全治理&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;必须严格限制 AI 的动作边界，需要通过中间件进行审计和拦截。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CLI 的风险：赋予 AI Shell 权限意味着你把&amp;quot;核武器&amp;quot;交给了它&lt;/li&gt;
&lt;li&gt;MCP 的护城河：代理架构，精细权限控制&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;✅ &lt;strong&gt;复杂资源抽象&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;MCP 引入了&amp;quot;资源（Resources）&amp;ldquo;概念：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不仅能执行动作&lt;/li&gt;
&lt;li&gt;还能将数据库表、日志流、设备状态抽象为 URI&lt;/li&gt;
&lt;li&gt;甚至提供&amp;quot;动态提示词模板&amp;rdquo;，告诉 AI &amp;ldquo;针对这组数据，你应该关注哪些风险点&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;核心差异总结&#34;&gt;核心差异总结
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;维度&lt;/th&gt;
          &lt;th&gt;CLI&lt;/th&gt;
          &lt;th&gt;MCP&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;定位&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;工具（Tools）&lt;/td&gt;
          &lt;td&gt;资源（Resources）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;本质&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;瞬时、原子化的动作&lt;/td&gt;
          &lt;td&gt;持续、抽象化的能力&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;优势&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;敏捷、本地、快速迭代&lt;/td&gt;
          &lt;td&gt;标准化、可治理、企业级&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;适用&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;个人开发、快速原型&lt;/td&gt;
          &lt;td&gt;团队协作、生产环境&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&#34;04-ai-原生-cli-设计指南&#34;&gt;04 AI 原生 CLI 设计指南
&lt;/h2&gt;&lt;p&gt;既然 CLI 这么重要，作为开发者，我们该如何为 AI 构建命令行工具？&lt;/p&gt;
&lt;p&gt;答案是：&lt;strong&gt;AI-Native Design（AI 原生设计）。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;1-help-文档即-prompt&#34;&gt;1. Help 文档即 Prompt
&lt;/h3&gt;&lt;p&gt;以前写 Help 是给人看的，现在是给 AI 看的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;✅ 多写 Examples&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 好的 Help 文档&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;USAGE:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  my-tool --source &amp;lt;file&amp;gt; --output &amp;lt;dir&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;EXAMPLES:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;# 处理单个文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  my-tool --source data.csv --output ./results
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;# 批量处理（使用通配符）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  my-tool --source &lt;span class=&#34;s2&#34;&gt;&amp;#34;data/*.csv&amp;#34;&lt;/span&gt; --output ./results
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;# 跳过验证（谨慎使用）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  my-tool --source data.csv --output ./results --force
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;AI 最擅长模仿。多给几个 Example，AI 出错率会直线下降。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;✅ 清晰的描述&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;明确每个参数的意图，特别是那些有副作用的操作（如 &lt;code&gt;--force&lt;/code&gt;、&lt;code&gt;--dry-run&lt;/code&gt;）。&lt;/p&gt;
&lt;h3 id=&#34;2-结构化输出&#34;&gt;2. 结构化输出
&lt;/h3&gt;&lt;p&gt;除了给人看的文本输出，务必支持 &lt;code&gt;--json&lt;/code&gt; 参数。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# ❌ 让 AI 费劲解析 ASCII 表格&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ aws ec2 describe-instances
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;INSTANCE        STATE    TYPE
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;i-12345         running  t2.micro
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;i-67890         stopped  t2.small
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# ✅ 直接吐出 JSON，方便 AI 解析&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ aws ec2 describe-instances --output json
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s2&#34;&gt;&amp;#34;Instances&amp;#34;&lt;/span&gt;: &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;s2&#34;&gt;&amp;#34;InstanceId&amp;#34;&lt;/span&gt;: &lt;span class=&#34;s2&#34;&gt;&amp;#34;i-12345&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;s2&#34;&gt;&amp;#34;State&amp;#34;&lt;/span&gt;: &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Name&amp;#34;&lt;/span&gt;: &lt;span class=&#34;s2&#34;&gt;&amp;#34;running&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;s2&#34;&gt;&amp;#34;InstanceType&amp;#34;&lt;/span&gt;: &lt;span class=&#34;s2&#34;&gt;&amp;#34;t2.micro&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;让工具直接输出 JSON，方便 Agent 进行后续的解析和逻辑判断。&lt;/p&gt;
&lt;h3 id=&#34;3-避免交互式输入&#34;&gt;3. 避免交互式输入
&lt;/h3&gt;&lt;p&gt;尽量支持非交互模式（Non-interactive）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;❌ 不好：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ my-tool --delete-all
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Are you sure? &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;y/n&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;:  &lt;span class=&#34;c1&#34;&gt;# AI 会卡在这里&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;✅ 好：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ my-tool --delete-all --yes  &lt;span class=&#34;c1&#34;&gt;# AI 可以一气呵成&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;不要让 CLI 弹出确认提示并傻等。提供 &lt;code&gt;-y&lt;/code&gt; 或 &lt;code&gt;--yes&lt;/code&gt; 参数，让 Agent 能流畅执行。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;05-终极形态cli-是肌肉mcp-是神经&#34;&gt;05 终极形态：CLI 是肌肉，MCP 是神经
&lt;/h2&gt;&lt;p&gt;OpenClaw 的成功，是**&amp;ldquo;简单优先&amp;rdquo;**的胜利。&lt;/p&gt;
&lt;p&gt;它提醒我们：不要过度工程化。如果一个简单的 CLI 就能连接世界，就不要去折腾复杂的协议。&lt;/p&gt;
&lt;p&gt;但 MCP 的价值，在于它为智能体建立了一套可治理的&amp;quot;契约&amp;quot;。&lt;/p&gt;
&lt;p&gt;未来的终极形态可能是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;CLI 作为智能体的&amp;quot;肌肉&amp;quot;&lt;/strong&gt;
负责执行敏捷的本地动作&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;MCP 作为智能体的&amp;quot;神经系统&amp;quot;&lt;/strong&gt;
负责连接并治理复杂的分布式资源&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;实战决策树&#34;&gt;实战决策树
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;你想给 AI 增加新能力
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ├─ 只是你自己用？
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │   └─ 写个 CLI（5 分钟搞定）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ├─ 需要团队共享？
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │   └─ 封装成 MCP Server
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    └─ 涉及敏感操作？
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        └─ 用 MCP 提供安全沙箱
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;06-结语简单才是终极的复杂&#34;&gt;06 结语：简单，才是终极的复杂
&lt;/h2&gt;&lt;p&gt;2025 年上半年，整个行业都在追逐 MCP，试图为智能体定义标准化的协议。&lt;/p&gt;
&lt;p&gt;而 OpenClaw 用一种极其&amp;quot;复古&amp;quot;的方式给所有人上了一课：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;有时候，最简单的方案，就是最优雅的方案。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;CLI 之所以强大，不是因为它是新技术，而是因为它：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;自描述&lt;/strong&gt;：&lt;code&gt;--help&lt;/code&gt; 就是完美的文档&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可组合&lt;/strong&gt;：Unix 管道天然契合思维链&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;低摩擦&lt;/strong&gt;：写个脚本就能扩展能力&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;在 GUI 进化了 40 年后，CLI 是否正在因为 AI 而迎来一场&amp;quot;文艺复兴&amp;quot;？&lt;/p&gt;
&lt;p&gt;答案或许已经不重要了。&lt;/p&gt;
&lt;p&gt;重要的是：&lt;strong&gt;下次你想给 AI 增加一项新能力时，先尝试写一个支持 &lt;code&gt;--json&lt;/code&gt; 的 CLI。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果它开始变得复杂、需要被多人复用，再考虑将其封装为标准的 MCP Server。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;工具是肌肉，协议是神经。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;简单，才是终极的复杂。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;参考资料&#34;&gt;参考资料
&lt;/h2&gt;&lt;h3 id=&#34;核心文章&#34;&gt;核心文章
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://tonybai.com/2026/02/04/openclaw-author-cli-ultimate-agent-interface-vs-mcp/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;忘掉MCP？OpenClaw作者说：CLI才是AI连接世界的终极接口 - Tony Bai&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.frognew.com/2026/02/openclaw-deployment-guide.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenClaw 部署指南：打造私人AI助手 - 靛青K的博客&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.frognew.com/2026/02/openclaw-architecture-insights.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenClaw 架构设计学习 - 靛青K的博客&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;教程指南&#34;&gt;教程指南
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.freecodecamp.org/news/openclaw-full-tutorial-for-beginners/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenClaw Full Tutorial for Beginners - freeCodeCamp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://dev.to/mechcloud_academy/unleashing-openclaw-the-ultimate-guide-to-local-ai-agents-for-developers-in-2026-3k0h&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Unleashing OpenClaw: The Ultimate Guide for Developers in 2026 - dev.to&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.codecademy.com/article/open-claw-tutorial-installation-to-first-chat-setup&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenClaw Tutorial: Installation to First Chat Setup - Codecademy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://o-mega.ai/articles/openclaw-creating-the-ai-agent-workforce-ultimate-guide-2026&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenClaw: Ultimate Guide to AI Agent Workforce 2026 - O-mega.ai&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.51cto.com/article/835953.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;从零开始打造你的专属AI助手 - 51CTO&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;部署实战&#34;&gt;部署实战
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.binance.com/zh-CN/square/post/36008200678113&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenClaw 保姆级部署安装教程 - 币安广场&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://zhuanlan.zhihu.com/p/2001663228137194293&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenClaw部署教程：3种快速方法（傻瓜式）- 知乎&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://forum.openeuler.org/t/topic/18996&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;openEuler 24.03 + OpenClaw 部署实战指南 - openEuler论坛&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://help.aliyun.com/zh/simple-application-server/use-cases/quickly-deploy-and-use-openclaw&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;部署OpenClaw（原Moltbot、Clawdbot）镜像 - 阿里云文档&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;视频教程&#34;&gt;视频教程
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=fcZMmP5dsl4&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Full OpenClaw Setup Tutorial: Step-by-Step Walkthrough - YouTube&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=Zo7Putdga_4&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How to Use &amp;amp; Set up OpenClaw (ClawdBot) - YouTube&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=-dThk2fNObk&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenClaw Course 2026 Beginner to Advanced - YouTube&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;社区讨论&#34;&gt;社区讨论
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/ThinkingDeeplyAI/comments/1qsoq4h/the_ultimate_guide_to_openclaw_formerly_clawdbot/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;The Ultimate Guide to OpenClaw (Formerly Clawdbot -&amp;gt; Moltbot) - Reddit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://aakashgupta.substack.com/p/openclaw-guide&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Openclaw fka Moltbot fka ClawdBot - Your Complete Guide - Substack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://creatoreconomy.so/p/full-tutorial-set-up-your-247-ai-employee-clawd-molt&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Full Tutorial: Set Up Your 24/7 AI Employee in 20 Minutes - Creator Economy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;github-资源&#34;&gt;GitHub 资源
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/VoltAgent/openclaw&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenClaw GitHub 仓库&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/VoltAgent/awesome-openclaw-skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Awesome OpenClaw Skills - 700+ 技能合集&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;作者注：&lt;/strong&gt; 本文基于 OpenClaw 作者 Peter Steinberger 的技术观点整理，结合 AI Agent 开发实践撰写。如果你对 OpenClaw 感兴趣，可以访问其 GitHub 仓库了解更多。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>OpenClaw vs Claude Code：不是竞品是战友</title>
        <link>https://blog.ccino.org/p/openclaw-claude-code-complementary/</link>
        <pubDate>Sat, 07 Feb 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/openclaw-claude-code-complementary/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/openclaw-claude-code-complementary/imgs/cover.png" alt="Featured image of post OpenClaw vs Claude Code：不是竞品是战友" /&gt;
    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;锤子和螺丝刀哪个更好？&amp;ldquo;答案取决于你要做什么——钉钉子用锤子，拧螺丝用螺丝钉。更重要的是，如果你同时拥有锤子和螺丝刀，你会发现很多工作可以完成得更快。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;2026年初，开发者社区掀起了一场&amp;quot;工具选型焦虑&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;GitHub星标突破10万的OpenClaw刚开源，就有人问：&amp;ldquo;OpenClaw和Claude Code哪个更好？&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Reddit上每天都有类似的帖子：&amp;ldquo;我该选OpenClaw还是Claude Code？&amp;rdquo;&lt;/p&gt;
&lt;p&gt;但这个问题本身就有问题。OpenClaw和Claude Code的关系不是竞品，而是&lt;strong&gt;互补的战友&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/openclaw-claude-code-complementary/imgs/01-complementary-overview.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/openclaw-claude-code-complementary/imgs/01-complementary-overview_hu_1a39f785448d69e8.png 480w, https://blog.ccino.org/p/openclaw-claude-code-complementary/imgs/01-complementary-overview_hu_3a41df4a2dfd132d.png 1024w&#34;
	loading=&#34;lazy&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;openclaw-vs-claude-code本质差异&#34;&gt;OpenClaw vs Claude Code：本质差异
&lt;/h2&gt;&lt;p&gt;要理解它们为什么互补，首先要搞清楚它们分别是什么。&lt;/p&gt;
&lt;h3 id=&#34;openclawai-agent框架&#34;&gt;OpenClaw：AI Agent框架
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;定位&lt;/strong&gt;：开源AI Agent开发框架&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;核心特性&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;多Agent架构&lt;/strong&gt;：支持创建和管理多个专用AI Agent&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Skills &amp;amp; Tools是&amp;quot;一等公民&amp;rdquo;&lt;/strong&gt;：架构设计的核心，扩展性强&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gateway多通道集成&lt;/strong&gt;：可接入多种LLM（Claude、GPT、本地模型等）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Memory持久化&lt;/strong&gt;：Agent之间可以共享记忆&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Browser/文件系统/Shell自动化&lt;/strong&gt;：强大的工具集成能力&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;哲学&lt;/strong&gt;：从&lt;strong&gt;架构&lt;/strong&gt;出发，让你&lt;strong&gt;搭建AI Agent团队&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;适合场景&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需要多个AI Agent协作的复杂任务&lt;/li&gt;
&lt;li&gt;需要自定义Agent行为的企业项目&lt;/li&gt;
&lt;li&gt;需要本地部署的数据敏感场景&lt;/li&gt;
&lt;li&gt;需要深度定制的自动化流程&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;claude-codeai编程助手&#34;&gt;Claude Code：AI编程助手
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;定位&lt;/strong&gt;：对话式AI编程助手（CLI优先）&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;核心特性&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;对话式交互&lt;/strong&gt;：自然语言沟通，理解上下文能力强&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码库理解&lt;/strong&gt;：快速理解整个项目的代码结构&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;快速迭代&lt;/strong&gt;：边写边改，实时反馈&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;技能系统&lt;/strong&gt;：内置多种编程相关技能&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;跨文件操作&lt;/strong&gt;：轻松处理多文件重构&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;哲学&lt;/strong&gt;：从&lt;strong&gt;对话&lt;/strong&gt;出发，让AI&lt;strong&gt;理解并执行你的意图&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;适合场景&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;日常编程、调试、重构&lt;/li&gt;
&lt;li&gt;快速原型开发&lt;/li&gt;
&lt;li&gt;代码审查和优化&lt;/li&gt;
&lt;li&gt;学习新技术栈&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/openclaw-claude-code-complementary/imgs/02-tool-comparison.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/openclaw-claude-code-complementary/imgs/02-tool-comparison_hu_e6c8d4091c366768.png 480w, https://blog.ccino.org/p/openclaw-claude-code-complementary/imgs/02-tool-comparison_hu_794083d4bceb7426.png 1024w&#34;
	loading=&#34;lazy&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;一张表看懂差异&#34;&gt;一张表看懂差异
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;维度&lt;/th&gt;
          &lt;th&gt;OpenClaw&lt;/th&gt;
          &lt;th&gt;Claude Code&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;定位&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;AI Agent框架&lt;/td&gt;
          &lt;td&gt;AI编程助手&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;核心优势&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;多Agent协作、架构扩展&lt;/td&gt;
          &lt;td&gt;代码理解、对话体验&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;学习曲线&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;陡峭（需理解框架）&lt;/td&gt;
          &lt;td&gt;平缓（自然语言交互）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;部署方式&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;本地/自托管&lt;/td&gt;
          &lt;td&gt;云端服务&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;适用任务&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;复杂自动化、长期运行&lt;/td&gt;
          &lt;td&gt;日常编程、快速迭代&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;定制化&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;极高（框架级）&lt;/td&gt;
          &lt;td&gt;中等（技能级）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;成本&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;免费（开源）&lt;/td&gt;
          &lt;td&gt;订阅制&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&#34;为什么说它们互补&#34;&gt;为什么说它们互补？
&lt;/h2&gt;&lt;p&gt;让我们用几个维度来看：&lt;/p&gt;
&lt;h3 id=&#34;维度1任务复杂度&#34;&gt;维度1：任务复杂度
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;简单任务&lt;/strong&gt;：Claude Code足够，对话式交互最快&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;复杂任务&lt;/strong&gt;：OpenClaw多Agent协作更合适&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;组合优势&lt;/strong&gt;：Claude Code分析代码 → OpenClaw执行自动化流程&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;维度2时间尺度&#34;&gt;维度2：时间尺度
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;短期需求&lt;/strong&gt;：Claude Code快速响应&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;长期运行&lt;/strong&gt;：OpenClaw Agent持续工作&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;组合优势&lt;/strong&gt;：Claude Code设计原型 → OpenClaw Agent持续维护&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;维度3团队协作&#34;&gt;维度3：团队协作
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;个人开发&lt;/strong&gt;：Claude Code像得力助手&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;团队项目&lt;/strong&gt;：OpenClaw可以统一管理多个Agent&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;组合优势&lt;/strong&gt;：团队成员用Claude Code开发 → OpenClaw统一管理测试/部署Agent&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;3个实战组合案例&#34;&gt;3个实战组合案例
&lt;/h2&gt;&lt;h3 id=&#34;案例1openclaw调度--claude-code执行&#34;&gt;案例1：OpenClaw调度 + Claude Code执行
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;场景&lt;/strong&gt;：你正在开发一个新功能，需要自动化测试+代码优化。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/openclaw-claude-code-complementary/imgs/03-workflow-combination.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/openclaw-claude-code-complementary/imgs/03-workflow-combination_hu_1fbece83d086f9d2.png 480w, https://blog.ccino.org/p/openclaw-claude-code-complementary/imgs/03-workflow-combination_hu_1ae96b0f6fafbcda.png 1024w&#34;
	loading=&#34;lazy&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;实际操作&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;OpenClaw Agent（调度员）&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;监听Git提交&lt;/li&gt;
&lt;li&gt;自动触发测试Agent&lt;/li&gt;
&lt;li&gt;测试失败则报告，通过则进入下一步&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Claude Code（执行者）&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;接收通过测试的代码&lt;/li&gt;
&lt;li&gt;进行代码审查&lt;/li&gt;
&lt;li&gt;提供优化建议&lt;/li&gt;
&lt;li&gt;帮助应用修改&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;效果&lt;/strong&gt;：自动化流程 + 智能代码优化 = 质量与效率兼得&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;案例2claude-code分析--openclaw自动化&#34;&gt;案例2：Claude Code分析 + OpenClaw自动化
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;场景&lt;/strong&gt;：你的项目有100个文件需要重构。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;实际操作&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Claude Code（分析师）&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;扫描整个代码库&lt;/li&gt;
&lt;li&gt;识别需要重构的模式&lt;/li&gt;
&lt;li&gt;生成重构计划&lt;/li&gt;
&lt;li&gt;确定重构优先级&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;OpenClaw Agent（执行者）&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;接收重构计划&lt;/li&gt;
&lt;li&gt;创建多个工作Agent&lt;/li&gt;
&lt;li&gt;并行处理不同文件&lt;/li&gt;
&lt;li&gt;自动提交变更&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Claude Code（验证者）&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;验证重构结果&lt;/li&gt;
&lt;li&gt;确保没有破坏功能&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;效果&lt;/strong&gt;：智能分析 + 并行执行 = 大规模重构变得简单&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;案例3双agent协作模式&#34;&gt;案例3：双Agent协作模式
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;场景&lt;/strong&gt;：你在开发一个Web应用，需要同时处理前端和后端。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/openclaw-claude-code-complementary/imgs/04-dual-agent-architecture.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/openclaw-claude-code-complementary/imgs/04-dual-agent-architecture_hu_aaba2411b17cc96.png 480w, https://blog.ccino.org/p/openclaw-claude-code-complementary/imgs/04-dual-agent-architecture_hu_b9e3b9a1651e4938.png 1024w&#34;
	loading=&#34;lazy&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;实际操作&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;OpenClaw主控Agent&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;协调前端、后端、测试三个Agent&lt;/li&gt;
&lt;li&gt;管理任务队列&lt;/li&gt;
&lt;li&gt;处理Agent间通信&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;OpenClaw前端Agent&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;处理UI组件开发&lt;/li&gt;
&lt;li&gt;管理状态逻辑&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;OpenClaw后端Agent&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;处理API开发&lt;/li&gt;
&lt;li&gt;数据库操作&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Claude Code（超级顾问）&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;与主控Agent对话，了解整体进度&lt;/li&gt;
&lt;li&gt;随时代入任何Agent进行代码优化&lt;/li&gt;
&lt;li&gt;提供架构建议&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;效果&lt;/strong&gt;：多Agent专业分工 + Claude Code灵活支援 = 小团队也能开发大项目&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;选择建议什么时候用哪个&#34;&gt;选择建议：什么时候用哪个？
&lt;/h2&gt;&lt;h3 id=&#34;只用openclaw的场景&#34;&gt;只用OpenClaw的场景
&lt;/h3&gt;&lt;p&gt;✅ 你需要搭建长期运行的自动化系统
✅ 你需要多个AI Agent协同工作
✅ 你需要本地部署（数据安全）
✅ 你有深度定制需求&lt;/p&gt;
&lt;h3 id=&#34;只用claude-code的场景&#34;&gt;只用Claude Code的场景
&lt;/h3&gt;&lt;p&gt;✅ 日常编程和调试
✅ 快速原型开发
✅ 学习新技术
✅ 代码审查和优化&lt;/p&gt;
&lt;h3 id=&#34;组合使用的场景最佳实践&#34;&gt;组合使用的场景（最佳实践）
&lt;/h3&gt;&lt;p&gt;🚀 &lt;strong&gt;复杂项目开发&lt;/strong&gt;：OpenClaw管理流程，Claude Code处理代码
🚀 &lt;strong&gt;CI/CD自动化&lt;/strong&gt;：OpenClaw调度Agent，Claude Code审查代码
🚀 &lt;strong&gt;多文件重构&lt;/strong&gt;：Claude Code分析，OpenClaw并行执行
🚀 &lt;strong&gt;测试与优化&lt;/strong&gt;：OpenClaw自动测试，Claude Code智能优化&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;如何开始组合使用&#34;&gt;如何开始组合使用？
&lt;/h2&gt;&lt;h3 id=&#34;step-1从简单开始&#34;&gt;Step 1：从简单开始
&lt;/h3&gt;&lt;p&gt;建议从Claude Code开始，因为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;学习曲线平缓&lt;/li&gt;
&lt;li&gt;立即能提升效率&lt;/li&gt;
&lt;li&gt;适合日常开发&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;step-2识别自动化机会&#34;&gt;Step 2：识别自动化机会
&lt;/h3&gt;&lt;p&gt;在使用Claude Code的过程中，问自己：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;哪些任务是重复的？&lt;/li&gt;
&lt;li&gt;哪些流程可以自动化？&lt;/li&gt;
&lt;li&gt;哪些任务需要长期运行？&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;step-3引入openclaw&#34;&gt;Step 3：引入OpenClaw
&lt;/h3&gt;&lt;p&gt;针对自动化需求，用OpenClaw搭建Agent：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;从单一Agent开始&lt;/li&gt;
&lt;li&gt;逐步增加复杂度&lt;/li&gt;
&lt;li&gt;保持与Claude Code的协作&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;step-4优化协作模式&#34;&gt;Step 4：优化协作模式
&lt;/h3&gt;&lt;p&gt;不断调整工作流，找到最佳组合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;哪些任务交给OpenClaw？&lt;/li&gt;
&lt;li&gt;哪些任务交给Claude Code？&lt;/li&gt;
&lt;li&gt;两者如何衔接？&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;结论工具是战友不是敌人&#34;&gt;结论：工具是战友，不是敌人
&lt;/h2&gt;&lt;p&gt;2026年的AI工具生态正在变得丰富多样。&lt;/p&gt;
&lt;p&gt;OpenClaw和Claude Code代表了两种不同的思路：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OpenClaw：&lt;strong&gt;架构优先&lt;/strong&gt;，适合构建复杂系统&lt;/li&gt;
&lt;li&gt;Claude Code：&lt;strong&gt;体验优先&lt;/strong&gt;，适合日常开发&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但最强大的工作流，不是&amp;quot;二选一&amp;quot;，而是&amp;quot;两者都要&amp;quot;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;OpenClaw是你的AI团队经理&lt;/strong&gt;，负责调度和协调。
&lt;strong&gt;Claude Code是你的AI编程搭档&lt;/strong&gt;，负责理解和执行。&lt;/p&gt;
&lt;p&gt;它们不是竞争关系，而是&lt;strong&gt;完美的战友组合&lt;/strong&gt;。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;你的AI工具组合是什么？欢迎在评论区分享你的工作流！&lt;/strong&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>OpenClaw悖论：为什么&#34;人人可用&#34;的AI助手，最终只属于极客？</title>
        <link>https://blog.ccino.org/p/openclaw-paradox-why-ai-assistant-only-for-geeks/</link>
        <pubDate>Fri, 06 Feb 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/openclaw-paradox-why-ai-assistant-only-for-geeks/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/openclaw-paradox-why-ai-assistant-only-for-geeks/imgs/cover.png" alt="Featured image of post OpenClaw悖论：为什么&#34;人人可用&#34;的AI助手，最终只属于极客？" /&gt;&lt;h1 id=&#34;openclaw悖论为什么人人可用的ai助手最终只属于极客&#34;&gt;OpenClaw悖论：为什么&amp;quot;人人可用&amp;quot;的AI助手，最终只属于极客？
&lt;/h1&gt;
    &lt;blockquote&gt;
        &lt;p&gt;从6万stars到真实留存，看开源项目的&amp;quot;免费陷阱&amp;quot;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;01-爆火背后的冷思考&#34;&gt;01 爆火背后的冷思考
&lt;/h2&gt;&lt;p&gt;2026年1月，一个名为OpenClaw的开源AI助手横扫GitHub。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;72小时内，6万stars。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;社交媒体上，开发者们疯狂转发：&amp;ldquo;这就是现实版的JARVIS！&amp;quot;、&amp;ldquo;AI终于能真正干活了！&amp;quot;、&amp;ldquo;开源界的下一个里程碑！&amp;rdquo;&lt;/p&gt;
&lt;p&gt;媒体的报道更是铺天盖地。DigitalOcean发文称其为&amp;quot;2026年最值得期待的开源项目&amp;rdquo;，知名技术博主Peter Yang发布了20分钟部署教程，Kristian Freeman详细拆解了自己的使用体验。&lt;/p&gt;
&lt;p&gt;hype指数爆表。&lt;/p&gt;
&lt;p&gt;但一周后，Twitter上做了一个简单的调研：&lt;strong&gt;那些为OpenClaw点star的人，有多少还在真正使用？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;结果很残酷。&lt;/p&gt;
&lt;p&gt;在100+个回复中：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;约70%的人&amp;quot;部署了，但很少用&amp;rdquo;&lt;/li&gt;
&lt;li&gt;约20%的人&amp;quot;部署失败，放弃了&amp;quot;&lt;/li&gt;
&lt;li&gt;只有不到10%的人&amp;quot;每天都在用&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这不是一个孤立现象。开源AI工具的历史上，类似的剧本不断重演：爆火 → 跟风安装 → 沉默弃坑。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;为什么一个&amp;quot;人人可用&amp;quot;的AI助手，最终只属于极少数人？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这个问题，OpenClaw自己可能都没想清楚。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/openclaw-paradox-why-ai-assistant-only-for-geeks/imgs/hype-vs-reality.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/openclaw-paradox-why-ai-assistant-only-for-geeks/imgs/hype-vs-reality_hu_9a139ddcaf194d61.png 480w, https://blog.ccino.org/p/openclaw-paradox-why-ai-assistant-only-for-geeks/imgs/hype-vs-reality_hu_c7918522cec45fb4.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Hype vs 现实对比&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;02-被掩盖的三重门槛&#34;&gt;02 被掩盖的三重门槛
&lt;/h2&gt;&lt;p&gt;OpenClaw的宣传语是：&amp;ldquo;The AI that actually does things&amp;rdquo;（真正干活的AI）。&lt;/p&gt;
&lt;p&gt;它确实做到了。但问题在于，&lt;strong&gt;要让AI&amp;quot;为你&amp;quot;干活，你得先跨过三道门槛。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;第一道技术门槛&#34;&gt;第一道：技术门槛
&lt;/h3&gt;&lt;p&gt;官方文档说&amp;quot;20分钟完成部署&amp;quot;，但这20分钟的前提是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你有一台闲置的Mac（Windows用户？Docker兼容性问题会让你崩溃）&lt;/li&gt;
&lt;li&gt;你熟悉Docker命令行&lt;/li&gt;
&lt;li&gt;你懂得如何配置反向代理（或使用Tailscale）&lt;/li&gt;
&lt;li&gt;你能看懂Shell脚本的报错信息&lt;/li&gt;
&lt;li&gt;你知道如何给AI设置&amp;quot;沙箱&amp;quot;权限（否则它可能误删你的文件）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对于普通用户，这些都是陌生的词汇。&lt;/p&gt;
&lt;p&gt;Peter Yang的教程视频时长30分钟，但前10分钟都在讲环境准备。他坦诚地说：&amp;ldquo;如果你没有技术背景，建议先找朋友帮忙。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;这不是&amp;quot;降低门槛&amp;quot;，这是&amp;quot;筛选用户&amp;quot;。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;第二道经济门槛&#34;&gt;第二道：经济门槛
&lt;/h3&gt;&lt;p&gt;OpenClaw是免费的，但&amp;quot;用起来&amp;quot;要钱。&lt;/p&gt;
&lt;p&gt;BYOK模式（Bring Your Own API Key）意味着：&lt;strong&gt;你得自己承担AI调用的费用。&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;硬件：Mac mini M4（$699起）&lt;/li&gt;
&lt;li&gt;Claude Max订阅（$200/月，否则token限制很快用完）&lt;/li&gt;
&lt;li&gt;电费（24小时运行）&lt;/li&gt;
&lt;li&gt;可选：域名、云服务器（如果需要公网访问）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;假设你使用Claude Opus（每次对话约$0.03-0.10），每天深度对话20次，月成本约$30-100。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;这还是&amp;quot;单用户&amp;quot;场景。如果是全家共用或团队使用，费用指数级增长。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;对比ChatGPT Plus（$20/月）或Claude Pro（$20/月），OpenClaw的&amp;quot;免费&amp;quot;其实更贵。&lt;/p&gt;
&lt;h3 id=&#34;第三道时间门槛&#34;&gt;第三道：时间门槛
&lt;/h3&gt;&lt;p&gt;部署只是开始。&lt;/p&gt;
&lt;p&gt;真正的成本在于&lt;strong&gt;调试和定制&lt;/strong&gt;。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;配置GitHub集成（需要API token，调试webhook）&lt;/li&gt;
&lt;li&gt;接入Linear（需要OAuth配置，理解权限模型）&lt;/li&gt;
&lt;li&gt;编写自定义技能（需要Markdown格式，理解技能语法）&lt;/li&gt;
&lt;li&gt;日常维护（更新版本、修复bug、优化prompt）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Kristian Freeman在文章中说：&amp;ldquo;我花了一个周末才让OpenClaw稳定运行。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;一个周末，对于技术爱好者是&amp;quot;有趣的挑战&amp;quot;，对于普通用户是&amp;quot;直接劝退&amp;quot;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;云端服务（如ChatGPT）的价值，恰恰在于帮你省了这些时间。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/openclaw-paradox-why-ai-assistant-only-for-geeks/imgs/three-barriers.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/openclaw-paradox-why-ai-assistant-only-for-geeks/imgs/three-barriers_hu_74c6cf394305cf46.png 480w, https://blog.ccino.org/p/openclaw-paradox-why-ai-assistant-only-for-geeks/imgs/three-barriers_hu_5b531d07aa3c64f.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;三重门槛：技术、经济、时间&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;03-byok模式的商业悖论&#34;&gt;03 BYOK模式的商业悖论
&lt;/h2&gt;&lt;p&gt;这里有一个更深层的问题：&lt;strong&gt;OpenClaw靠什么活下去？&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;什么是byok&#34;&gt;什么是BYOK？
&lt;/h3&gt;&lt;p&gt;BYOK = Bring Your Own API Key&lt;/p&gt;
&lt;p&gt;OpenClaw不提供AI服务，它只是一个&amp;quot;连接器&amp;quot;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你在Claude官网买API Key&lt;/li&gt;
&lt;li&gt;把Key填进OpenClaw&lt;/li&gt;
&lt;li&gt;OpenClaw帮你调用Claude，连接你的本地工具&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这听起来很棒：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用户：隐私可控，想用哪个模型用哪个&lt;/li&gt;
&lt;li&gt;开发者：不需要承担巨额API成本&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;但商业闭环在哪里&#34;&gt;但商业闭环在哪里？
&lt;/h3&gt;&lt;p&gt;开源项目的收入来源通常有几种：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;❌ 1. 订阅服务&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OpenClaw的定位是&amp;quot;本地部署&amp;quot;，用户自己运行，订阅什么？&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;❌ 2. 企业版&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;目标用户是个人开发者，企业场景很小&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;❌ 3. 技术支持&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;项目太新，用户量不稳定，难以持续&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;❌ 4. 捐赠&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GitHub Sponsors？查看数据，目前月收入不到$500&lt;/li&gt;
&lt;li&gt;PayPal捐赠？几乎为零&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;❓ 5. 被收购&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;这可能是唯一的出路，但收购后还能保持开源吗？&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;开源项目的三年魔咒&#34;&gt;开源项目的&amp;quot;三年魔咒&amp;quot;
&lt;/h3&gt;&lt;p&gt;根据GitHub的历史数据，&lt;strong&gt;90%的开源项目活不过2年。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;原因很简单：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;开发者需要养家糊口&lt;/li&gt;
&lt;li&gt;热情无法支撑长期维护&lt;/li&gt;
&lt;li&gt;Bug堆积，用户流失&lt;/li&gt;
&lt;li&gt;最终项目无人问津&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OpenClaw目前是单人开发（@steipete），虽然社区贡献了技能，但核心代码库的维护依然依赖他一个人。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;一个人，能对抗时间吗？&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;04-openclaw的三种结局&#34;&gt;04 OpenClaw的三种结局
&lt;/h2&gt;&lt;p&gt;基于商业逻辑和历史规律，我预测OpenClaw有三种可能的结局：&lt;/p&gt;
&lt;h3 id=&#34;结局一收费用户流失&#34;&gt;结局一：收费（用户流失）
&lt;/h3&gt;&lt;p&gt;开发者意识到&amp;quot;爱发电&amp;quot;无法持续，推出&amp;quot;Pro版&amp;quot;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;月费$10-20，提供更多功能&lt;/li&gt;
&lt;li&gt;或卖断授权（$99终身买断）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;结果&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;核心用户（极客）可能付费&lt;/li&gt;
&lt;li&gt;大部分用户会寻找替代品&lt;/li&gt;
&lt;li&gt;GitHub stars继续增长，但实际使用率下降&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;结局二被收购不再开源&#34;&gt;结局二：被收购（不再开源）
&lt;/h3&gt;&lt;p&gt;大公司（如Anthropic、GitHub）看中其技术价值，收购项目：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;开发者获得财务自由&lt;/li&gt;
&lt;li&gt;代码整合进商业产品&lt;/li&gt;
&lt;li&gt;开源版本停止更新&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;结果&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;早期用户成为&amp;quot;小白鼠&amp;quot;&lt;/li&gt;
&lt;li&gt;新用户无法使用开源版本&lt;/li&gt;
&lt;li&gt;项目名存实亡&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;结局三停止维护用户寻找替代&#34;&gt;结局三：停止维护（用户寻找替代）
&lt;/h3&gt;&lt;p&gt;开发者因工作/生活原因无法持续投入：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;更新频率降低&lt;/li&gt;
&lt;li&gt;Bug修复不及时&lt;/li&gt;
&lt;li&gt;社区逐渐沉寂&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;结果&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用户迁移到其他平台（ChatGPT、Claude）&lt;/li&gt;
&lt;li&gt;GitHub成为一个&amp;quot;历史存档&amp;quot;&lt;/li&gt;
&lt;li&gt;新用户看到&amp;quot;Last commit: 8 months ago&amp;quot;，选择离开&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;最有可能的是第三种。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;05-谁真正需要openclaw&#34;&gt;05 谁真正需要OpenClaw？
&lt;/h2&gt;&lt;p&gt;写到这里，我并不是要唱衰OpenClaw。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;它是一个优秀的工具，但不是人人必需。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;真正受益者10&#34;&gt;真正受益者（10%）
&lt;/h3&gt;&lt;p&gt;这些人能真正发挥OpenClaw的价值：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;技术创业者&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需要自动化处理大量重复性任务&lt;/li&gt;
&lt;li&gt;有技术能力调试和定制&lt;/li&gt;
&lt;li&gt;愿意为效率付费（API成本）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;独立开发者&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需要AI辅助编程、运维&lt;/li&gt;
&lt;li&gt;重视隐私（代码不上传云端）&lt;/li&gt;
&lt;li&gt;熟悉Docker、Shell等技术栈&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;极客玩家&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;纯粹的技术兴趣&lt;/li&gt;
&lt;li&gt;享受&amp;quot;折腾&amp;quot;的过程&lt;/li&gt;
&lt;li&gt;不在乎成本（时间+金钱）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;对于他们，OpenClaw是神器。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;边缘用户20&#34;&gt;边缘用户（20%）
&lt;/h3&gt;&lt;p&gt;这些人&amp;quot;能用，但没必要&amp;quot;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;技术学习者&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想了解AI Agent的原理&lt;/li&gt;
&lt;li&gt;但实际使用场景有限&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;跟风尝鲜者&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;被hype吸引，快速部署&lt;/li&gt;
&lt;li&gt;但发现&amp;quot;解决不了实际问题&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;隐私敏感用户&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不信任云端服务&lt;/li&gt;
&lt;li&gt;但缺乏深度定制需求&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;对于他们，OpenClaw是&amp;quot;玩具&amp;quot;。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;云端服务用户70&#34;&gt;云端服务用户（70%）
&lt;/h3&gt;&lt;p&gt;这些人更适合用ChatGPT/Claude：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;普通用户&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只需要AI聊天、简单任务&lt;/li&gt;
&lt;li&gt;没有技术背景&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;内容创作者&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用AI写文章、生成创意&lt;/li&gt;
&lt;li&gt;不需要&amp;quot;连接本地工具&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;中小企业&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需要开箱即用的方案&lt;/li&gt;
&lt;li&gt;预算有限（$20/月 vs $200/月）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;对于他们，OpenClaw是&amp;quot;过度设计&amp;quot;。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/openclaw-paradox-why-ai-assistant-only-for-geeks/imgs/user-pyramid.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/openclaw-paradox-why-ai-assistant-only-for-geeks/imgs/user-pyramid_hu_35d88befa423f7f6.png 480w, https://blog.ccino.org/p/openclaw-paradox-why-ai-assistant-only-for-geeks/imgs/user-pyramid_hu_94dc34d0c3612a85.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;用户分层金字塔：10%受益者、20%边缘用户、70%云端用户&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;06-开源ai助手的未来&#34;&gt;06 开源AI助手的未来
&lt;/h2&gt;&lt;p&gt;这不是OpenClaw一个项目的问题。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;整个开源AI生态都面临同样的困境。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;开源的价值在哪里&#34;&gt;开源的价值在哪里？
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;技术民主化&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;让AI不只属于大公司&lt;/li&gt;
&lt;li&gt;个人也能拥有&amp;quot;自己的JARVIS&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;生态创新&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;社区贡献技能（100+ AgentSkills）&lt;/li&gt;
&lt;li&gt;快速迭代，用户需求直接反馈&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;隐私保护&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;数据本地处理&lt;/li&gt;
&lt;li&gt;符合GDPR等合规要求&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;但商业化是必要的&#34;&gt;但商业化是必要的
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;开源 ≠ 免费&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;成功的开源项目都有商业闭环：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Red Hat&lt;/strong&gt;: 订阅服务，企业级支持&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WordPress&lt;/strong&gt;: 插件市场，托管服务&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Homebrew&lt;/strong&gt;: 赞助 + 企业合作&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VS Code&lt;/strong&gt;: 微软支持，生态扩展&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;可能的混合模式&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;开源核心：基础功能免费
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;商业服务：高级功能付费（企业版、云托管）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;生态变现：技能商店、培训、认证
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;OpenClaw可以考虑：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;云托管版&lt;/strong&gt;（$10/月，帮用户部署维护）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;技能商店&lt;/strong&gt;（优质技能付费分成）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;企业支持&lt;/strong&gt;（技术咨询、定制开发）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;只有开发者能养活自己，项目才能持续。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;07-理性看待-hypes&#34;&gt;07 理性看待 hypes
&lt;/h2&gt;&lt;p&gt;OpenClaw会成功吗？&lt;/p&gt;
&lt;p&gt;我不知道。但我相信：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. 工具没有&amp;quot;最好&amp;quot;，只有&amp;quot;最适合&amp;quot;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果你是技术极客，OpenClaw值得折腾。
如果你是普通用户，ChatGPT更实用。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. &amp;ldquo;免费&amp;quot;往往是最贵的&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;时间成本、学习成本、维护成本，都是成本。
云端服务的$20/月，可能帮你省了10小时。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. 开源不等于&amp;quot;可持续&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在选择开源项目时，考虑：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;开发者的投入度&lt;/li&gt;
&lt;li&gt;社区活跃度&lt;/li&gt;
&lt;li&gt;商业模式（如果有）&lt;/li&gt;
&lt;li&gt;替代方案&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;4. 不要被hype冲昏头脑&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;72小时6万stars，确实震撼。
但一年后，还有多少人在用？&lt;/p&gt;
&lt;p&gt;历史会给出答案。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;写在最后&#34;&gt;写在最后
&lt;/h2&gt;&lt;p&gt;我不是要劝退 anyone。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;OpenClaw是一个优秀的工具，值得技术用户尝试。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;但我更希望你在点击&amp;quot;Star&amp;quot;之前，问自己三个问题：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;我有技术能力部署和维护吗？&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;我有真实的使用场景吗？&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;我能接受它可能2年后停止维护吗？&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果答案都是&amp;quot;Yes&amp;quot;，那就去折腾吧。&lt;/p&gt;
&lt;p&gt;如果有一个&amp;quot;No&amp;quot;，或许ChatGPT更适合你。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;工具的价值，不在于它有多酷，而在于它能帮你解决什么问题。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;延伸阅读&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openclaw.ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenClaw官网&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://creatoreconomy.so/p/full-tutorial-set-up-your-247&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Peter Yang - 20分钟部署教程&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://kristianfreeman.com/how-i-use-clawdbot&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Kristian Freeman - 如何使用OpenClaw&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.digitalocean.com/resources/articles/what-is-openclaw&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DigitalOcean - 什么是OpenClaw&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;作者注&lt;/strong&gt;：本文基于公开信息和社区调研，旨在提供理性分析，并非唱衰OpenClaw。如果你是技术用户，强烈建议亲自尝试，做出自己的判断。&lt;/p&gt;
&lt;hr&gt;

    &lt;blockquote&gt;
        &lt;p&gt;如果你喜欢这篇文章，欢迎点赞、转发。
如果你有不同的观点，欢迎在评论区讨论。
我们下期见！👋&lt;/p&gt;

    &lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>本地 AI 的 2026 抉择：2万块的显卡到底值不值？</title>
        <link>https://blog.ccino.org/p/local-ai-vs-claude-2026/</link>
        <pubDate>Wed, 04 Feb 2026 09:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/local-ai-vs-claude-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/local-ai-vs-claude-2026/imgs/cover-comparison.jpg" alt="Featured image of post 本地 AI 的 2026 抉择：2万块的显卡到底值不值？" /&gt;&lt;h1 id=&#34;本地-ai-的-2026-抉择2万块的显卡到底值不值&#34;&gt;本地 AI 的 2026 抉择：2万块的显卡到底值不值？
&lt;/h1&gt;
    &lt;blockquote&gt;
        &lt;p&gt;一个真实的选择题：朋友问我该不该花2万块买 RTX 4090 跑本地 AI，还是继续用 Claude API。我帮他算了笔账。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;前言&#34;&gt;前言
&lt;/h2&gt;&lt;p&gt;这个问题在 2026 年初的 Reddit LocalLLaMA 社区异常火爆。随着开源模型（如 Llama 3、Qwen 2.5）的能力突飞猛进，越来越多的人开始纠结：&lt;strong&gt;是投资本地硬件，还是继续依赖云端 API？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这不是一个简单的&amp;quot;买vs不买&amp;quot;问题，而是一道需要精确计算的投资决策题。本文将帮你算明白这笔账。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/local-ai-vs-claude-2026/imgs/cover-comparison.jpg&#34;
	width=&#34;2816&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/local-ai-vs-claude-2026/imgs/cover-comparison_hu_f7a68e55fc5e954.jpg 480w, https://blog.ccino.org/p/local-ai-vs-claude-2026/imgs/cover-comparison_hu_5bfb41aab59b13ea.jpg 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;本地AI vs Claude API 对比&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;一经济账3年总成本对比&#34;&gt;一、经济账：3年总成本对比
&lt;/h2&gt;&lt;h3 id=&#34;本地方案一次性投入--持续电费&#34;&gt;本地方案：一次性投入 + 持续电费
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;硬件成本&lt;/strong&gt;（2026年中国市场）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;RTX 4090（24GB）：约 &lt;strong&gt;20,000 元&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;配套升级（电源、主板、机箱等）：约 &lt;strong&gt;5,000 元&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;初始投入总计：25,000 元&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;电费成本&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;RTX 4090 满载功耗：450W&lt;/li&gt;
&lt;li&gt;假设每天使用 4 小时，每月 120 小时&lt;/li&gt;
&lt;li&gt;月耗电：450W × 120h = 54 kWh&lt;/li&gt;
&lt;li&gt;民用电费约 0.6 元/kWh&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;月电费：32.4 元&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;3年电费：1,166 元&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;3年总成本 = 25,000 + 1,166 = 26,166 元&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;云端方案按需付费&#34;&gt;云端方案：按需付费
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Claude Sonnet 4.5 API 定价&lt;/strong&gt;（2026年）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Input：$3/百万 tokens&lt;/li&gt;
&lt;li&gt;Output：$15/百万 tokens&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;使用场景估算&lt;/strong&gt;：
假设中度使用：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;每天对话 50 轮，每轮平均：
&lt;ul&gt;
&lt;li&gt;Input：2,000 tokens&lt;/li&gt;
&lt;li&gt;Output：500 tokens&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;日消耗：Input 10万 tokens + Output 2.5万 tokens&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;月度成本计算&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Input：10万 × 30天 = 300万 tokens = 3M tokens
&lt;ul&gt;
&lt;li&gt;成本：3M × $3/MTok = &lt;strong&gt;$9/月&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Output：2.5万 × 30天 = 75万 tokens = 0.75M tokens
&lt;ul&gt;
&lt;li&gt;成本：0.75M × $15/MTok = &lt;strong&gt;$11.25/月&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;月度总成本：$20.25 ≈ 145 元&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;3年总成本 = 145 × 36 = 5,220 元&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;盈亏平衡点计算&#34;&gt;盈亏平衡点计算
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;公式&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;盈亏平衡月份 = 硬件成本 / (月度API成本 - 月度电费)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            = 25,000 / (145 - 32.4)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            = 25,000 / 112.6
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            ≈ 222 个月 ≈ 18.5 年
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;结论：中度使用场景下，需要 18.5 年才能回本。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;但如果我们提高使用频率：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;高频使用场景&lt;/strong&gt;（每天 200 轮对话）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;月度 API 成本：145 × 4 = 580 元&lt;/li&gt;
&lt;li&gt;盈亏平衡点：25,000 / (580 - 32.4) ≈ &lt;strong&gt;45 个月 ≈ 3.8 年&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这个时间长度就比较合理了。&lt;/p&gt;
&lt;h3 id=&#34;成本计算器你可以代入自己的数据&#34;&gt;成本计算器（你可以代入自己的数据）
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;你的盈亏平衡点（月）= 硬件预算 / [(日对话轮数 × 30 × 单轮成本) - 月电费]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;其中：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 单轮成本 ≈ 0.1 元（基于上述使用模式）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 月电费 ≈ 32.4 元（基于每天4小时使用）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/local-ai-vs-claude-2026/imgs/cost-comparison.jpg&#34;
	width=&#34;2816&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/local-ai-vs-claude-2026/imgs/cost-comparison_hu_13ff7887ec511ad4.jpg 480w, https://blog.ccino.org/p/local-ai-vs-claude-2026/imgs/cost-comparison_hu_41e570bf248fe511.jpg 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;3年总成本对比&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;二性能账能力维度对比&#34;&gt;二、性能账：能力维度对比
&lt;/h2&gt;&lt;p&gt;单纯看经济账是不够的，还需要考虑实际能力差异。&lt;/p&gt;
&lt;h3 id=&#34;本地模型的优势&#34;&gt;本地模型的优势
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;维度&lt;/th&gt;
          &lt;th&gt;表现&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;隐私安全&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;✅ 数据不出本地，敏感信息完全可控&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;延迟&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;✅ 无网络延迟，实时响应&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;使用限制&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;✅ 无请求频率限制，无内容审核&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;离线可用&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;✅ 无需网络，随时可用&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;可定制性&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;✅ 可以微调（Fine-tune）自己的模型&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;本地模型的劣势&#34;&gt;本地模型的劣势
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;维度&lt;/th&gt;
          &lt;th&gt;表现&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;推理能力&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;❌ Llama 3 70B 在复杂推理、代码生成上仍落后 Claude Sonnet 4.5&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;上下文窗口&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;❌ 多数本地模型 32K-128K，Claude 达 200K&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;多模态能力&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;❌ 本地视觉模型能力有限，Claude 原生支持&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;稳定性&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;❌ 需自己维护硬件和环境，系统崩溃需自己处理&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;更新速度&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;❌ 需手动下载新模型，Claude 自动更新&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;实际使用场景对比&#34;&gt;实际使用场景对比
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;代码生成任务&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude Sonnet 4.5：准确率 ~85%，一次性生成可用代码&lt;/li&gt;
&lt;li&gt;Llama 3 70B：准确率 ~65%，需要多次迭代&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;长文本分析&lt;/strong&gt;（10万字）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude：原生支持 200K 上下文，一次分析完成&lt;/li&gt;
&lt;li&gt;本地模型：需要分段处理，增加复杂度&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;图像理解&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude：原生支持，可读图、分析图表&lt;/li&gt;
&lt;li&gt;本地：需额外部署视觉模型，性能较差&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;三决策树你应该选哪个&#34;&gt;三、决策树：你应该选哪个？
&lt;/h2&gt;&lt;p&gt;根据使用频率、任务类型和预算，我用决策树帮你定位：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/local-ai-vs-claude-2026/imgs/decision-tree.jpg&#34;
	width=&#34;1536&#34;
	height=&#34;2752&#34;
	srcset=&#34;https://blog.ccino.org/p/local-ai-vs-claude-2026/imgs/decision-tree_hu_78d26fb01fbf4196.jpg 480w, https://blog.ccino.org/p/local-ai-vs-claude-2026/imgs/decision-tree_hu_86fdb2811f1b5d37.jpg 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;AI 决策流程图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;55&#34;
		data-flex-basis=&#34;133px&#34;
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;场景化建议&#34;&gt;场景化建议
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;✅ 应该买 4090 的情况&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;高频重度用户&lt;/strong&gt;：每月 API 费用超过 500 元（约每天 200+ 轮对话）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码为主&lt;/strong&gt;：主要做代码生成、调试、数据分析&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;隐私敏感&lt;/strong&gt;：处理敏感数据，不能上传云端&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;学习研究&lt;/strong&gt;：需要频繁实验不同模型和参数&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;离线需求&lt;/strong&gt;：经常在无网络环境工作&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;❌ 不应该买 4090 的情况&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;轻度用户&lt;/strong&gt;：每月 API 费用低于 100 元&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多模态需求&lt;/strong&gt;：频繁使用图像、视频分析&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;长文本处理&lt;/strong&gt;：经常处理超过 10 万字的文档&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不想折腾&lt;/strong&gt;：不想维护硬件和软件环境&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;预算紧张&lt;/strong&gt;：2.5 万对你来说是一笔大钱&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;⚠️ 可以考虑的情况&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;中度用户（月 API 费 200-400 元）&lt;/li&gt;
&lt;li&gt;对隐私有需求但不强制&lt;/li&gt;
&lt;li&gt;有学习意愿，愿意折腾&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;四混合方案最优解是什么&#34;&gt;四、混合方案：最优解是什么？
&lt;/h2&gt;&lt;p&gt;经过分析，我发现&lt;strong&gt;纯本地或纯云端都不是最优解&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id=&#34;推荐的混合方案&#34;&gt;推荐的混合方案
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;分层使用策略&lt;/strong&gt;：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;任务类型&lt;/th&gt;
          &lt;th&gt;使用方案&lt;/th&gt;
          &lt;th&gt;理由&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;日常对话、问答&lt;/td&gt;
          &lt;td&gt;Claude API&lt;/td&gt;
          &lt;td&gt;成本低，质量高&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;代码生成、调试&lt;/td&gt;
          &lt;td&gt;本地模型&lt;/td&gt;
          &lt;td&gt;高频使用，隐私保护&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;图像理解&lt;/td&gt;
          &lt;td&gt;Claude API&lt;/td&gt;
          &lt;td&gt;本地模型能力不足&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;长文本分析&lt;/td&gt;
          &lt;td&gt;Claude API&lt;/td&gt;
          &lt;td&gt;上下文窗口优势&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;敏感数据处理&lt;/td&gt;
          &lt;td&gt;本地模型&lt;/td&gt;
          &lt;td&gt;隐私保护&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;硬件配置建议&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不一定要上 RTX 4090&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RTX 4070 Ti Super（16GB）&lt;/strong&gt;：约 8,000 元，可运行 13B-30B 模型&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RTX 4080 Super（16GB）&lt;/strong&gt;：约 1.2 万元，性价比更高&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;云 GPU + 本地推理&lt;/strong&gt;：按需租用，灵活性高&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;实施路线图&#34;&gt;实施路线图
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;阶段一：纯云端试用（1-2个月）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用 Claude API，统计实际使用量和费用&lt;/li&gt;
&lt;li&gt;记录哪些任务高频使用&lt;/li&gt;
&lt;li&gt;评估对隐私、延迟的敏感度&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;阶段二：轻量本地部署（3-6个月）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果月费用 &amp;gt; 200 元，考虑入手 4070 Ti Super&lt;/li&gt;
&lt;li&gt;部署本地模型处理高频任务&lt;/li&gt;
&lt;li&gt;复杂任务仍使用 Claude&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;阶段三：深度优化（6个月后）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果本地使用频率很高，升级到 4090&lt;/li&gt;
&lt;li&gt;建立完善的本地-云端切换机制&lt;/li&gt;
&lt;li&gt;微调专属模型&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;五我的最终建议&#34;&gt;五、我的最终建议
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;不要盲目追求&amp;quot;全本地&amp;quot;或&amp;quot;全云端&amp;quot;&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;2026 年的 AI 使用应该是&lt;strong&gt;智能分流&lt;/strong&gt;的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;简单任务 → 本地小模型（快速、便宜）&lt;/li&gt;
&lt;li&gt;复杂任务 → Claude Sonnet 4.5（高质量、可靠）&lt;/li&gt;
&lt;li&gt;敏感任务 → 本地大模型（隐私保护）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;给朋友的最终建议&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先用 Claude API 2 个月，统计实际费用&lt;/li&gt;
&lt;li&gt;如果月费用 &amp;lt; 200 元，继续用云端&lt;/li&gt;
&lt;li&gt;如果月费用 &amp;gt; 400 元，入手 RTX 4070 Ti Super 试水&lt;/li&gt;
&lt;li&gt;如果本地体验良好，再考虑升级到 4090&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;记住：技术是工具，不是目的。适合自己的，才是最好的。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;参考数据与来源&#34;&gt;参考数据与来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://platform.claude.com/docs/en/about-claude/pricing&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude API 官方定价&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://invertedstone.com/calculators/claude-pricing&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude API 价格计算器&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/LocalLLaMA/comments/1mzefsy/opinion_the_real_costbenefit_analysis_of_local_ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Local AI 真实成本效益分析&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.linkedin.com/posts/theo-borek-higgins_localai-smallmodels-aihardware-activity-7416099071809101825-wbSi&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;本地 AI 硬件成本上升分析&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/LocalLLaMA/comments/1qmqmb9/should_i_invest_in_a_beefy_machine_for_local_ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Should I invest in a beefy machine for local AI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;更新日期&lt;/strong&gt;：2026-02-04
&lt;strong&gt;下次回顾&lt;/strong&gt;：2026-06-01（模型能力可能有大变化）&lt;/p&gt;
</description>
        </item>
        <item>
        <title>MIT预测2026 AI五大趋势：开发者必须知道</title>
        <link>https://blog.ccino.org/p/mit-2026-ai-trends/</link>
        <pubDate>Tue, 03 Feb 2026 08:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/mit-2026-ai-trends/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/mit-2026-ai-trends/ai-trends-2026-overview.png" alt="Featured image of post MIT预测2026 AI五大趋势：开发者必须知道" /&gt;&lt;h2 id=&#34;引言为什么mit预测值得关注&#34;&gt;引言：为什么MIT预测值得关注？
&lt;/h2&gt;&lt;p&gt;每年年初，科技界都会期待一份特殊的报告——《MIT Technology Review》的年度技术预测。作为全球最具权威性的技术媒体之一，MIT的预测往往能准确把握技术发展的脉搏。2026年1月，他们发布了最新的AI趋势报告，指出了五大值得关注的方向。&lt;/p&gt;
&lt;p&gt;为什么这次预测特别重要？因为2025年AI经历了前所未有的爆发——大模型能力快速提升、AI编程工具普及、多模态应用爆发式增长。而2026年，被普遍认为是AI从&amp;quot;概念验证&amp;quot;走向&amp;quot;深度应用&amp;quot;的关键转折年。&lt;/p&gt;
&lt;p&gt;MIT此次预测的五大趋势，不再是笼统的方向性描述，而是具体到了技术、产品和商业应用层面。对于开发者和创业者来说，这是提前布局技能和项目的黄金参考。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/mit-2026-ai-trends/imgs/ai-trends-2026-overview.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/mit-2026-ai-trends/imgs/ai-trends-2026-overview_hu_6089fd8060f54e80.png 480w, https://blog.ccino.org/p/mit-2026-ai-trends/imgs/ai-trends-2026-overview_hu_7cd8e145e5c16fde.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;2026 AI五大趋势总览&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;趋势一即时环境生成genie-3marble&#34;&gt;趋势一：即时环境生成（Genie 3、Marble）
&lt;/h2&gt;&lt;h3 id=&#34;技术解读&#34;&gt;技术解读
&lt;/h3&gt;&lt;p&gt;还记得2023年Midjourney刚出来时，生成一张图片需要等待几十秒吗？现在，AI正在从&amp;quot;生成内容&amp;quot;进化到&amp;quot;生成世界&amp;quot;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Genie 3&lt;/strong&gt;（Google DeepMind）和&lt;strong&gt;Marble&lt;/strong&gt;（World Labs，由李飞飞创立）代表了这一波浪潮。它们不再是简单地生成图片或视频，而是能够实时生成&lt;strong&gt;可交互的3D虚拟环境&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;想象一下这样的场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你输入&amp;quot;一个阳光明媚的海滩咖啡店&amp;quot;&lt;/li&gt;
&lt;li&gt;AI瞬间生成一个完整的3D场景，你可以在其中自由走动、移动物体、改变天气&lt;/li&gt;
&lt;li&gt;整个过程像玩游戏一样实时响应，不需要等待渲染&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Genie 3&lt;/strong&gt;的核心突破在于：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;实时性&lt;/strong&gt;：从文本/图像到3D世界的生成速度达到毫秒级&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可交互性&lt;/strong&gt;：生成的环境不是静态的，而是可以实时响应用户操作&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;物理真实感&lt;/strong&gt;：模拟重力、碰撞、光影等物理规律&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Marble&lt;/strong&gt;则更专注于高精度的3D环境生成，在建筑可视化、游戏开发、元宇宙构建等领域展现出巨大潜力。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/mit-2026-ai-trends/imgs/world-model-generation.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/mit-2026-ai-trends/imgs/world-model-generation_hu_90f6d861de427fa5.png 480w, https://blog.ccino.org/p/mit-2026-ai-trends/imgs/world-model-generation_hu_c8b38d1cdf51e9b1.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Genie 3 &amp; Marble 即时环境生成&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;对开发者的影响&#34;&gt;对开发者的影响
&lt;/h3&gt;&lt;p&gt;如果你从事以下领域，这个趋势值得关注：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;游戏开发&lt;/strong&gt;：原型设计时间从数周缩短到数小时&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VR/AR应用&lt;/strong&gt;：内容创作成本大幅降低&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;建筑设计&lt;/strong&gt;：快速生成可视化方案&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;学习资源&#34;&gt;学习资源
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://deepmind.google/blog/genie-3-a-new-frontier-for-world-models/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Genie 3: A new frontier for world models - Google DeepMind&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.deeplearning.ai/the-batch/world-labs-makes-its-marble-generative-world-model-public-adds-chisel-editing-tool/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;World Labs Makes Its Marble Generative World Model Public&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.genie-3.world/blog/genie-3-vs-marble&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Genie 3 vs Marble: Comparing Two Leading 3D AI Models&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;趋势二推理模型主流化&#34;&gt;趋势二：推理模型主流化
&lt;/h2&gt;&lt;h3 id=&#34;技术解读-1&#34;&gt;技术解读
&lt;/h3&gt;&lt;p&gt;2025年是&amp;quot;大模型爆发年&amp;quot;，但很多开发者发现一个痛点：模型虽然知识渊博，但&lt;strong&gt;推理能力有限&lt;/strong&gt;。遇到复杂问题时，往往会一本正经地胡说八道。&lt;/p&gt;
&lt;p&gt;2026年，这个问题将迎来突破。&lt;strong&gt;推理模型&lt;/strong&gt;（Reasoning Models）将成为主流。&lt;/p&gt;
&lt;p&gt;什么是推理模型？简单说，就是让AI学会&amp;quot;思考&amp;quot;，而不是简单&amp;quot;检索记忆&amp;quot;。核心突破包括：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;链式推理&lt;/strong&gt;（Chain of Thought）：模型会展示完整的思考过程&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不再直接给答案&lt;/li&gt;
&lt;li&gt;而是像人类一样：先理解问题 → 分解步骤 → 逐步推理 → 得出结论&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;自我验证&lt;/strong&gt;：模型会检查自己的推理过程&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;发现逻辑错误时自动纠正&lt;/li&gt;
&lt;li&gt;对不确定的答案标注置信度&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;多步规划&lt;/strong&gt;：面对复杂任务，能制定长期执行计划&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;像下棋一样，考虑后续多步的影响&lt;/li&gt;
&lt;li&gt;而不是只看眼前一步&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;OpenAI的o1系列、Anthropic的Claude 3.5、Google的Gemini 2.5都在这个方向上持续发力。&lt;strong&gt;推理能力正成为大模型竞争的下一个战场。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;对开发者的影响-1&#34;&gt;对开发者的影响
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;代码生成更可靠&lt;/strong&gt;：AI写的代码bug更少，逻辑更清晰&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;复杂问题求解&lt;/strong&gt;：可以用AI处理更复杂的算法题、系统设计题&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI Agent更智能&lt;/strong&gt;：基于推理的Agent能处理更复杂的多步骤任务&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;趋势三ai科学突破年&#34;&gt;趋势三：AI科学突破年
&lt;/h2&gt;&lt;h3 id=&#34;趋势解读&#34;&gt;趋势解读
&lt;/h3&gt;&lt;p&gt;OpenAI已经明确表态：&lt;strong&gt;2026年是&amp;quot;AI与科学突破年&amp;quot;&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这不是空话。过去几年，AI在以下领域已经展现出强大潜力：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;蛋白质折叠&lt;/strong&gt;（AlphaFold）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2021年AlphaFold2预测蛋白质结构震撼科学界&lt;/li&gt;
&lt;li&gt;2025年，AI已能预测蛋白质相互作用、药物靶点&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;新材料发现&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI加速新型电池材料、超导材料的筛选和设计&lt;/li&gt;
&lt;li&gt;传统需要数年的实验周期，被缩短到数月&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;气候模拟&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI模型在天气预报、气候变化预测上超越传统方法&lt;/li&gt;
&lt;li&gt;GPU加速的模拟让计算成本降低90%&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;数学证明&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI辅助证明复杂的数学定理&lt;/li&gt;
&lt;li&gt;DeepMind的AlphaProof已经能解决国际数学奥赛级别的难题&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;2026年，我们可能会看到：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI辅助的重大科学突破（诺贝尔奖级别）&lt;/li&gt;
&lt;li&gt;AI驱动的药物进入临床试验&lt;/li&gt;
&lt;li&gt;AI成为科学家的&amp;quot;标配工具&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;对创业者的影响&#34;&gt;对创业者的影响
&lt;/h3&gt;&lt;p&gt;科学AI正在成为一个巨大的创业赛道。机会在于：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;垂直领域AI工具&lt;/strong&gt;：针对生物、化学、物理等专业场景&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据平台&lt;/strong&gt;：提供高质量科学数据集&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;计算基础设施&lt;/strong&gt;：为科学计算提供优化的云服务&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;趋势四持续学习技术&#34;&gt;趋势四：持续学习技术
&lt;/h2&gt;&lt;h3 id=&#34;技术突破&#34;&gt;技术突破
&lt;/h3&gt;&lt;p&gt;你有没有发现一个奇怪的现象：ChatGPT的知识截止在某个时间点，之后发生的事情它一概不知？&lt;/p&gt;
&lt;p&gt;这就是当前大模型的致命弱点——&lt;strong&gt;无法持续学习&lt;/strong&gt;。一旦训练完成，模型就被&amp;quot;冻结&amp;quot;了。&lt;/p&gt;
&lt;p&gt;Google DeepMind做出一个大胆预测：&lt;strong&gt;2026年，AI将持续学习技术的突破中实现&amp;quot;知识永生&amp;quot;&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;什么是持续学习？&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI能够像人类一样，从新数据中持续吸收知识&lt;/li&gt;
&lt;li&gt;不需要重新训练整个模型&lt;/li&gt;
&lt;li&gt;新旧知识能够融合，不会出现&amp;quot;灾难性遗忘&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;技术挑战&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;灾难性遗忘&lt;/strong&gt;：学习新知识时，旧知识被覆盖&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;知识冲突&lt;/strong&gt;：新旧信息矛盾时如何处理&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;计算效率&lt;/strong&gt;：如何在不完全重训的情况下更新模型&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;可能的解决方案&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;动态神经网络架构&lt;/li&gt;
&lt;li&gt;增量学习算法&lt;/li&gt;
&lt;li&gt;知识蒸馏与迁移学习&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一旦这个技术突破，AI将进入全新的发展阶段：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;个人AI助手能记住你的所有对话&lt;/li&gt;
&lt;li&gt;AI系统能自动适应新的使用场景&lt;/li&gt;
&lt;li&gt;知识积累像滚雪球一样持续增长&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;商业影响&#34;&gt;商业影响
&lt;/h3&gt;&lt;p&gt;持续学习技术的突破将催生：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;个性化AI服务&lt;/strong&gt;：每个用户都有专属的AI模型&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;自适应系统&lt;/strong&gt;：能自动优化的业务流程&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;知识管理工具&lt;/strong&gt;：企业的&amp;quot;第二大脑&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;趋势五开源模型崛起&#34;&gt;趋势五：开源模型崛起
&lt;/h2&gt;&lt;h3 id=&#34;趋势分析&#34;&gt;趋势分析
&lt;/h3&gt;&lt;p&gt;2025年初，DeepSeek R1（中国开源推理模型）的发布震惊了硅谷。它证明了：&lt;strong&gt;开源模型可以在性能上与闭源模型正面竞争&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;2026年，开源模型将继续崛起，原因包括：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;性能差距缩小&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;开源模型在推理能力、多模态处理上快速追赶&lt;/li&gt;
&lt;li&gt;Llama 4、Mistral、DeepSeek等系列持续突破&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;成本优势明显&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;开源模型可私有化部署，数据不外泄&lt;/li&gt;
&lt;li&gt;长期使用成本远低于API调用&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;本地化需求&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;企业和政府对数据安全的重视&lt;/li&gt;
&lt;li&gt;各国推出数据本地化法规&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;生态系统成熟&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;开源工具链（vLLM、llama.cpp）性能优化&lt;/li&gt;
&lt;li&gt;部署门槛大幅降低&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;预测&lt;/strong&gt;：到2026年底，我们可能会看到：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;开源模型在特定任务上超越闭源模型&lt;/li&gt;
&lt;li&gt;更多企业选择&amp;quot;开源模型+微调&amp;quot;的方案&lt;/li&gt;
&lt;li&gt;中国开源模型在全球范围产生影响力&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;对开发者的影响-2&#34;&gt;对开发者的影响
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;技能储备&lt;/strong&gt;：学习开源模型的部署和微调&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;工具链掌握&lt;/strong&gt;：熟悉vLLM、Ollama、LangChain等工具&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;架构设计&lt;/strong&gt;：考虑混合方案（开源+API调用）&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;对开发者的影响需要学习什么&#34;&gt;对开发者的影响：需要学习什么？
&lt;/h2&gt;&lt;p&gt;面对这五大趋势，开发者应该提前布局哪些技能？&lt;/p&gt;
&lt;h3 id=&#34;短期3-6个月&#34;&gt;短期（3-6个月）
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;学习推理模型的使用&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;熟悉Claude、GPT-4o、Gemini等最新模型&lt;/li&gt;
&lt;li&gt;掌握Prompt Engineering进阶技巧&lt;/li&gt;
&lt;li&gt;理解链式推理的原理和应用&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;关注开源生态&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;尝试部署Llama、DeepSeek等开源模型&lt;/li&gt;
&lt;li&gt;学习vLLM、Ollama等推理框架&lt;/li&gt;
&lt;li&gt;了解模型微调的基本方法&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;中期6-12个月&#34;&gt;中期（6-12个月）
&lt;/h3&gt;&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;深入专业领域&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果你是游戏开发者，学习Genie 3、Marble的环境生成API&lt;/li&gt;
&lt;li&gt;如果你是科学计算方向，关注AlphaFold、科学AI工具&lt;/li&gt;
&lt;li&gt;如果你是企业服务开发者，研究持续学习系统的架构&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;掌握Agent开发&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;学习AutoGPT、LangChain、CrewAI等框架&lt;/li&gt;
&lt;li&gt;理解多Agent协作的编程模式&lt;/li&gt;
&lt;li&gt;构建自己的AI Agent应用&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;长期1-2年&#34;&gt;长期（1-2年）
&lt;/h3&gt;&lt;ol start=&#34;5&#34;&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;跨学科能力&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI + 行业知识（生物、金融、教育等）&lt;/li&gt;
&lt;li&gt;理解AI在垂直领域的应用路径&lt;/li&gt;
&lt;li&gt;成为&amp;quot;T型人才&amp;quot;（AI技能 + 专业深度）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;关注前沿论文&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;跟踪ICML、NeurIPS、CVPR等顶会&lt;/li&gt;
&lt;li&gt;理解最新技术突破的原理&lt;/li&gt;
&lt;li&gt;将研究成果转化为工程实践&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&#34;对创业者的影响机会在哪里&#34;&gt;对创业者的影响：机会在哪里？
&lt;/h2&gt;&lt;h3 id=&#34;1-环境生成应用&#34;&gt;1. 环境生成应用
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;机会点&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;虚拟样板房生成（房地产）&lt;/li&gt;
&lt;li&gt;游戏关卡自动生成（游戏行业）&lt;/li&gt;
&lt;li&gt;VR培训场景（企业培训）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;竞争策略&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;专注垂直场景，而非通用平台&lt;/li&gt;
&lt;li&gt;积累行业数据，形成壁垒&lt;/li&gt;
&lt;li&gt;与现有工具（Unity、Unreal）集成&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2-推理模型服务&#34;&gt;2. 推理模型服务
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;机会点&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;代码审查与重构工具&lt;/li&gt;
&lt;li&gt;复杂决策支持系统&lt;/li&gt;
&lt;li&gt;AI客服的&amp;quot;高级咨询&amp;quot;模式&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;竞争策略&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;深耕某个垂直领域（法律、医疗、金融）&lt;/li&gt;
&lt;li&gt;提供端到端解决方案，而非单纯API&lt;/li&gt;
&lt;li&gt;建立行业知识库和最佳实践&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;3-科学ai平台&#34;&gt;3. 科学AI平台
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;机会点&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;药物研发AI平台&lt;/li&gt;
&lt;li&gt;新材料筛选工具&lt;/li&gt;
&lt;li&gt;实验数据智能分析&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;竞争策略&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;与科研机构深度合作&lt;/li&gt;
&lt;li&gt;获取高质量数据集&lt;/li&gt;
&lt;li&gt;招募跨学科团队（AI + 生物/化学/物理）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;4-持续学习系统&#34;&gt;4. 持续学习系统
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;机会点&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;企业知识管理平台&lt;/li&gt;
&lt;li&gt;个人AI助手（长期记忆）&lt;/li&gt;
&lt;li&gt;自适应学习系统&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;竞争策略&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;技术壁垒较高，需要算法积累&lt;/li&gt;
&lt;li&gt;数据隐私和安全是关键卖点&lt;/li&gt;
&lt;li&gt;B2B市场优先，再扩展到B2C&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;5-开源模型服务&#34;&gt;5. 开源模型服务
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;机会点&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;开源模型托管平台&lt;/li&gt;
&lt;li&gt;一键部署工具&lt;/li&gt;
&lt;li&gt;企业级开源模型支持&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;竞争策略&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;技术服务为主，避免与巨头正面竞争&lt;/li&gt;
&lt;li&gt;提供差异化服务（私有化部署、合规咨询）&lt;/li&gt;
&lt;li&gt;建立开源社区影响力&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;对国内ai发展的启示&#34;&gt;对国内AI发展的启示
&lt;/h2&gt;&lt;h3 id=&#34;1-技术追赶与差异化&#34;&gt;1. 技术追赶与差异化
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;现状&lt;/strong&gt;：在基础大模型上，国内与国际顶尖水平仍有差距&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;策略&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;避开正面竞争，在垂直领域深耕&lt;/li&gt;
&lt;li&gt;利用中文数据优势，打造本土化应用&lt;/li&gt;
&lt;li&gt;关注开源生态，降低技术门槛&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2-应用场景创新&#34;&gt;2. 应用场景创新
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;优势&lt;/strong&gt;：国内有丰富的应用场景和海量用户&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;机会&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI + 制造业（工业质检、预测性维护）&lt;/li&gt;
&lt;li&gt;AI + 医疗（影像诊断、药物研发）&lt;/li&gt;
&lt;li&gt;AI + 教育（个性化学习、智能辅导）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;3-开源社区建设&#34;&gt;3. 开源社区建设
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;趋势&lt;/strong&gt;：DeepSeek R1证明了中国开源模型的实力&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;建议&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;积极参与国际开源社区&lt;/li&gt;
&lt;li&gt;发布高质量开源项目，建立影响力&lt;/li&gt;
&lt;li&gt;培养开源人才和生态&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;4-政策与合规&#34;&gt;4. 政策与合规
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;挑战&lt;/strong&gt;：数据安全、算法合规成为必答题&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;应对&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;提前布局合规体系&lt;/li&gt;
&lt;li&gt;关注《生成式AI服务管理暂行办法》等政策&lt;/li&gt;
&lt;li&gt;在创新与合规间找到平衡&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;个人行动计划如何提前布局&#34;&gt;个人行动计划：如何提前布局？
&lt;/h2&gt;&lt;h3 id=&#34;如果你是学生&#34;&gt;如果你是学生
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;打好基础&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;数学（线性代数、概率论）&lt;/li&gt;
&lt;li&gt;编程（Python、C++）&lt;/li&gt;
&lt;li&gt;算法与数据结构&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;实践项目&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在GitHub上参与开源AI项目&lt;/li&gt;
&lt;li&gt;参加Kaggle竞赛&lt;/li&gt;
&lt;li&gt;做有趣的AI Demo（用Claude/GPT API）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;关注前沿&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;订阅MIT Technology Review、Arxiv Sanity&lt;/li&gt;
&lt;li&gt;关注优秀研究者的博客&lt;/li&gt;
&lt;li&gt;加入AI学习社区&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;如果你是职场开发者&#34;&gt;如果你是职场开发者
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;技能升级&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;学习Prompt Engineering&lt;/li&gt;
&lt;li&gt;掌握LangChain等开发框架&lt;/li&gt;
&lt;li&gt;了解MLOps基础&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;工作整合&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在现有项目中引入AI工具&lt;/li&gt;
&lt;li&gt;优化重复性工作流程&lt;/li&gt;
&lt;li&gt;主动承担AI相关项目&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;职业规划&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;考虑转向AI工程师方向&lt;/li&gt;
&lt;li&gt;成为&amp;quot;AI + 行业&amp;quot;的复合型人才&lt;/li&gt;
&lt;li&gt;关注AI创业公司机会&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;如果你是创业者&#34;&gt;如果你是创业者
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;找痛点&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI能解决的真实问题&lt;/li&gt;
&lt;li&gt;传统方法效率低的场景&lt;/li&gt;
&lt;li&gt;用户愿意付费的需求&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;小步快跑&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;先做MVP验证需求&lt;/li&gt;
&lt;li&gt;快速迭代，收集反馈&lt;/li&gt;
&lt;li&gt;避免过度追求技术先进性&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;建立壁垒&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;积累专有数据&lt;/li&gt;
&lt;li&gt;构建用户网络效应&lt;/li&gt;
&lt;li&gt;形成技术和认知壁垒&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&#34;结语2026ai的应用之年&#34;&gt;结语：2026，AI的&amp;quot;应用之年&amp;quot;
&lt;/h2&gt;&lt;p&gt;回顾MIT的五大趋势预测，我们可以清晰地看到一条主线：&lt;strong&gt;AI正在从&amp;quot;技术突破&amp;quot;走向&amp;quot;深度应用&amp;quot;&lt;/strong&gt;。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Genie 3和Marble让环境生成变得实用&lt;/li&gt;
&lt;li&gt;推理模型让AI变得更可靠&lt;/li&gt;
&lt;li&gt;科学AI正在改变研究范式&lt;/li&gt;
&lt;li&gt;持续学习技术可能带来质的飞跃&lt;/li&gt;
&lt;li&gt;开源模型让更多人能参与创新&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对于开发者和创业者来说，2026年是机会与挑战并存的一年：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;机会&lt;/strong&gt;：技术门槛降低，应用场景丰富&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;挑战&lt;/strong&gt;：竞争加剧，需要找到差异化优势&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最关键的，是保持学习的热情和开放的心态。AI技术发展太快，没有人能掌握所有知识。但只要持续学习、勇于实践，就能在这个AI变革的时代找到自己的位置。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2026，让我们一起迎接AI的应用之年。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.technologyreview.com/2026/01/05/1130662/whats-next-for-ai-in-2026/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;What&amp;rsquo;s next for AI in 2026 - MIT Technology Review&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.technologyreview.com/2026/01/12/1130697/10-breakthrough-technologies-2026/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;10 Breakthrough Technologies 2026 - MIT Technology Review&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://deepmind.google/blog/genie-3-a-new-frontier-for-world-models/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Genie 3: A new frontier for world models - Google DeepMind&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.deeplearning.ai/the-batch/world-labs-makes-its-marble-generative-world-model-public-adds-chisel-editing-tool/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;World Labs Makes Its Marble Generative World Model Public&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://zhuanlan.zhihu.com/p/1992923340722155557&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;《麻省理工科技评论》预测2026年AI五大趋势 - 知乎&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://iknow.stpi.niar.org.tw/post/Read.aspx?PostID=22709&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;2026年關注的AI未來五大趨勢 - 国家实验研究院&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.gvm.com.tw/article/126877&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;從文科進軍理科，2026年將是AI的「科學突破年」？ - 远见杂志&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>2026 AI 从业者生存指南：这些技能决定你的竞争力</title>
        <link>https://blog.ccino.org/p/ai-practitioner-skills-2026/</link>
        <pubDate>Mon, 02 Feb 2026 03:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/ai-practitioner-skills-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/ai-practitioner-skills-2026/imgs/cover.png" alt="Featured image of post 2026 AI 从业者生存指南：这些技能决定你的竞争力" /&gt;
    &lt;blockquote&gt;
        &lt;p&gt;六个月前，如果有人问我&amp;quot;AI agent 是什么&amp;quot;，我会说那是&amp;quot;被过度包装的聊天机器人&amp;quot;。&lt;/p&gt;
&lt;p&gt;而今天？&lt;strong&gt;我在编排 AI agent 团队，它们在我睡觉时处理整个功能开发&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;2026 年初发生了一些根本性变化，如果你还认为 AI 只是&amp;quot;一个编码助手&amp;quot;，那你已经落后了&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/ai-practitioner-skills-2026/imgs/cover.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/ai-practitioner-skills-2026/imgs/cover_hu_3c29a244b94dc29.png 480w, https://blog.ccino.org/p/ai-practitioner-skills-2026/imgs/cover_hu_3df97286c0db61cc.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;封面图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;一2026ai-写-100-代码的时代&#34;&gt;一、2026：AI 写 100% 代码的时代
&lt;/h2&gt;&lt;h3 id=&#34;11-从工具到合作伙伴&#34;&gt;1.1 从&amp;quot;工具&amp;quot;到&amp;quot;合作伙伴&amp;quot;
&lt;/h3&gt;&lt;p&gt;在 2024-2025 年，AI 编码工具令人印象深刻，但仍然有限：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GitHub Copilot 自动补全你的代码&lt;/li&gt;
&lt;li&gt;ChatGPT 回答你的问题&lt;/li&gt;
&lt;li&gt;Cursor 帮你重构&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;但你仍然是主导者，AI 只是乘客。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;而在 2026 年，AI agents 不再等待指令。它们：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;规划&lt;/strong&gt;任务序列&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;执行&lt;/strong&gt;跨多个文件和系统的操作&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;适应&lt;/strong&gt;出错的状况&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;协调&lt;/strong&gt;与其他 agents 的工作&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;你不再写代码。你在&lt;strong&gt;编排&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/ai-practitioner-skills-2026/imgs/tools-to-partners.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/ai-practitioner-skills-2026/imgs/tools-to-partners_hu_17967af3565c9711.png 480w, https://blog.ccino.org/p/ai-practitioner-skills-2026/imgs/tools-to-partners_hu_b2ba09d3bc5adf58.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;从工具到合作伙伴&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;12-真实案例从-25-小时到-20-分钟&#34;&gt;1.2 真实案例：从 2.5 小时到 20 分钟&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;任务&lt;/strong&gt;：为 API 添加用户认证&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;旧方式（2024）&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;编写认证中间件（30 分钟）&lt;/li&gt;
&lt;li&gt;更新路由处理器（20 分钟）&lt;/li&gt;
&lt;li&gt;添加数据库迁移（15 分钟）&lt;/li&gt;
&lt;li&gt;编写测试（45 分钟）&lt;/li&gt;
&lt;li&gt;更新文档（20 分钟）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;总时间&lt;/strong&gt;：约 2.5 小时的专注工作&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;新方式（2026）&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;用纯英语编写规格说明（5 分钟）&lt;/li&gt;
&lt;li&gt;部署三个 AI agents：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Agent 1&lt;/strong&gt;：后端实现&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agent 2&lt;/strong&gt;：数据库架构 + 迁移&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agent 3&lt;/strong&gt;：测试套件 + 文档&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;审查它们集体创建的 PR（15 分钟）&lt;/li&gt;
&lt;li&gt;合并&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;总时间&lt;/strong&gt;：约 20 分钟的个人时间，总计 45 分钟&lt;/p&gt;
&lt;h3 id=&#34;13-什么改变了&#34;&gt;1.3 什么改变了？
&lt;/h3&gt;&lt;p&gt;根据 Dev.to 的分析，核心突破来自三个方向&lt;sup id=&#34;fnref1:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;规格驱动开发&lt;/strong&gt;：不再写代码，而是写计划。AI agents 从结构化的规格说明中理解需求、架构决策、约束条件。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;并行执行&lt;/strong&gt;：每个 agent 在独立分支中工作，无冲突、更快完成、易于回滚。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;上下文持久化&lt;/strong&gt;：Agents 记住你的编码风格、架构决策、测试模式。你永远不需要重复自己。&lt;/p&gt;
&lt;h2 id=&#34;二2026-核心技能图谱按优先级排序&#34;&gt;二、2026 核心技能图谱（按优先级排序）
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/ai-practitioner-skills-2026/imgs/skills-priority.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/ai-practitioner-skills-2026/imgs/skills-priority_hu_b571e2ed2346db49.png 480w, https://blog.ccino.org/p/ai-practitioner-skills-2026/imgs/skills-priority_hu_fd12aac638f65ca6.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;核心技能优先级金字塔&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;-第一优先级ai-agent-设计与架构&#34;&gt;🥇 第一优先级：AI Agent 设计与架构&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;为什么重要&lt;/strong&gt;：
架构决定一切。有效的 agent 从坚实的设计开始。感知、推理、行动、记忆——这些组件定义了 agent 的能力边界。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;学什么&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agent 基础架构：LLM（推理引擎）+ 工具/API + 结构化提示词&lt;/li&gt;
&lt;li&gt;ReAct 循环模式：推理与行动交替&lt;/li&gt;
&lt;li&gt;安全约束设计：防止意外行为的关键机制&lt;/li&gt;
&lt;li&gt;多 agent 协作模式：Manager-Worker、任务图、共享内存&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;怎么学&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;理论阶段（2 周）&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;阅读 &lt;a class=&#34;link&#34; href=&#34;https://arxiv.org/abs/2210.03629&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ReAct 论文&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;研究 LangChain 文档中的 Agent 设计模式&lt;/li&gt;
&lt;li&gt;理解不同架构的权衡&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;实践阶段（4 周）&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用 LangChain 构建你的第一个 agent&lt;/li&gt;
&lt;li&gt;实现 ReAct 循环&lt;/li&gt;
&lt;li&gt;添加安全护栏&lt;/li&gt;
&lt;li&gt;部署一个简单任务 agent&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;进阶阶段（持续）&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;学习 LangGraph 的图式控制流&lt;/li&gt;
&lt;li&gt;探索 CrewAI 的多 agent 协作&lt;/li&gt;
&lt;li&gt;构建自己的 agent 框架&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;-第二优先级agent-记忆系统&#34;&gt;🥈 第二优先级：Agent 记忆系统&lt;sup id=&#34;fnref:4&#34;&gt;&lt;a href=&#34;#fn:4&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;4&lt;/a&gt;&lt;/sup&gt;
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;为什么重要&lt;/strong&gt;：
没有记忆的自主性无法扩展。记忆系统让 agents 跨交互、会话和任务保留上下文——这是个性化、学习和长期工作流的基础。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;学什么&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;短期记忆：LLM 上下文窗口管理&lt;/li&gt;
&lt;li&gt;长期记忆：
&lt;ul&gt;
&lt;li&gt;向量数据库（Pinecone、Weaviate、Milvus）&lt;/li&gt;
&lt;li&gt;知识图谱（Neo4j）&lt;/li&gt;
&lt;li&gt;外部文档存储&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;RAG（检索增强生成）：动态知识检索&lt;/li&gt;
&lt;li&gt;高级记忆模式：情景记忆、语义记忆&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;怎么学&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;基础（3 周）&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;学习向量数据库基础&lt;/li&gt;
&lt;li&gt;掌握 RAG 实现流程&lt;/li&gt;
&lt;li&gt;理解 chunking 策略&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;实践（4 周）&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用 LlamaIndex 或 LangChain 构建简单 RAG&lt;/li&gt;
&lt;li&gt;实现向量相似度搜索&lt;/li&gt;
&lt;li&gt;测试不同 chunking 策略的效果&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;高级（持续）&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;设计 agent 友好的知识存储&lt;/li&gt;
&lt;li&gt;实现智能检索策略&lt;/li&gt;
&lt;li&gt;构建混合记忆系统（向量 + 图谱 + 数据库）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;关键指标&lt;/strong&gt;：2026 年，有效的记忆设计是决定 agent 感觉&amp;quot;有用&amp;quot;还是&amp;quot;令人沮丧&amp;quot;的关键因素。&lt;/p&gt;
&lt;h3 id=&#34;-第三优先级工具使用与-api-集成&#34;&gt;🥉 第三优先级：工具使用与 API 集成
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;为什么重要&lt;/strong&gt;：
agents 只有能行动时才真正强大。工具使用让 agents 调用 API、运行代码、查询数据库、与真实系统交互——将对话接口转化为自主工作者。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;学什么&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Function Calling：现代 agent 的标准工具接口&lt;/li&gt;
&lt;li&gt;安全工具定义：清晰的接口、认证、速率限制&lt;/li&gt;
&lt;li&gt;错误处理与降级：自动化失败的逃生路径&lt;/li&gt;
&lt;li&gt;沙箱机制：防止恶意行为的关键安全措施&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;怎么学&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;入门（2 周）&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;理解 Function Calling 原理&lt;/li&gt;
&lt;li&gt;学习 OpenAI/Anthropic 的工具 API&lt;/li&gt;
&lt;li&gt;掌握基本错误处理&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;实践（4 周）&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;为你的 agent 添加 3-5 个常用工具&lt;/li&gt;
&lt;li&gt;实现重试与降级逻辑&lt;/li&gt;
&lt;li&gt;部署到生产环境并监控&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;生产级（持续）&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;设计可扩展的工具架构&lt;/li&gt;
&lt;li&gt;实现细粒度权限控制&lt;/li&gt;
&lt;li&gt;构建工具监控与审计系统&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;现实影响&lt;/strong&gt;：到 2026 年，大多数生产 agents 将深度集成到现有技术栈——CRM、云服务、内部仪表板——使工具使用成为 AI 团队的核心能力。&lt;/p&gt;
&lt;h3 id=&#34;第四优先级多-agent-系统&#34;&gt;第四优先级：多 Agent 系统
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;为什么重要&lt;/strong&gt;：
有些问题对单个 agent 来说太大了。多 agent 系统将工作分配给专门协作的 agents，解锁了单 agent 系统无法比拟的规模和鲁棒性。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;学什么&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;角色分配：谁做什么&lt;/li&gt;
&lt;li&gt;通信协议：agents 如何对话&lt;/li&gt;
&lt;li&gt;协调模式：避免冲突&lt;/li&gt;
&lt;li&gt;框架工具：LangGraph、Swarm、CrewAI&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;怎么学&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;理解阶段（2 周）&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;研究多 agent 架构模式&lt;/li&gt;
&lt;li&gt;分析成功案例（如 AutoGen）&lt;/li&gt;
&lt;li&gt;理解通信与同步挑战&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;实验阶段（4 周）&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用 CrewAI 构建简单的 3-agent 系统&lt;/li&gt;
&lt;li&gt;测试不同的通信协议&lt;/li&gt;
&lt;li&gt;优化任务分配策略&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;生产阶段（持续）&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;构建可扩展的 agent 编排系统&lt;/li&gt;
&lt;li&gt;实现监控与调试工具&lt;/li&gt;
&lt;li&gt;部署到真实业务流程&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;核心原则&lt;/strong&gt;：掌握多 agent 设计意味着学习如何分配角色、定义通信协议，并创建让 agents 相互放大而非相互阻碍的系统。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/ai-practitioner-skills-2026/imgs/multi-agent-collaboration.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/ai-practitioner-skills-2026/imgs/multi-agent-collaboration_hu_8bf8bb27439b72c6.png 480w, https://blog.ccino.org/p/ai-practitioner-skills-2026/imgs/multi-agent-collaboration_hu_3a358602bea7522.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;多Agent协作模式&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;第五优先级agent-评估与测试&#34;&gt;第五优先级：Agent 评估与测试&lt;sup id=&#34;fnref:5&#34;&gt;&lt;a href=&#34;#fn:5&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;5&lt;/a&gt;&lt;/sup&gt;
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;为什么重要&lt;/strong&gt;：
如果你无法评估一个 agent，你就无法信任它。传统测试方法无法直接应用于自主系统——新的工具和指标正在涌现。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;学什么&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;场景测试：模拟真实世界情况&lt;/li&gt;
&lt;li&gt;TruLens 等工具：推理步骤检查、结果测量&lt;/li&gt;
&lt;li&gt;定量指标：成功率、完成时间&lt;/li&gt;
&lt;li&gt;定性分析：推理质量、失败模式&lt;/li&gt;
&lt;li&gt;负责任的 AI：偏见、安全、合规&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;怎么学&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;基础（3 周）&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;学习 agent 评估的基本原则&lt;/li&gt;
&lt;li&gt;掌握 TruLens 等工具&lt;/li&gt;
&lt;li&gt;建立你的第一个测试套件&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;实践（4 周）&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;设计场景测试用例&lt;/li&gt;
&lt;li&gt;收集定量与定性指标&lt;/li&gt;
&lt;li&gt;建立持续评估流程&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;进阶（持续）&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;构建自动化评估流水线&lt;/li&gt;
&lt;li&gt;实现偏见检测&lt;/li&gt;
&lt;li&gt;建立合规检查清单&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;市场要求&lt;/strong&gt;：到 2026 年，组织将在将 agents 部署到生产环境之前期望明确的验证策略。评估不再是可选的——它是基础。&lt;/p&gt;
&lt;h3 id=&#34;第六优先级agent-可观测性与生产部署&#34;&gt;第六优先级：Agent 可观测性与生产部署
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;为什么重要&lt;/strong&gt;：
概念验证 agents 很容易。生产 agents 很难。大规模部署需要强大的工程纪律和完全透明。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;学什么&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可观测性工具：LangSmith、Helicone、TruLens&lt;/li&gt;
&lt;li&gt;MLOps 原则：提示词的 CI/CD、分阶段部署、回滚策略&lt;/li&gt;
&lt;li&gt;安全机制：沙箱、人在回路升级&lt;/li&gt;
&lt;li&gt;版本控制：提示词、工具、配置&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;怎么学&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;监控基础（2 周）&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;集成 LangSmith 或类似工具&lt;/li&gt;
&lt;li&gt;设置基本指标（延迟、成功率）&lt;/li&gt;
&lt;li&gt;构建第一个仪表板&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;生产部署（4 周）&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;实现提示词版本控制&lt;/li&gt;
&lt;li&gt;建立分阶段部署流程&lt;/li&gt;
&lt;li&gt;添加安全护栏与升级路径&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;持续优化（持续）&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;分析行为随时间的变化&lt;/li&gt;
&lt;li&gt;检测漂移或性能下降&lt;/li&gt;
&lt;li&gt;实现自动化修复&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;关键洞察&lt;/strong&gt;：生产就绪将实验与现实世界影响区分开来。早期投资可靠性和治理的团队将移动得更快——风险更小。&lt;/p&gt;
&lt;h2 id=&#34;三不同岗位的技能侧重&#34;&gt;三、不同岗位的技能侧重&lt;sup id=&#34;fnref:6&#34;&gt;&lt;a href=&#34;#fn:6&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;6&lt;/a&gt;&lt;/sup&gt;
&lt;/h2&gt;&lt;p&gt;基于 ODSC 对不同角色的技能需求分析，以下是针对不同岗位的建议：&lt;/p&gt;
&lt;h3 id=&#34;软件工程师&#34;&gt;软件工程师
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;重点关注&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agent 编排与架构设计&lt;/li&gt;
&lt;li&gt;工具集成与 API 设计&lt;/li&gt;
&lt;li&gt;代码审查与质量把控&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;学习路径&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;掌握主流框架（LangChain/CrewAI）&lt;/li&gt;
&lt;li&gt;构建自己的 agent 工具箱&lt;/li&gt;
&lt;li&gt;学习多 agent 协作模式&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;aiml-工程师&#34;&gt;AI/ML 工程师
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;重点关注&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agent 记忆系统设计&lt;/li&gt;
&lt;li&gt;高级 RAG 实现&lt;/li&gt;
&lt;li&gt;模型选择与优化&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;学习路径&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;深入理解向量数据库&lt;/li&gt;
&lt;li&gt;掌握 RAG 进阶技巧&lt;/li&gt;
&lt;li&gt;构建自定义评估流水线&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;技术管理者&#34;&gt;技术管理者
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;重点关注&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agent 安全与治理&lt;/li&gt;
&lt;li&gt;团队技能转型&lt;/li&gt;
&lt;li&gt;生产部署策略&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;学习路径&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;理解 agent 风险与缓解措施&lt;/li&gt;
&lt;li&gt;制定团队培训计划&lt;/li&gt;
&lt;li&gt;建立评估与审计框架&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;产品经理&#34;&gt;产品经理
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;重点关注&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agent 能力边界&lt;/li&gt;
&lt;li&gt;用户体验设计&lt;/li&gt;
&lt;li&gt;业务价值对齐&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;学习路径&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;理解 agent 能力与限制&lt;/li&gt;
&lt;li&gt;设计 agent 友好的产品流程&lt;/li&gt;
&lt;li&gt;定义成功指标&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;四职业转型从-prompt-engineer-到-ai-architect&#34;&gt;四、职业转型：从 Prompt Engineer 到 AI Architect
&lt;/h2&gt;&lt;h3 id=&#34;正在消失的技能&#34;&gt;正在消失的技能
&lt;/h3&gt;&lt;p&gt;❌ &lt;strong&gt;不再重要&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;记忆语法&lt;/li&gt;
&lt;li&gt;编写样板代码&lt;/li&gt;
&lt;li&gt;手动测试&lt;/li&gt;
&lt;li&gt;基础文档编写&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;正在升值的技能&#34;&gt;正在升值的技能
&lt;/h3&gt;&lt;p&gt;✅ &lt;strong&gt;更加重要&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;系统设计&lt;/strong&gt;：agents 执行，你架构&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;提示工程&lt;/strong&gt;：清晰的规格 = 更好的输出&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码审查&lt;/strong&gt;：你是最终质量关口&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agent 编排&lt;/strong&gt;：管理多个 AI 工作者&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;职业发展路径&#34;&gt;职业发展路径
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;初级开发者 → AI 编排者&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;从写 CRUD 端点转向设计 agent 工作流&lt;/li&gt;
&lt;li&gt;学习与 AI 协作，而非对抗&lt;/li&gt;
&lt;li&gt;培养领域专长（AI 不了解你的业务）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;高级开发者 → AI 架构师&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;专注于架构决策与业务逻辑设计&lt;/li&gt;
&lt;li&gt;利用 agent 实现真正的 10x 生产力&lt;/li&gt;
&lt;li&gt;从编码转向战略思考&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;五实践建议如何在工作中提升&#34;&gt;五、实践建议：如何在工作中提升
&lt;/h2&gt;&lt;h3 id=&#34;1-从小项目开始&#34;&gt;1. 从小项目开始
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Week 1-2&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用 LangChain 构建一个简单的 agent&lt;/li&gt;
&lt;li&gt;让它完成一个重复性任务（如数据清理）&lt;/li&gt;
&lt;li&gt;记录失败与学习点&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Week 3-4&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;为你的 agent 添加记忆&lt;/li&gt;
&lt;li&gt;实现 RAG 以访问业务知识&lt;/li&gt;
&lt;li&gt;测试不同的检索策略&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Week 5-8&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;构建多 agent 系统&lt;/li&gt;
&lt;li&gt;一个 agent 规划，一个执行，一个验证&lt;/li&gt;
&lt;li&gt;优化协作模式&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2-在实际项目中应用&#34;&gt;2. 在实际项目中应用
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;选择合适的项目&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✅ 规则明确的业务流程&lt;/li&gt;
&lt;li&gt;✅ 需要多步骤协调的任务&lt;/li&gt;
&lt;li&gt;✅ 可以容忍一定失败率的场景&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;避免&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;❌ 高风险安全关键系统&lt;/li&gt;
&lt;li&gt;❌ 需要完美创意的任务&lt;/li&gt;
&lt;li&gt;❌ 频繁变化的业务逻辑&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;3-建立学习社区&#34;&gt;3. 建立学习社区
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;参与 Agentic AI Summit 等活动&lt;/li&gt;
&lt;li&gt;加入 LangChain、CrewAI 社区&lt;/li&gt;
&lt;li&gt;分享你的 agent 架构与经验&lt;/li&gt;
&lt;li&gt;向他人学习最佳实践&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;4-持续实验&#34;&gt;4. 持续实验
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;每周尝试一个新的 agent 框架&lt;/li&gt;
&lt;li&gt;每月构建一个小型 agent 项目&lt;/li&gt;
&lt;li&gt;每季度回顾与优化你的技能栈&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;六工具推荐2026-年-1-月版&#34;&gt;六、工具推荐：2026 年 1 月版&lt;sup id=&#34;fnref:7&#34;&gt;&lt;a href=&#34;#fn:7&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;7&lt;/a&gt;&lt;/sup&gt;
&lt;/h2&gt;&lt;p&gt;以下工具推荐基于 ODSC 和 Dev.to 文章中的实际使用经验：&lt;/p&gt;
&lt;h3 id=&#34;agent-框架&#34;&gt;Agent 框架
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;LangChain&lt;/strong&gt;：最流行，强调模块化&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LangGraph&lt;/strong&gt;：图式控制流，复杂场景首选&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CrewAI&lt;/strong&gt;：专注多 agent 协作&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AutoGen&lt;/strong&gt;：微软出品，对话式多 agent&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;记忆与-rag&#34;&gt;记忆与 RAG
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;LlamaIndex&lt;/strong&gt;：数据框架，RAG 友好&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pinecone&lt;/strong&gt;：托管向量数据库&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Weaviate&lt;/strong&gt;：开源向量搜索&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;可观测性&#34;&gt;可观测性
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;LangSmith&lt;/strong&gt;：LangChain 官方平台&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Helicone&lt;/strong&gt;：开源监控工具&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TruLens&lt;/strong&gt;：评估与调试&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;开发环境&#34;&gt;开发环境
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cursor&lt;/strong&gt;：深度 IDE 集成，个人开发者首选&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub Copilot Workspace&lt;/strong&gt;：团队协作&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Claude Code&lt;/strong&gt;：复杂重构最佳&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Windsurf&lt;/strong&gt;：全栈项目，多 agent 协调&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;七uncomfortable-真相初级岗位的消失&#34;&gt;七、uncomfortable 真相：初级岗位的消失&lt;sup id=&#34;fnref:8&#34;&gt;&lt;a href=&#34;#fn:8&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;8&lt;/a&gt;&lt;/sup&gt;
&lt;/h2&gt;&lt;p&gt;基于 Dev.to 文章的深度分析，这是一个需要直面的问题：&lt;/p&gt;
&lt;h3 id=&#34;正在发生什么&#34;&gt;正在发生什么
&lt;/h3&gt;&lt;p&gt;初级开发者角色正在消失。&lt;/p&gt;
&lt;p&gt;不是因为 AI &amp;ldquo;取代开发者&amp;rdquo;——而是因为&amp;quot;开发者&amp;quot;的定义正在改变。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2024 年&lt;/strong&gt;：初级开发编写 CRUD 端点、修复 bug
&lt;strong&gt;2026 年&lt;/strong&gt;：AI agents 做这些工作。&amp;ldquo;初级&amp;quot;工作被自动化。&lt;/p&gt;
&lt;h3 id=&#34;还剩下什么&#34;&gt;还剩下什么？
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;架构决策&lt;/li&gt;
&lt;li&gt;业务逻辑设计&lt;/li&gt;
&lt;li&gt;性能优化&lt;/li&gt;
&lt;li&gt;安全审查&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;这些不是初级任务。它们需要经验。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;给初级开发者的建议&#34;&gt;给初级开发者的建议
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;不要恐慌。但要适应。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;聚焦于：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;理解系统，而不只是代码&lt;/li&gt;
&lt;li&gt;学习与 AI 协作，而非对抗&lt;/li&gt;
&lt;li&gt;建立领域专长（AI 不了解你的业务）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;给高级开发者的建议&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;这是你的时刻。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;你现在可以：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;以 10x 速度交付&lt;/li&gt;
&lt;li&gt;专注于架构&lt;/li&gt;
&lt;li&gt;消除繁重工作&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但你需要快速学习 agent 编排。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;给管理者的建议&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;重新思考招聘。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;你不再需要&amp;quot;代码编写者&amp;rdquo;。你需要：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;系统架构师&lt;/li&gt;
&lt;li&gt;AI 编排者&lt;/li&gt;
&lt;li&gt;领域专家&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;八结论agentic-未来不是在旁观&#34;&gt;八、结论：Agentic 未来不是在旁观
&lt;/h2&gt;&lt;p&gt;AI agents 不是即将到来。&lt;strong&gt;它们已经在这里。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;而且它们不是在取代开发者——它们在重新定义&amp;quot;开发&amp;quot;的含义。&lt;/p&gt;
&lt;p&gt;2026 年蓬勃发展的人，不是那些写最多代码的人。而是那些&lt;strong&gt;编排最佳系统&lt;/strong&gt;的人。&lt;/p&gt;
&lt;h2 id=&#34;延伸资源&#34;&gt;延伸资源
&lt;/h2&gt;&lt;h3 id=&#34;学习材料&#34;&gt;学习材料
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://odsc.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Agentic AI Summit 2026&lt;/a&gt; - 3 周实践学习体验&lt;/li&gt;
&lt;li&gt;LangChain 官方文档&lt;/li&gt;
&lt;li&gt;Anthropic Agent 设计指南&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;工具文档&#34;&gt;工具文档
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://js.langchain.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;LangChain&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.crewai.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CrewAI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.llamaindex.ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;LlamaIndex&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;社区&#34;&gt;社区
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;r/LangChain on Reddit&lt;/li&gt;
&lt;li&gt;Discord 上的 AI Agent 开发者社区&lt;/li&gt;
&lt;li&gt;ODSC 网络研讨会&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;参考文献&#34;&gt;参考文献
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Mysterious Xuanwu. &lt;em&gt;AI Agents Are Taking Over Development in 2026 — Here&amp;rsquo;s What Changed&lt;/em&gt;. DEV Community. Jan 4, 2026. &lt;a class=&#34;link&#34; href=&#34;https://dev.to/mysterious_xuanwu_5a00815/ai-agents-are-taking-over-development-in-2026-heres-what-changed-4mop&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://dev.to/mysterious_xuanwu_5a00815/ai-agents-are-taking-over-development-in-2026-heres-what-changed-4mop&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;ODSC. &lt;em&gt;The Core Skills AI Practitioners Need for Agentic AI in 2026&lt;/em&gt;. Medium. Jan 8, 2026. &lt;a class=&#34;link&#34; href=&#34;https://odsc.medium.com/the-core-skills-ai-practitioners-need-for-agentic-ai-in-2026-ce7f6a1ac617&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://odsc.medium.com/the-core-skills-ai-practitioners-need-for-agentic-ai-in-2026-ce7f6a1ac617&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Mysterious Xuanwu. &lt;em&gt;AI Agents Are Taking Over Development in 2026 — Here&amp;rsquo;s What Changed&lt;/em&gt;. &lt;a class=&#34;link&#34; href=&#34;https://dev.to/mysterious_xuanwu_5a00815/ai-agents-are-taking-over-development-in-2026-heres-what-changed-4mop&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://dev.to/mysterious_xuanwu_5a00815/ai-agents-are-taking-over-development-in-2026-heres-what-changed-4mop&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;ODSC. &lt;em&gt;Agentic AI 2026 Architecture Fundamentals&lt;/em&gt;. &lt;a class=&#34;link&#34; href=&#34;https://odsc.medium.com/the-core-skills-ai-practitioners-need-for-agentic-ai-in-2026-ce7f6a1ac617&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://odsc.medium.com/the-core-skills-ai-practitioners-need-for-agentic-ai-in-2026-ce7f6a1ac617&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;ReAct Paper: Yao et al. &lt;em&gt;ReAct: Synergizing Reasoning and Acting in Language Models&lt;/em&gt;. arXiv:2210.03629. &lt;a class=&#34;link&#34; href=&#34;https://arxiv.org/abs/2210.03629&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://arxiv.org/abs/2210.03629&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;ODSC. &lt;em&gt;Agent Memory Systems&lt;/em&gt;. &lt;a class=&#34;link&#34; href=&#34;https://odsc.medium.com/the-core-skills-ai-practitioners-need-for-agentic-ai-in-2026-ce7f6a1ac617&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://odsc.medium.com/the-core-skills-ai-practitioners-need-for-agentic-ai-in-2026-ce7f6a1ac617&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Pinecone、Weaviate 官方文档&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;ODSC. &lt;em&gt;Agent Evaluation &amp;amp; Testing&lt;/em&gt;. &lt;a class=&#34;link&#34; href=&#34;https://odsc.medium.com/the-core-skills-ai-practitioners-need-for-agentic-ai-in-2026-ce7f6a1ac617&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://odsc.medium.com/the-core-skills-ai-practitioners-need-for-agentic-ai-in-2026-ce7f6a1ac617&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;TruLens 官方文档与最佳实践&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://odsc.medium.com/the-core-skills-ai-practitioners-need-for-agentic-ai-in-2026-ce7f6a1ac617&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://odsc.medium.com/the-core-skills-ai-practitioners-need-for-agentic-ai-in-2026-ce7f6a1ac617&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Mysterious Xuanwu. &lt;em&gt;The Tools Actually Worth Using&lt;/em&gt;. &lt;a class=&#34;link&#34; href=&#34;https://dev.to/mysterious_xuanwu_5a00815/ai-agents-are-taking-over-development-in-2026-heres-what-changed-4mop&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://dev.to/mysterious_xuanwu_5a00815/ai-agents-are-taking-over-development-in-2026-heres-what-changed-4mop&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;ODSC. &lt;em&gt;Popular AI Agent Frameworks&lt;/em&gt;. &lt;a class=&#34;link&#34; href=&#34;https://odsc.medium.com/the-core-skills-ai-practitioners-need-for-agentic-ai-in-2026-ce7f6a1ac617&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://odsc.medium.com/the-core-skills-ai-practitioners-need-for-agentic-ai-in-2026-ce7f6a1ac617&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Mysterious Xuanwu. &lt;em&gt;The Uncomfortable Truth&lt;/em&gt;. &lt;a class=&#34;link&#34; href=&#34;https://dev.to/mysterious_xuanwu_5a00815/ai-agents-are-taking-over-development-in-2026-heres-what-changed-4mop&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://dev.to/mysterious_xuanwu_5a00815/ai-agents-are-taking-over-development-in-2026-heres-what-changed-4mop&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;该部分特别讨论了&amp;quot;junior developer roles are disappearing&amp;quot;的现象&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;核心参考文章&#34;&gt;核心参考文章
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;1. The Core Skills AI Practitioners Need for Agentic AI in 2026&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;来源&lt;/strong&gt;：ODSC (Open Data Science)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：https://odsc.medium.com/the-core-skills-ai-practitioners-need-for-agentic-ai-in-2026-ce7f6a1ac617&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;发布时间&lt;/strong&gt;：2026年1月8日&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;核心内容&lt;/strong&gt;：详细分析了 12 项 Agentic AI 核心技能，包括架构设计、记忆系统、多 agent 协作、评估测试等&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;2. AI Agents Are Taking Over Development in 2026 — Here&amp;rsquo;s What Changed&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;来源&lt;/strong&gt;：DEV Community&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者&lt;/strong&gt;：Mysterious Xuanwu&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：https://dev.to/mysterious_xuanwu_5a00815/ai-agents-are-taking-over-development-in-2026-heres-what-changed-4mop&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;发布时间&lt;/strong&gt;：2026年1月4日&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;核心内容&lt;/strong&gt;：从开发者视角描述 AI agents 从工具到合作伙伴的转变，包含真实案例和工作流对比&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;本文基于 ODSC 和 Dev.to 的最新分析，结合 2026 年 1 月的 AI 从业者实际经验整理而成。所有引用链接已在参考文献中列出。&lt;/em&gt;&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;本文核心观点参考了 ODSC 和 Dev.to 的最新分析：&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;真实案例改编自 DEV Community 文章中的实际工作流对比：&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref1:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:3&#34;&gt;
&lt;p&gt;Agent 架构设计原则综合了以下资料：&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:4&#34;&gt;
&lt;p&gt;记忆系统设计参考：&amp;#160;&lt;a href=&#34;#fnref:4&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:5&#34;&gt;
&lt;p&gt;评估与测试方法基于：&amp;#160;&lt;a href=&#34;#fnref:5&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:6&#34;&gt;
&lt;p&gt;不同岗位技能侧重参考 ODSC 对 Agentic AI 技能需求的分析：&amp;#160;&lt;a href=&#34;#fnref:6&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:7&#34;&gt;
&lt;p&gt;工具推荐综合了 ODSC 和 Dev.to 文章中的实际使用经验和对比：&amp;#160;&lt;a href=&#34;#fnref:7&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:8&#34;&gt;
&lt;p&gt;关于初级岗位消失的分析基于 Dev.to 文章的深度观察：&amp;#160;&lt;a href=&#34;#fnref:8&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
        </item>
        <item>
        <title>Vibe Coding完整指南2026：用Claude Code从零到一做出你的第一个App</title>
        <link>https://blog.ccino.org/p/vibe-coding-guide-2026-claude-code/</link>
        <pubDate>Sun, 01 Feb 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/vibe-coding-guide-2026-claude-code/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/vibe-coding-guide-2026-claude-code/imgs/cover.png" alt="Featured image of post Vibe Coding完整指南2026：用Claude Code从零到一做出你的第一个App" /&gt;
    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;Vibe Coding就是用描述性语言来编程，而不是一行行写代码。你告诉AI你想要什么功能，然后AI帮你实现出来。&amp;rdquo;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;2025年初，AI研究员Andrej Karpathy提出了一个新概念——&lt;strong&gt;Vibe Coding（氛围编程）&lt;/strong&gt;。这个词迅速在开发者社区走红，成为2025-2026年最热门的AI开发范式。&lt;/p&gt;
&lt;p&gt;与传统编程不同，Vibe Coding的核心是&lt;strong&gt;用自然语言描述你的想法，AI负责生成代码&lt;/strong&gt;。你的角色从&amp;quot;代码编写者&amp;quot;转变为&amp;quot;产品设计者&amp;quot;——你关注的是&amp;quot;做什么&amp;quot;，而不是&amp;quot;怎么做&amp;quot;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/vibe-coding-guide-2026-claude-code/imgs/cover.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/vibe-coding-guide-2026-claude-code/imgs/cover_hu_6fca5498527ee33d.png 480w, https://blog.ccino.org/p/vibe-coding-guide-2026-claude-code/imgs/cover_hu_dd5fea14514b0b2d.png 1024w&#34;
	loading=&#34;lazy&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;什么是vibe-coding&#34;&gt;什么是Vibe Coding？
&lt;/h2&gt;&lt;h3 id=&#34;vibe-coding的两种形态&#34;&gt;Vibe Coding的两种形态
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;&amp;ldquo;纯&amp;rdquo; Vibe Coding&lt;/strong&gt;：在探索阶段，你可能只需要告诉AI&amp;quot;做一个显示待办事项的App&amp;quot;，然后看着它生成代码、运行、调试，直到可以工作。这个过程中，你不需要懂编程，只需要知道怎么用自然语言准确表达需求。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;专业Vibe Coding&lt;/strong&gt;：当项目变得复杂时，Vibe Coding演变成一种协作模式。你用AI处理重复性工作、生成代码骨架、自动化测试，但保留对架构决策的控制权。Claude Code的Plan Mode就是为这种场景设计的——它会先研究、规划，然后才执行。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/vibe-coding-guide-2026-claude-code/imgs/01-comparison-vibe-coding-types.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/vibe-coding-guide-2026-claude-code/imgs/01-comparison-vibe-coding-types_hu_ea185118f88f1672.png 480w, https://blog.ccino.org/p/vibe-coding-guide-2026-claude-code/imgs/01-comparison-vibe-coding-types_hu_831228bf3b675f61.png 1024w&#34;
	loading=&#34;lazy&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;为什么选择claude-code进行vibe-coding&#34;&gt;为什么选择Claude Code进行Vibe Coding？
&lt;/h2&gt;&lt;p&gt;市面上的AI编程工具那么多，为什么我把Claude Code作为Vibe Coding的首选？因为它有几个独特优势：&lt;/p&gt;
&lt;h3 id=&#34;1-真正的对话式开发体验&#34;&gt;1. 真正的&amp;quot;对话式&amp;quot;开发体验
&lt;/h3&gt;&lt;p&gt;Claude Code不是简单的代码补全工具，而是一个能够理解项目全貌的AI助手。你可以：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用自然语言描述整个项目的需求&lt;/li&gt;
&lt;li&gt;让它理解项目结构和代码风格&lt;/li&gt;
&lt;li&gt;跨文件进行复杂重构&lt;/li&gt;
&lt;li&gt;处理命令行操作和Git工作流&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2-plan-mode安全保障&#34;&gt;2. Plan Mode安全保障
&lt;/h3&gt;&lt;p&gt;在Claude Code中按&lt;code&gt;Shift+Tab&lt;/code&gt;两次，可以进入&lt;strong&gt;Plan Mode&lt;/strong&gt;。这是Vibe Coding的安全网：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;用户：&amp;#34;帮我重构用户认证模块&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Claude Code（Plan Mode）：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ 先研究现有代码结构
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ 制定详细的修改计划
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ 展示给你确认
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ 确认后才执行修改
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这个设计让你在享受Vibe Coding便利的同时，不会因为AI的&amp;quot;过度热情&amp;quot;而破坏项目。&lt;/p&gt;
&lt;h3 id=&#34;3-claudemd持久化配置&#34;&gt;3. CLAUDE.md持久化配置
&lt;/h3&gt;&lt;p&gt;你可以在项目根目录创建一个&lt;code&gt;CLAUDE.md&lt;/code&gt;文件，记录：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gh&#34;&gt;# 项目偏好
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 技术栈
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 前端：React + TypeScript
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 后端：Node.js + Express
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 样式：Tailwind CSS
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 代码风格
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 组件使用Functional Component
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 优先使用Hooks而非Class
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 异步操作使用async/await
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 偏好示例
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Good: 简单的淡入动画效果
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Bad: 复杂的旋转和弹跳效果
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这个文件让Claude Code&amp;quot;记住&amp;quot;你的偏好，每次对话都能保持一致的输出风格。&lt;/p&gt;
&lt;h3 id=&#34;4-终端集成&#34;&gt;4. 终端集成
&lt;/h3&gt;&lt;p&gt;Claude Code直接在终端运行，可以：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;执行命令行操作&lt;/li&gt;
&lt;li&gt;运行测试和构建&lt;/li&gt;
&lt;li&gt;管理Git操作&lt;/li&gt;
&lt;li&gt;调试运行中的服务&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这意味着你不需要在编辑器和终端之间反复切换，整个开发流程可以在一个界面完成。&lt;/p&gt;
&lt;h2 id=&#34;claude-code核心功能详解&#34;&gt;Claude Code核心功能详解
&lt;/h2&gt;&lt;h3 id=&#34;基本用法从hello-world开始&#34;&gt;基本用法：从Hello World开始
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 安装Claude Code&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install -g @anthropic-ai/claude-code
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 进入项目目录&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; my-project
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 启动Claude Code&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;启动后，你可以直接用自然语言对话：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;用户：创建一个显示&amp;#34;Hello, Vibe Coding!&amp;#34;的React组件
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Claude Code：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ 生成组件代码
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ 询问是否保存到文件
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ 确认后写入src/components/Hello.tsx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;用plan-mode处理复杂任务&#34;&gt;用Plan Mode处理复杂任务
&lt;/h3&gt;&lt;p&gt;对于可能影响大量代码的操作，一定要用Plan Mode：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;用户（按Shift+Tab两次进入Plan Mode）：帮我把所有class组件改成函数组件
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Claude Code：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1. 扫描项目中的所有React组件
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2. 识别class组件列表
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3. 为每个组件生成转换计划
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4. 展示转换策略（保留生命周期方法对应关系）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;5. 等待你确认或修改
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;6. 确认后逐个转换
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;用sub-agent处理并行任务&#34;&gt;用Sub-Agent处理并行任务
&lt;/h3&gt;&lt;p&gt;Claude Code支持并行运行多个子任务，适合同时开发多个功能：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 在对话中启用并行模式&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/parallel
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;用户：同时完成这三件事：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1. 创建用户登录页面
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2. 创建用户注册页面
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3. 创建密码重置页面
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;mcp集成扩展ai的能力边界&#34;&gt;MCP集成：扩展AI的能力边界
&lt;/h3&gt;&lt;p&gt;MCP（Model Context Protocol）让你可以把外部工具和能力接入Claude Code：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 安装MCP服务器&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude mcp add filesystem
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude mcp add github
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude mcp add database
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 然后就可以：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;用户：从数据库读取用户表结构，然后用它来生成API文档
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;实操从想法到可运行app&#34;&gt;实操：从想法到可运行App
&lt;/h2&gt;&lt;p&gt;让我用一个完整的例子，演示如何用Claude Code从零开始做一个待办事项App。&lt;/p&gt;
&lt;h3 id=&#34;第一步启动项目&#34;&gt;第一步：启动项目
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;用户：帮我创建一个新的React + TypeScript项目，使用Vite构建
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Claude Code：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ 检查是否已安装Node.js
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ 运行npm create vite@latest todo-app -- --template react-ts
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ 安装依赖
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ 创建项目结构
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;第二步定义核心功能&#34;&gt;第二步：定义核心功能
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;用户：在src目录下创建以下结构：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- components/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - TodoList.tsx      # 待办列表
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - TodoItem.tsx      # 单个待办
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - AddTodo.tsx       # 添加表单
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- App.tsx             # 主组件
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;用户：先创建TodoList.tsx，它需要：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 显示所有待办事项
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 支持标记完成
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 支持删除
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 支持筛选（全部/进行中/已完成）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;第三步迭代改进&#34;&gt;第三步：迭代改进
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;用户：现在创建&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;AddTodo&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tsx表单组件&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;，需要：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;输入框和提交按钮&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;按回车也可以提交&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;添加&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;loading状态&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;用户：帮我添加本地存储功能，刷新后数据不丢失&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;第四步样式美化&#34;&gt;第四步：样式美化
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;用户：用Tailwind CSS美化一下界面：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 卡片式布局
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 渐变背景
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 动画效果
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 移动端适配
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;完整项目结构&#34;&gt;完整项目结构
&lt;/h3&gt;&lt;p&gt;最终，你会得到这样的项目：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;todo-app/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── src/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── components/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   │   ├── TodoList.tsx
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   │   ├── TodoItem.tsx
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   │   └── AddTodo.tsx
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── App.tsx
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── App.css
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   └── main.tsx
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── package.json
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── vite.config.ts
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;整个过程你只需要用自然语言描述需求，Claude Code帮你完成所有代码编写。&lt;/p&gt;
&lt;h2 id=&#34;进阶技巧让vibe-coding更高效&#34;&gt;进阶技巧：让Vibe Coding更高效
&lt;/h2&gt;&lt;h3 id=&#34;1-写好claudemd&#34;&gt;1. 写好CLAUDE.md
&lt;/h3&gt;&lt;p&gt;CLAUDE.md是Claude Code的&amp;quot;项目说明书&amp;quot;。一个好的CLAUDE.md应该包含：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gh&#34;&gt;# 项目说明
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 目标
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;一个帮助用户管理个人财务的Web应用
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 技术栈
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; React 18 + TypeScript
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Vite构建
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Tailwind CSS
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; LocalStorage存储
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 架构偏好
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 组件文件以.tsx为后缀
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Hooks放在hooks/目录
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 工具函数放在utils/目录
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; API调用统一管理
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 代码风格
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 变量使用camelCase
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 常量使用UPPER_SNAKE_CASE
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 组件使用函数式+Hooks
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 样式使用Tailwind类名
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 不希望出现
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; console.log调试代码
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; any类型（除非绝对必要）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 超过100行的组件
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;2-使用会话上下文&#34;&gt;2. 使用会话上下文
&lt;/h3&gt;&lt;p&gt;Claude Code会记住对话历史，你可以利用这一点：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;用户：创建用户类型定义
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Claude Code：创建types/User.ts
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;用户：基于这个类型，创建用户服务类
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Claude Code：（还记得User类型）创建services/UserService.ts
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;用户：添加CRUD方法
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Claude Code：（记得UserService）添加create、read、update、delete方法
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;3-结合git进行安全实验&#34;&gt;3. 结合Git进行安全实验
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 创建新分支进行实验&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude: git checkout -b feature/new-ui
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 实验完成后&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude: git add . &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; git commit -m &lt;span class=&#34;s2&#34;&gt;&amp;#34;feat: 添加新UI&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude: git push &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; 发起PR
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;4-跨会话的claudemd迭代&#34;&gt;4. 跨会话的CLAUDE.md迭代
&lt;/h3&gt;&lt;p&gt;随着项目发展，不断更新CLAUDE.md：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gh&#34;&gt;# 更新记录
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 2026-02-01
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 添加TypeScript严格模式要求
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 新增API错误处理规范
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 2026-01-15
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 初始版本
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;5-调试技巧&#34;&gt;5. 调试技巧
&lt;/h3&gt;&lt;p&gt;当代码出问题时报：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;用户：页面显示白屏，控制台报错&amp;#34;Cannot read property &amp;#39;map&amp;#39; of undefined&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Claude Code：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ 分析错误堆栈
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ 检查是哪个组件
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ 发现是数据未加载时渲染了.map
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ 添加空状态判断
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ 重写代码并测试
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;vibe-coding工具横向对比2026最新版&#34;&gt;Vibe Coding工具横向对比（2026最新版）
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;工具&lt;/th&gt;
          &lt;th&gt;核心特点&lt;/th&gt;
          &lt;th&gt;适合场景&lt;/th&gt;
          &lt;th&gt;技术门槛&lt;/th&gt;
          &lt;th&gt;定价&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Claude Code&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;Plan Mode安全机制、终端集成、MCP支持&lt;/td&gt;
          &lt;td&gt;专业开发、生产项目、企业级&lt;/td&gt;
          &lt;td&gt;中高&lt;/td&gt;
          &lt;td&gt;免费/$20月&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Cursor&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;VSCode深度集成、Composer模式、Index功能&lt;/td&gt;
          &lt;td&gt;习惯VSCode的开发者&lt;/td&gt;
          &lt;td&gt;中&lt;/td&gt;
          &lt;td&gt;免费/$20月&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Windsurf&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;Flow状态保持、深度上下文理解&lt;/td&gt;
          &lt;td&gt;复杂多文件项目&lt;/td&gt;
          &lt;td&gt;中&lt;/td&gt;
          &lt;td&gt;免费/$19月&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Bolt.new&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;浏览器内完整开发环境、可直接部署&lt;/td&gt;
          &lt;td&gt;初学者、快速原型&lt;/td&gt;
          &lt;td&gt;低&lt;/td&gt;
          &lt;td&gt;免费/$29月&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Lovable&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;全栈生成、UI精美、托管服务&lt;/td&gt;
          &lt;td&gt;非技术用户、快速产品&lt;/td&gt;
          &lt;td&gt;低&lt;/td&gt;
          &lt;td&gt;免费/$19月&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;V0 (Vercel)&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;设计优先、Shadcn UI组件生成&lt;/td&gt;
          &lt;td&gt;设计师、前端UI开发&lt;/td&gt;
          &lt;td&gt;低-中&lt;/td&gt;
          &lt;td&gt;免费/$30月&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Replit&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;在线IDE、AI副驾驶、协作功能&lt;/td&gt;
          &lt;td&gt;学习者、在线协作&lt;/td&gt;
          &lt;td&gt;低&lt;/td&gt;
          &lt;td&gt;免费/$15月&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Base44&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;完整SaaS应用生成&lt;/td&gt;
          &lt;td&gt;创业者、快速MVP&lt;/td&gt;
          &lt;td&gt;低&lt;/td&gt;
          &lt;td&gt;免费/$49月&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;各工具详细对比&#34;&gt;各工具详细对比
&lt;/h3&gt;&lt;h4 id=&#34;1-claude-code-vs-cursor-vs-windsurf专业级&#34;&gt;1. Claude Code vs Cursor vs Windsurf（专业级）
&lt;/h4&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;对比维度&lt;/th&gt;
          &lt;th&gt;Claude Code&lt;/th&gt;
          &lt;th&gt;Cursor&lt;/th&gt;
          &lt;th&gt;Windsurf&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;安全机制&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;Plan Mode（强制确认）&lt;/td&gt;
          &lt;td&gt;审批模式（可选）&lt;/td&gt;
          &lt;td&gt;Flow Checkpoint&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;运行环境&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;终端CLI&lt;/td&gt;
          &lt;td&gt;VSCode扩展&lt;/td&gt;
          &lt;td&gt;VSCode扩展&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;上下文理解&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;项目级全局理解&lt;/td&gt;
          &lt;td&gt;Index索引加速&lt;/td&gt;
          &lt;td&gt;深度上下文保持&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;多文件重构&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;强&lt;/td&gt;
          &lt;td&gt;强&lt;/td&gt;
          &lt;td&gt;中等&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Git集成&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;原生终端&lt;/td&gt;
          &lt;td&gt;扩展支持&lt;/td&gt;
          &lt;td&gt;扩展支持&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;MCP支持&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;✅ 原生&lt;/td&gt;
          &lt;td&gt;❌&lt;/td&gt;
          &lt;td&gt;❌&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;选择建议&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;重视安全控制 → &lt;strong&gt;Claude Code&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;重视编辑器体验 → &lt;strong&gt;Cursor&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;重视上下文连贯性 → &lt;strong&gt;Windsurf&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;2-初学者工具对比&#34;&gt;2. 初学者工具对比
&lt;/h4&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;对比维度&lt;/th&gt;
          &lt;th&gt;Bolt.new&lt;/th&gt;
          &lt;th&gt;Lovable&lt;/th&gt;
          &lt;th&gt;V0&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;部署方式&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;自动托管&lt;/td&gt;
          &lt;td&gt;自动托管&lt;/td&gt;
          &lt;td&gt;导出代码&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;UI美观度&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;⭐⭐⭐⭐&lt;/td&gt;
          &lt;td&gt;⭐⭐⭐⭐⭐&lt;/td&gt;
          &lt;td&gt;⭐⭐⭐⭐⭐&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;全栈支持&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;✅ 前后端+数据库&lt;/td&gt;
          &lt;td&gt;✅ 完整应用&lt;/td&gt;
          &lt;td&gt;✅ 主要前端&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;学习成本&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;最低&lt;/td&gt;
          &lt;td&gt;低&lt;/td&gt;
          &lt;td&gt;中等&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;代码质量&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;⭐⭐⭐&lt;/td&gt;
          &lt;td&gt;⭐⭐⭐⭐&lt;/td&gt;
          &lt;td&gt;⭐⭐⭐⭐⭐&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 id=&#34;3-选型决策树&#34;&gt;3. 选型决策树
&lt;/h4&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;开始Vibe Coding
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ├─ 我是程序员，想要保留完整控制权
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │     │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │     ├─ 重视安全确认 → Claude Code
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │     ├─ 喜欢VSCode → Cursor
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │     └─ 需要深度上下文 → Windsurf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ├─ 我不是程序员，想要最快做出产品
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │     │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │     ├─ 想要最好看的UI → Lovable / V0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │     ├─ 想要一站式托管 → Bolt.new
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │     └─ 想要做SaaS产品 → Base44
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    └─ 我是学生/学习者
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          └─ Replit（在线协作+学习）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/vibe-coding-guide-2026-claude-code/imgs/02-flowchart-tool-selection.png&#34;
	width=&#34;1200&#34;
	height=&#34;896&#34;
	srcset=&#34;https://blog.ccino.org/p/vibe-coding-guide-2026-claude-code/imgs/02-flowchart-tool-selection_hu_b845af6dd856855c.png 480w, https://blog.ccino.org/p/vibe-coding-guide-2026-claude-code/imgs/02-flowchart-tool-selection_hu_c01d04d866e8bd0a.png 1024w&#34;
	loading=&#34;lazy&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;133&#34;
		data-flex-basis=&#34;321px&#34;
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;2026年工具生态变化&#34;&gt;2026年工具生态变化
&lt;/h3&gt;&lt;p&gt;根据最新趋势，Vibe Coding工具呈现以下特点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;专业化分工&lt;/strong&gt;：通用工具（Claude Code/Cursor）vs 垂直工具（Lovable做UI、Base44做SaaS）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;安全机制普及&lt;/strong&gt;：Plan Mode类的确认机制成为标配&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;托管服务成熟&lt;/strong&gt;：一键部署从&amp;quot;加分项&amp;quot;变成&amp;quot;必备功能&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;价格下降&lt;/strong&gt;：基础功能免费，高级功能付费是主流模式&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;局限性和注意事项&#34;&gt;局限性和注意事项
&lt;/h2&gt;&lt;h3 id=&#34;vibe-coding不是万能的&#34;&gt;Vibe Coding不是万能的
&lt;/h3&gt;&lt;p&gt;虽然Vibe Coding降低了编程门槛，但它不是万能的：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. 复杂架构仍需要专业知识&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;用户：帮我设计一个支持百万并发的分布式系统
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ Claude Code可以生成代码框架
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ 但系统设计、性能调优、容灾方案需要专业人士
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;2. 调试能力有限&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;AI生成的代码出问题时，排查可能比手写代码更难，因为你不够了解代码逻辑。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. 安全性风险&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;用户：帮我加个用户认证功能
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ AI可能生成有安全漏洞的代码
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ 建议：关键安全功能要人工审查或使用成熟库
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;最佳实践建议&#34;&gt;最佳实践建议
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;小步迭代&lt;/strong&gt;：不要一次让AI生成整个项目，分功能逐步开发&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;频繁测试&lt;/strong&gt;：每个功能完成后立即测试，发现问题及时修正&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;版本控制&lt;/strong&gt;：每次大改动都提交Git，便于回滚&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;人工审查&lt;/strong&gt;：核心代码逻辑至少过一遍&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;学习底层&lt;/strong&gt;：用Vibe Coding的同时，了解基本的编程概念&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;从今天开始你的vibe-coding之旅&#34;&gt;从今天开始你的Vibe Coding之旅
&lt;/h2&gt;&lt;p&gt;Vibe Coding代表了一种新的开发范式——&lt;strong&gt;你不需要成为代码专家，但你可以做出专业的产品&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;用Claude Code开始你的第一个项目：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 1. 安装&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install -g @anthropic-ai/claude-code
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 2. 启动&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; your-project
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 3. 开始对话&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;用户：帮我创建一个...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;不要追求一步到位，从一个小功能开始，比如&amp;quot;显示一个Hello World页面&amp;quot;。熟悉流程后，再逐步扩展到更复杂的项目。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;记住&lt;/strong&gt;：Vibe Coding的核心不是&amp;quot;不用写代码&amp;quot;，而是&amp;quot;让AI处理繁琐的工作，让你专注于创造&amp;quot;。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;附录claude-code常用快捷键&#34;&gt;附录：Claude Code常用快捷键
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;快捷键&lt;/th&gt;
          &lt;th&gt;功能&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Cmd/Ctrl + Enter&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;发送长消息&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Shift + Tab&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;进入/退出Plan Mode&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Tab&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;自动补全&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Cmd/Ctrl + K&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;代码编辑建议&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;常见问题&#34;&gt;常见问题
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Q: Claude Code要收费吗？&lt;/strong&gt;
A: 有免费额度。个人Pro版本每月$20，适合重度使用。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q: 国内能用Claude Code吗？&lt;/strong&gt;
A: 需要网络环境。建议配合代理使用。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q: 怎么让Claude Code生成更符合我风格的代码？&lt;/strong&gt;
A: 完善CLAUDE.md文件，多用示例说明偏好。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q: 生成的代码有bug怎么办？&lt;/strong&gt;
A: 直接描述问题让AI修复。复杂问题需要调试定位。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;参考资料&#34;&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://vibecoding.app/blog/vibe-coding-complete-guide&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Vibe Coding Complete Guide 2026&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://code.claude.com/docs/en/common-workflows&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Code官方文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.claudelog.com/faqs/how-to-vibe-code-effectively/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How to Vibe Code Effectively&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>2026 Claude Code 工作流最佳实践：当 AI 写 90% 的代码</title>
        <link>https://blog.ccino.org/p/claude-code-workflow-best-practices-2026/</link>
        <pubDate>Wed, 28 Jan 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/claude-code-workflow-best-practices-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/claude-code-workflow-best-practices-2026/imgs/claude-code-workflow-best-practices-2026-cover.jpg" alt="Featured image of post 2026 Claude Code 工作流最佳实践：当 AI 写 90% 的代码" /&gt;
    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;当 AI 写 90% 的代码时，工程师的角色从&amp;rsquo;写代码&amp;rsquo;变成了&amp;rsquo;思考代码&amp;rsquo;。&amp;rdquo;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;—— Addy Osmani，2026年&lt;/p&gt;
&lt;p&gt;2025 年是 AI 编程工具爆发的一年。而进入 2026 年，一个惊人的数据被透露出来：&lt;strong&gt;Anthropic 工程师编写的 Claude Code 代码中，90% 是由 Claude Code 自己完成的&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这不仅仅是&amp;quot;自动补全&amp;quot;那么简单。它代表了一种全新的工作方式——AI 不再是辅助工具，而是真正的&amp;quot;结对编程伙伴&amp;quot;。&lt;/p&gt;
&lt;h2 id=&#34;claude-code-不是-copilot&#34;&gt;Claude Code 不是 Copilot
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;特性&lt;/th&gt;
          &lt;th&gt;GitHub Copilot&lt;/th&gt;
          &lt;th&gt;Claude Code&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;定位&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;代码补全工具&lt;/td&gt;
          &lt;td&gt;AI 原生编程助手&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;工作方式&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;逐行补全&lt;/td&gt;
          &lt;td&gt;理解项目架构，多步骤执行&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;上下文&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;当前文件&lt;/td&gt;
          &lt;td&gt;整个代码库&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;能力&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;自动完成&lt;/td&gt;
          &lt;td&gt;规划、编码、调试、重构&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;关键差异&lt;/strong&gt;：Claude Code 是一个&amp;quot;代理&amp;quot;（Agent），它不是帮你写代码，而是&lt;strong&gt;和你一起写代码&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-code-workflow-best-practices-2026/imgs/claude-vs-copilot-comparison.jpg&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-code-workflow-best-practices-2026/imgs/claude-vs-copilot-comparison_hu_99dd11b3cd9abdda.jpg 480w, https://blog.ccino.org/p/claude-code-workflow-best-practices-2026/imgs/claude-vs-copilot-comparison_hu_a8704a996e76aa9b.jpg 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Claude Code vs Copilot 对比&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;specs-before-codeai-原生工作流&#34;&gt;Specs before Code：AI 原生工作流
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;传统流程：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;❌ 想法 → 直接写代码 → 发现问题 → 修改 → 重复
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;AI 原生流程：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;✅ 明确问题 → 与 AI 规划方案 → 执行 → 反思 → 优化
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Addy Osmani 强调：&amp;ldquo;不要把 Claude 当作搜索引擎或写作工具。它是一个&lt;strong&gt;需要清晰方向、上下文和监督&lt;/strong&gt;的强大伙伴。&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;claudemd项目的大脑&#34;&gt;CLAUDE.md：项目的&amp;quot;大脑&amp;quot;
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; 是 Claude Code 理解你项目的核心文档。&lt;/p&gt;
&lt;h3 id=&#34;保持简洁但完整&#34;&gt;保持简洁但完整
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;✅ 好的 CLAUDE.md&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gh&#34;&gt;# 项目：用户认证 API
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 架构
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; app/api/：路由端点
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; app/models/：SQLAlchemy 模型
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; app/services/：业务逻辑（重要！所有新功能必须在这里实现）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 约束
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 使用依赖注入（FastAPI Depends）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 所有 service 函数必须有类型注解
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 测试覆盖率要求 &amp;gt; 80%
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;❌ 不好的 CLAUDE.md&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gh&#34;&gt;# 这是一个 FastAPI 项目...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gh&#34;&gt;# （然后列举了所有 50 个文件的功能，Claude 反而记不住）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;实时更新架构&#34;&gt;实时更新架构
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 最近变更（2026-01-27）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 添加了 Redis 缓存层（app/cache/）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 认证方式从 JWT 改为 Session + Redis
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 新功能优先使用缓存，不要直接查数据库
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;指定编码风格和禁止事项&#34;&gt;指定编码风格和禁止事项
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 编码风格
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 使用 Pydantic v2 的 validate_call 装饰器
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 异步函数统一用 async/await
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 错误处理：统一 raise HTTPException
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 禁止事项
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; ❌ 不要修改 alembic/versions/ 中的迁移文件（手动管理）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; ❌ 不要直接操作数据库，必须通过 service 层
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; ❌ 不要添加新的依赖包，先在 CLAUDE.md 中说明用途
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;plan-mode从规格到代码&#34;&gt;Plan Mode：从规格到代码
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-code-workflow-best-practices-2026/imgs/plan-mode-workflow.jpg&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-code-workflow-best-practices-2026/imgs/plan-mode-workflow_hu_3ccae04e909cc714.jpg 480w, https://blog.ccino.org/p/claude-code-workflow-best-practices-2026/imgs/plan-mode-workflow_hu_b0879cd3f5e4cd47.jpg 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Plan Mode 工作流程&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;Plan Mode 是 Claude Code 的核心功能，工作流程：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;描述需求&lt;/strong&gt;（用自然语言）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Claude 生成计划&lt;/strong&gt;（多步骤）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;你确认或修改&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Claude 执行计划&lt;/strong&gt;（自动实现）&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;实战示例&#34;&gt;实战示例
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 进入 Plan Mode&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 输入需求&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt; 我需要添加一个用户认证功能，包括注册、登录、JWT token 管理
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Claude 生成的计划&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1. 创建 User 模型（SQLAlchemy）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2. 实现注册端点 &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;/api/auth/register&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3. 实现登录端点 &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;/api/auth/login&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4. 添加 JWT 工具函数
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;5. 编写中间件验证 token
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;6. 添加单元测试
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 确认后执行&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt; yes
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;进阶技巧&#34;&gt;进阶技巧
&lt;/h2&gt;&lt;h3 id=&#34;并行编码parallel-vibe-coding&#34;&gt;并行编码（Parallel Vibe Coding）
&lt;/h3&gt;&lt;p&gt;Ray Amjad 提出的技巧：&lt;strong&gt;同时运行多个 Claude 实例，从不同角度解决问题&lt;/strong&gt;。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 终端 1：处理前端&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 终端 2：处理后端&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 终端 3：编写测试&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;语音输入5x-效率提升&#34;&gt;语音输入：5x 效率提升
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude --voice
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;用语音描述需求，Claude 会识别语音、理解意图、执行编码。适用于快速记录想法、边走边说、避免&amp;quot;打字打断思路&amp;quot;。&lt;/p&gt;
&lt;h3 id=&#34;subagents-for-context-over-roles&#34;&gt;Subagents for Context over Roles
&lt;/h3&gt;&lt;p&gt;Ray Amjad 的核心发现：&lt;strong&gt;用子 Agent 管理上下文，而不是用角色分配任务&lt;/strong&gt;。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# ✅ 创建专门的 Agent 管理特定代码区域的上下文&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;ai-原生工程师的一天&#34;&gt;AI 原生工程师的一天
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;时间&lt;/th&gt;
          &lt;th&gt;活动&lt;/th&gt;
          &lt;th&gt;Claude 的作用&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;9:00-10:00&lt;/td&gt;
          &lt;td&gt;Code Review&lt;/td&gt;
          &lt;td&gt;分析代码质量、安全漏洞&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;10:00-12:00&lt;/td&gt;
          &lt;td&gt;新功能开发&lt;/td&gt;
          &lt;td&gt;Plan Mode + 编码实现&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;14:00-15:00&lt;/td&gt;
          &lt;td&gt;Bug 修复&lt;/td&gt;
          &lt;td&gt;诊断问题、生成修复补丁&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;15:00-16:00&lt;/td&gt;
          &lt;td&gt;文档编写&lt;/td&gt;
          &lt;td&gt;生成 API 文档、注释&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Addy Osmani 强调：&amp;ldquo;我们仍然是&lt;strong&gt;软件的所有者&lt;/strong&gt;，AI 是放大器，不是替代品。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;你仍然需要&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✅ 理解业务需求&lt;/li&gt;
&lt;li&gt;✅ 架构设计决策&lt;/li&gt;
&lt;li&gt;✅ 代码审查&lt;/li&gt;
&lt;li&gt;✅ 对最终结果负责&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;常见陷阱与解决方案&#34;&gt;常见陷阱与解决方案
&lt;/h2&gt;&lt;h3 id=&#34;陷阱1把-claude-当搜索引擎&#34;&gt;陷阱1：把 Claude 当搜索引擎
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;症状&lt;/strong&gt;：询问&amp;quot;如何做 X&amp;quot;，复制粘贴代码，不理解原理&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决方案&lt;/strong&gt;：先问&amp;quot;为什么需要这样做&amp;quot;，让 Claude 解释代码逻辑，主动学习而非被动接受&lt;/p&gt;
&lt;h3 id=&#34;陷阱2一次性生成大量代码&#34;&gt;陷阱2：一次性生成大量代码
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;症状&lt;/strong&gt;：要求 Claude &amp;ldquo;生成整个用户模块&amp;rdquo;，结果代码量大，难以调试&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决方案&lt;/strong&gt;：拆分任务，逐步验证，每 2-3 步暂停，检查进度&lt;/p&gt;
&lt;h3 id=&#34;陷阱3忽略代码审查&#34;&gt;陷阱3：忽略代码审查
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;症状&lt;/strong&gt;：Claude 生成代码后直接提交，结果技术债务累积&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决方案&lt;/strong&gt;：把 Claude 的输出当作&amp;quot;初稿&amp;quot;，进行 Review，确认质量，优化后再合并&lt;/p&gt;
&lt;h2 id=&#34;真实项目案例48小时构建-saas-应用&#34;&gt;真实项目案例：48小时构建 SaaS 应用
&lt;/h2&gt;&lt;p&gt;Addy Osmani 如何使用 Claude Code 在 &lt;strong&gt;48 小时内&lt;/strong&gt;构建一个完整的 SaaS 应用：&lt;/p&gt;
&lt;h3 id=&#34;项目背景&#34;&gt;项目背景
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;目标&lt;/strong&gt;：构建一个 AI 图像生成器的 Web 应用&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;技术栈&lt;/strong&gt;：Next.js 14 + Tailwind CSS + Replicate API&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;时间&lt;/strong&gt;：2 个周末（共 16 小时编码时间）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI 贡献&lt;/strong&gt;：约 85% 的代码由 Claude Code 编写&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;day-1架构设计与核心功能&#34;&gt;Day 1：架构设计与核心功能
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;上午（9:00-12:00）：规划与设置&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 1. 初始化项目&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npx create-next-app@latest ai-image-gen --typescript --tailwind
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 2. 创建 CLAUDE.md&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat &amp;gt; CLAUDE.md &lt;span class=&#34;s&#34;&gt;&amp;lt;&amp;lt; &amp;#39;EOF&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;# 项目：AI 图像生成器 SaaS
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;## 架构
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;- app/：Next.js 14 App Router
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;- components/：React 组件（使用 Server Components 优先）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;- lib/：工具函数和 API 客户端
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;- types/：TypeScript 类型定义
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;## 技术约束
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;- 使用 Server Components 优化性能
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;- API routes 用 /api/ 路径
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;- 环境变量用 .env.local 管理
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;- 图片存储用 Cloudflare R2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;EOF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 3. 启动 Claude Code&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude .
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;与 Claude 的对话（规划阶段）&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt; 我需要构建一个 AI 图像生成器，用户输入文本提示词，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt; 调用 Replicate API 生成图片，然后显示画廊。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  需要：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  1. 用户认证（Clerk）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  2. 信用卡支付（Stripe）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  3. 图片历史记录（Supabase）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  4. 生成进度显示
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Claude 生成的计划：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1. 设置 Clerk 认证（30 分钟）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2. 创建主页 UI（带输入框和画廊）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3. 实现 Replicate API 集成
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4. 添加 Stripe 支付流程
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;5. 设置 Supabase 存储图片 URL
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;6. 实现生成进度 WebSocket
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;下午（13:00-18:00）：执行计划&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Claude 自动执行：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;安装依赖（@clerk/nextjs, replicate, stripe, @supabase/supabase-js）&lt;/li&gt;
&lt;li&gt;创建组件结构&lt;/li&gt;
&lt;li&gt;实现核心逻辑&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;day-2支付与优化&#34;&gt;Day 2：支付与优化
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;上午&lt;/strong&gt;：Stripe Checkout 集成
&lt;strong&gt;下午&lt;/strong&gt;：性能优化、错误处理、Vercel 部署&lt;/p&gt;
&lt;h3 id=&#34;成果统计&#34;&gt;成果统计
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;指标&lt;/th&gt;
          &lt;th&gt;数值&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;总代码行数&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;~2,400 行&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;人工编写&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;~360 行（15%）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Claude 编写&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;~2,040 行（85%）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;开发时间&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;16 小时&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;传统预估时间&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;80+ 小时&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;性能提升&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;5x&lt;/strong&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;人类在做什么&#34;&gt;人类在做什么？
&lt;/h3&gt;&lt;p&gt;Addy Osmani 的时间分配：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;需求细化&lt;/strong&gt;（30%）：明确想要什么功能&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码审查&lt;/strong&gt;（40%）：检查 Claude 生成的代码质量&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;测试&lt;/strong&gt;（20%）：验证功能是否正常&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;架构决策&lt;/strong&gt;（10%）：选择技术栈和设计方案&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;核心洞察&lt;/strong&gt;：&amp;ldquo;我不是在写代码，我是在&lt;strong&gt;设计和审查&lt;/strong&gt;。&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;2026-年新特性前瞻&#34;&gt;2026 年新特性前瞻
&lt;/h2&gt;&lt;p&gt;基于社区讨论和官方路线图，2026 年可能的新特性：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;更强的多文件编辑能力&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;与 IDE 更深度集成&lt;/strong&gt;（VS Code、Cursor）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;自定义 Agent 工具链&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;团队协作功能&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;结语&#34;&gt;结语
&lt;/h2&gt;&lt;p&gt;当 AI 写 90% 的代码时，我们作为工程师的价值反而提升了——因为我们从&amp;quot;编码者&amp;quot;变成了&amp;quot;架构师&amp;quot;、&amp;ldquo;思考者&amp;quot;和&amp;quot;决策者&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;2026 年的编程范式，不是&amp;quot;人与 AI 的竞争&amp;quot;，而是&amp;quot;&lt;strong&gt;人 + AI&lt;/strong&gt;的协同&amp;quot;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;下一步&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果你是 Claude Code 新手：从 &lt;a class=&#34;link&#34; href=&#34;https://codewithmukesh.com/blog/claude-code-for-beginners/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Mukesh 的教程&lt;/a&gt; 开始&lt;/li&gt;
&lt;li&gt;如果你已经在使用：尝试 Addy Osmani 的 &lt;a class=&#34;link&#34; href=&#34;https://addyosmani.com/blog/ai-coding-workflow/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AI-Native Software Engineer&lt;/a&gt; 方法论&lt;/li&gt;
&lt;li&gt;如果你想深入社区：加入 &lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/ClaudeAI/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;r/ClaudeAI&lt;/a&gt;（45.1万成员）&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;参考资料&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://addyosmani.com/blog/ai-coding-workflow/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Addy Osmani - My LLM coding workflow going into 2026&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=sy65ARFI9Bg&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ray Amjad - My Claude Code Workflow for 2026&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://codewithmukesh.com/blog/claude-code-for-beginners/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Mukesh Murugan - Claude Code for Beginners&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://skywork.ai/blog/claude-code-sdk-community-trends-reddit-and-github/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Skywork AI - Claude Code SDK Community Trends&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>从Cursor到Claude Code：一位重度用户的30天真实迁移体验</title>
        <link>https://blog.ccino.org/p/cursor-to-claude-code-migration/</link>
        <pubDate>Mon, 26 Jan 2026 08:55:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/cursor-to-claude-code-migration/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/cursor-to-claude-code-migration/cover-migration.png" alt="Featured image of post 从Cursor到Claude Code：一位重度用户的30天真实迁移体验" /&gt;
    &lt;blockquote&gt;
        &lt;p&gt;一个Cursor重度用户，写了数千人参考的Cursor tips指南，然后完全放弃了Cursor的Agent模式。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;h2 id=&#34;引言背叛还是觉醒&#34;&gt;引言：背叛还是觉醒？
&lt;/h2&gt;&lt;p&gt;2025年7月，Steve Sewell在LinkedIn上发布了一条引发广泛讨论的动态：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&lt;strong&gt;&amp;ldquo;我使用Cursor超过一年，我写了数千开发者每周参考的Cursor tips指南。而我已经放弃这一切，转向Claude Code。&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;Steve Sewell是谁？Builder.io的CEO，一位真正的技术实践者。他撰写的Cursor tips指南曾是无数开发者的入门圣经。&lt;/p&gt;
&lt;p&gt;这样一个Cursor的死忠粉，为什么会&amp;quot;背叛&amp;quot;自己曾经推崇的工具？&lt;/p&gt;
&lt;p&gt;更让人困惑的是：他并没有完全放弃Cursor。他仍然在用Cursor编辑器，只是不再使用Cursor的Agent功能。这种&amp;quot;部分迁移&amp;quot;的选择，背后有怎样的逻辑？&lt;/p&gt;
&lt;p&gt;今天，让我们深入了解Steve的30天迁移体验，看看这个决定背后的真实原因。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;背景故事从cursor死忠到claude-code&#34;&gt;背景故事：从Cursor死忠到Claude Code
&lt;/h2&gt;&lt;h3 id=&#34;steve的cursor历史&#34;&gt;Steve的Cursor历史
&lt;/h3&gt;&lt;p&gt;Steve不是普通用户。他是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cursor power user超过一年&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;撰写了Builder.io的Cursor tips指南&lt;/strong&gt;，每周有数千开发者参考&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;深入研究了Cursor的每一个power feature和agent mode最佳实践&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;用他自己的话说，他已经&amp;quot;down the rabbit hole&amp;quot;（深入兔子洞）——对Cursor的理解远超一般用户。&lt;/p&gt;
&lt;h3 id=&#34;转向claude-code的决定&#34;&gt;转向Claude Code的决定
&lt;/h3&gt;&lt;p&gt;2025年夏天，Anthropic发布了Claude Code。Steve决定尝试，然后发生了意想不到的事情：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&lt;strong&gt;&amp;ldquo;这几周，我完全生活在Claude Code中，而不是Cursor的agents。老实说，没有回头的余地了。&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;这不是草率的决定。而是经过深度使用后的清醒选择。&lt;/p&gt;
&lt;h3 id=&#34;转向有多难&#34;&gt;转向有多难？
&lt;/h3&gt;&lt;p&gt;对于一个写了一整年Cursor指南的人，转向另一个工具意味着：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;承认之前的推荐可能不是最优选择&lt;/li&gt;
&lt;li&gt;重新学习全新的工作流程&lt;/li&gt;
&lt;li&gt;面对社区可能的质疑：&amp;ldquo;你为什么要换？&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但Steve的态度很明确：&lt;strong&gt;基于真实体验做出选择，而不是品牌忠诚度。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;新工作流倒置的界面关系&#34;&gt;新工作流：倒置的界面关系
&lt;/h2&gt;&lt;h3 id=&#34;vs-code扩展launcher而非主要界面&#34;&gt;VS Code扩展：Launcher而非主要界面
&lt;/h3&gt;&lt;p&gt;Steve的第一个建议是：&lt;strong&gt;安装Claude Code的VS Code扩展&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这个扩展支持VS Code、Cursor、Windsurf等编辑器。但Steve强调：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&lt;strong&gt;&amp;ldquo;不要期待烟花效果，它基本上只是一个启动器。&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;但这个简单的启动器带来了重要改变：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;让打开Claude Code变得极其简单&lt;/li&gt;
&lt;li&gt;可以在IDE的不同窗格中运行多个实例&lt;/li&gt;
&lt;li&gt;只要它们在代码库的不同部分工作&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;steve的实际工作流&#34;&gt;Steve的实际工作流
&lt;/h3&gt;&lt;p&gt;令人惊讶的是，Steve并没有完全放弃Cursor：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;仍然使用Cursor&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;快速的 &lt;code&gt;Command+K&lt;/code&gt; 补全&lt;/li&gt;
&lt;li&gt;Tab自动补全&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;几乎不再使用&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cursor的Agent sidebar&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;什么时候才用Cursor的Agent&lt;/strong&gt;？&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只有当Claude宕机时&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;工作流倒置主次关系的根本改变&#34;&gt;工作流倒置：主次关系的根本改变
&lt;/h3&gt;&lt;p&gt;Steve描述了一个有趣的转变：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&lt;strong&gt;&amp;ldquo;奇怪的是我的工作流如何演变。以前我有Claude作为小侧边栏，在主编辑器中编码。现在默认先打开Claude，只在审查变更时才看代码。&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;以前的关系&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;代码编辑器（主界面）  ───────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                              ├─── 协作编码
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Claude/Cursor（辅助侧边栏） ───┘
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;现在的关系&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Claude Code（主界面）  ─────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                ├─── Claude驱动，我监督
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;代码编辑器（审查窗口）  ────────┘
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这种倒置是关键。Claude从&amp;quot;辅助工具&amp;quot;变成了&amp;quot;主要界面&amp;quot;，而代码编辑器变成了&amp;quot;审查窗口&amp;quot;。&lt;/p&gt;
&lt;h3 id=&#34;为什么这种倒置有意义&#34;&gt;为什么这种倒置有意义？
&lt;/h3&gt;&lt;p&gt;在传统模式中：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你在编辑器中写代码&lt;/li&gt;
&lt;li&gt;AI在旁边提供建议&lt;/li&gt;
&lt;li&gt;你需要不断地在编辑器和AI聊天之间切换&lt;/li&gt;
&lt;li&gt;注意力被分散&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在Claude Code模式中：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你在Claude中描述任务&lt;/li&gt;
&lt;li&gt;Claude去分析和修改代码&lt;/li&gt;
&lt;li&gt;你只在需要审查时才看编辑器&lt;/li&gt;
&lt;li&gt;你的注意力保持在&amp;quot;任务&amp;quot;层面，而非&amp;quot;代码&amp;quot;层面&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这就是从&amp;quot;编码员&amp;quot;到&amp;quot;架构师/监督者&amp;quot;的角色转变。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/cursor-to-claude-code-migration/imgs/workflow-inversion.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/cursor-to-claude-code-migration/imgs/workflow-inversion_hu_b2b170c83701b48a.png 480w, https://blog.ccino.org/p/cursor-to-claude-code-migration/imgs/workflow-inversion_hu_58a4f8a238bc6d6f.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;工作流倒置对比&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;深度对比cursor-vs-claude-code&#34;&gt;深度对比：Cursor vs Claude Code
&lt;/h2&gt;&lt;h3 id=&#34;核心理念差异&#34;&gt;核心理念差异
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Cursor&lt;/strong&gt;：&lt;strong&gt;&amp;ldquo;You drive, AI assists&amp;rdquo;（你驾驶，AI辅助）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你保持在驾驶座&lt;/li&gt;
&lt;li&gt;AI提供智能建议&lt;/li&gt;
&lt;li&gt;你做最终决策&lt;/li&gt;
&lt;li&gt;适合：你知道要做什么，需要加速执行&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Claude Code&lt;/strong&gt;：&lt;strong&gt;&amp;ldquo;AI drives, you supervise&amp;rdquo;（AI驾驶，你监督）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI作为初级开发者&lt;/li&gt;
&lt;li&gt;你提供高层方向&lt;/li&gt;
&lt;li&gt;AI自主执行多步骤任务&lt;/li&gt;
&lt;li&gt;适合：复杂任务需要深度理解和规划&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/cursor-to-claude-code-migration/imgs/core-philosophy.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/cursor-to-claude-code-migration/imgs/core-philosophy_hu_5ed7e04d9453e506.png 480w, https://blog.ccino.org/p/cursor-to-claude-code-migration/imgs/core-philosophy_hu_6676affb33d71a38.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;核心理念对比&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;上下文理解能力&#34;&gt;上下文理解能力
&lt;/h3&gt;&lt;h4 id=&#34;cursor的上下文&#34;&gt;Cursor的上下文
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;技术规格&lt;/strong&gt;：默认支持约16,000行代码&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;上下文窗口&lt;/strong&gt;：声称200K-1M tokens（Max模式）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;实际体验&lt;/strong&gt;：用户报告在70K-120K tokens时遇到限制&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;社区的反馈：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&lt;strong&gt;&amp;ldquo;尽管声称200K token，但实际可用上下文常常被限制在70K-120K。&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;h4 id=&#34;claude-code的上下文&#34;&gt;Claude Code的上下文
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;上下文窗口&lt;/strong&gt;：200K（真实可用）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;工具链&lt;/strong&gt;：Read、Grep、Glob等专业工具&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;实际体验&lt;/strong&gt;：完整的200K上下文，没有内部截断&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;社区对比：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&lt;strong&gt;&amp;ldquo;上下文大小限制是Cursor的事实——Claude Code在这方面无可争议地胜出。&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;h4 id=&#34;真实测试token效率对比&#34;&gt;真实测试：Token效率对比
&lt;/h4&gt;&lt;p&gt;@iannuttall在X上发布了一个 viral 测试（191K浏览量）：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;任务&lt;/strong&gt;：构建一个Next.js应用，使用Tailwind 4和shadcn组件&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;工具&lt;/th&gt;
          &lt;th&gt;结果&lt;/th&gt;
          &lt;th&gt;Token使用&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Claude Code (Opus)&lt;/td&gt;
          &lt;td&gt;无错误完成，最快&lt;/td&gt;
          &lt;td&gt;33K&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Cursor Agent (GPT-5)&lt;/td&gt;
          &lt;td&gt;有错误后完成，最慢&lt;/td&gt;
          &lt;td&gt;188K&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Codex (GPT-5)&lt;/td&gt;
          &lt;td&gt;未能完成&lt;/td&gt;
          &lt;td&gt;102K&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Claude Code使用的Token比Cursor少5.5倍！&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;速度与成本对比&#34;&gt;速度与成本对比
&lt;/h3&gt;&lt;h4 id=&#34;cursor&#34;&gt;Cursor
&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;定价&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Free（有限制）&lt;/li&gt;
&lt;li&gt;Pro：$20/月&lt;/li&gt;
&lt;li&gt;Ultra：$200/月&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;适合使用模式&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;中等强度的日常使用&lt;/li&gt;
&lt;li&gt;Pro版的价格相对固定&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;claude-code&#34;&gt;Claude Code
&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;定价&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;包含在Claude Pro中：$20/月&lt;/li&gt;
&lt;li&gt;Max计划：$100-200/月（重度使用）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;适合使用模式&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;轻度到中度使用：Pro版足够&lt;/li&gt;
&lt;li&gt;重度使用：Max计划的成本可能更高&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Token效率&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude Code的Token效率高出5.5倍&lt;/li&gt;
&lt;li&gt;这意味着同样的预算可以做更多事情&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;uiux对比&#34;&gt;UI/UX对比
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;特性&lt;/th&gt;
          &lt;th&gt;Cursor&lt;/th&gt;
          &lt;th&gt;Claude Code&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;界面&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;GUI（VS Code基础）&lt;/td&gt;
          &lt;td&gt;终端/CLI&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Diff查看&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;视觉化，直观&lt;/td&gt;
          &lt;td&gt;文本化，需要适应&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;学习曲线&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;低（如果熟悉VS Code）&lt;/td&gt;
          &lt;td&gt;中等（需要终端舒适度）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;多任务处理&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;需要多个窗口&lt;/td&gt;
          &lt;td&gt;可以并行运行多个实例&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;视觉反馈&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;丰富&lt;/td&gt;
          &lt;td&gt;有限（文本为主）&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&#34;迁移checklist30天逐步切换&#34;&gt;迁移Checklist：30天逐步切换
&lt;/h2&gt;&lt;p&gt;Steve建议不要&amp;quot;一夜之间&amp;quot;完全切换，而是采用渐进式迁移。以下是30天迁移计划：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/cursor-to-claude-code-migration/imgs/migration-timeline.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/cursor-to-claude-code-migration/imgs/migration-timeline_hu_4f822a0133e1891a.png 480w, https://blog.ccino.org/p/cursor-to-claude-code-migration/imgs/migration-timeline_hu_95edc626d8cac3f1.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;30天迁移时间线&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;第1周基础熟悉&#34;&gt;第1周：基础熟悉
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;目标&lt;/strong&gt;：了解Claude Code的基本概念和命令&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;任务清单&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 安装Claude Code和VS Code扩展&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 阅读官方文档&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 尝试基础命令：
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;claude&lt;/code&gt;：启动Claude Code&lt;/li&gt;
&lt;li&gt;&lt;code&gt;help&lt;/code&gt;：查看所有命令&lt;/li&gt;
&lt;li&gt;&lt;code&gt;read&lt;/code&gt;：读取文件内容&lt;/li&gt;
&lt;li&gt;&lt;code&gt;grep&lt;/code&gt;：搜索代码&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 完成第一个简单任务（如：重命名一个变量）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;提示&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不要急于在真实项目中使用&lt;/li&gt;
&lt;li&gt;先在实验项目中练习&lt;/li&gt;
&lt;li&gt;习惯&amp;quot;描述任务&amp;quot;而非&amp;quot;直接编码&amp;quot;的思维模式&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;第2周日常开发迁移&#34;&gt;第2周：日常开发迁移
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;目标&lt;/strong&gt;：将日常开发任务迁移到Claude Code&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;任务清单&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 用Claude Code完成以下任务：
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 创建新文件/组件&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 重构现有代码&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 添加测试&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 修复bug（需要提供上下文）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 对比Cursor和Claude Code在这些任务上的体验&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 记录哪些任务Claude Code做得更好&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 记录哪些任务Cursor仍然更方便&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;典型迁移场景&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;重构任务&lt;/strong&gt;：提取函数、重命名变量、重组代码结构&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;测试生成&lt;/strong&gt;：为现有代码生成单元测试&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;文档编写&lt;/strong&gt;：生成README、API文档、代码注释&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bug修复&lt;/strong&gt;：分析日志、定位问题、实施修复&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;保持Cursor的场景&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;快速的代码补全&lt;/li&gt;
&lt;li&gt;小幅度的代码调整&lt;/li&gt;
&lt;li&gt;需要频繁查看diff的场景&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;第3周深度对比与优化&#34;&gt;第3周：深度对比与优化
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;目标&lt;/strong&gt;：理解两个工具的真正差异，优化工作流&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;任务清单&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 尝试一个复杂任务（如：添加新功能）
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 先用Cursor Agent完成&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 再用Claude Code完成&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 对比时间、质量、体验&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 建立自己的&amp;quot;工具选择决策树&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 尝试Claude Code的Plan Mode&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 学习如何给Claude Code提供更好的上下文&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;对比维度&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;时间效率&lt;/li&gt;
&lt;li&gt;代码质量&lt;/li&gt;
&lt;li&gt;上下文理解&lt;/li&gt;
&lt;li&gt;迭代速度&lt;/li&gt;
&lt;li&gt;维护便利性&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;第4周完全切换&#34;&gt;第4周：完全切换
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;目标&lt;/strong&gt;：以Claude Code为主要工具，Cursor为辅助&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;任务清单&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 默认使用Claude Code开始新任务&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 只在特定场景使用Cursor（如快速补全）&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 建立新的工作流习惯&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 记录自己的最佳实践&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 分享经验给团队&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;新工作流示例&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1. 在Claude Code中描述任务
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2. 让Claude分析代码库
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3. 审查Claude生成的计划
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4. Claude执行变更
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;5. 在编辑器中审查结果
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;6. 提供反馈给Claude进行迭代
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;7. 最终确认并让Claude创建git commit
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;常见问题与解决&#34;&gt;常见问题与解决
&lt;/h2&gt;&lt;h3 id=&#34;q1我需要完全放弃cursor吗&#34;&gt;Q1：我需要完全放弃Cursor吗？
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Steve的回答&lt;/strong&gt;：不需要。&lt;/p&gt;
&lt;p&gt;他的实际做法是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cursor编辑器：仍然使用&lt;/li&gt;
&lt;li&gt;Cursor的快速补全：仍然使用&lt;/li&gt;
&lt;li&gt;Cursor的Agent模式：几乎不再使用&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;建议&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude Code适合：复杂任务、重构、新功能开发&lt;/li&gt;
&lt;li&gt;Cursor适合：快速补全、小幅调整、视觉化diff&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这不是&amp;quot;非此即彼&amp;quot;的选择，而是&amp;quot;场景化工具选择&amp;quot;。&lt;/p&gt;
&lt;h3 id=&#34;q2两个工具可以并用吗&#34;&gt;Q2：两个工具可以并用吗？
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;答&lt;/strong&gt;：可以，而且Steve就是这么做的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;并用的最佳实践&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在Cursor中安装Claude Code扩展&lt;/li&gt;
&lt;li&gt;使用Cursor作为编辑器&lt;/li&gt;
&lt;li&gt;复杂任务时启动Claude Code&lt;/li&gt;
&lt;li&gt;简单补全时用Cursor的Command+K&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;关键&lt;/strong&gt;：理解每个工具的优势，在合适的场景使用合适的工具。&lt;/p&gt;
&lt;h3 id=&#34;q3迁移成本有多高&#34;&gt;Q3：迁移成本有多高？
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;学习成本&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;第1周：熟悉基本命令（2-3小时）&lt;/li&gt;
&lt;li&gt;第2-3周：适应新工作流（持续学习）&lt;/li&gt;
&lt;li&gt;第4周：形成习惯&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;实际成本&lt;/strong&gt;：主要是时间成本，而非金钱成本（如果你已经有Claude Pro）&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ROI计算&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果你的工作包含大量复杂任务 → 迁移收益高&lt;/li&gt;
&lt;li&gt;如果你主要做快速补全和小调整 → Cursor可能已经足够&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;q4claude-code有什么cursor做不到的&#34;&gt;Q4：Claude Code有什么Cursor做不到的？
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;核心差异&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;真正的Agent能力&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cursor Agent：自动化程度高，但需要持续监督&lt;/li&gt;
&lt;li&gt;Claude Code：可以自主完成多步骤任务，只需高层指导&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;上下文深度&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude Code的200K上下文是真实可用的&lt;/li&gt;
&lt;li&gt;可以理解整个代码库的架构和关系&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;工具链集成&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Read、Grep、Glob等专业工具&lt;/li&gt;
&lt;li&gt;可以运行测试、创建git commits&lt;/li&gt;
&lt;li&gt;可以执行bash命令&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;规划模式&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在执行前展示完整计划&lt;/li&gt;
&lt;li&gt;可以审查和调整计划&lt;/li&gt;
&lt;li&gt;减少返工和迭代&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&#34;总结没有最好的工具只有最合适的工具&#34;&gt;总结：没有最好的工具，只有最合适的工具
&lt;/h2&gt;&lt;p&gt;Steve Sewell的迁移故事告诉我们几个重要的事实：&lt;/p&gt;
&lt;h3 id=&#34;工具选择应该基于真实体验&#34;&gt;工具选择应该基于真实体验
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;不要因为&amp;quot;大家都用&amp;quot;而用&lt;/li&gt;
&lt;li&gt;不要因为&amp;quot;写了教程&amp;quot;就不能换&lt;/li&gt;
&lt;li&gt;基于自己的工作流和需求做选择&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;迁移不是背叛而是进化&#34;&gt;迁移不是&amp;quot;背叛&amp;quot;，而是进化
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Steve仍然用Cursor编辑器&lt;/li&gt;
&lt;li&gt;他只是找到了更适合的工作流&lt;/li&gt;
&lt;li&gt;这是成熟工程师的标志&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;两个工具都有存在的价值&#34;&gt;两个工具都有存在的价值
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Cursor&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;You drive, AI assists&amp;rdquo;&lt;/li&gt;
&lt;li&gt;适合你知道要做什么，需要加速&lt;/li&gt;
&lt;li&gt;适合快速迭代和视觉化反馈&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Claude Code&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;AI drives, you supervise&amp;rdquo;&lt;/li&gt;
&lt;li&gt;适合复杂任务需要深度理解&lt;/li&gt;
&lt;li&gt;适合需要自主执行的多步骤工作&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;关键是找到适合自己的工作流&#34;&gt;关键是找到适合自己的工作流
&lt;/h3&gt;&lt;p&gt;Steve的最终建议：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&lt;strong&gt;&amp;ldquo;不要盲目跟随任何人（包括我）。尝试两个工具，找到适合你的工作流。&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;30天迁移计划不是要让你&amp;quot;完全切换&amp;quot;，而是要让你&lt;strong&gt;理解两个工具的差异，做出明智的选择&lt;/strong&gt;。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;下一步行动&#34;&gt;下一步行动
&lt;/h2&gt;&lt;p&gt;如果你认真读到了这里，说明你对Claude Code感兴趣。以下是建议的下一步：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;立即行动&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;安装Claude Code：&lt;code&gt;npm install -g @anthropic-ai/claude-code&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;安装VS Code扩展&lt;/li&gt;
&lt;li&gt;尝试完成第一个任务&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;本周目标&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;完成第1周的学习清单&lt;/li&gt;
&lt;li&gt;在实验项目中尝试基础功能&lt;/li&gt;
&lt;li&gt;习惯&amp;quot;描述任务&amp;quot;的思维模式&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;本月目标&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;完成整个30天迁移计划&lt;/li&gt;
&lt;li&gt;建立自己的工具选择决策树&lt;/li&gt;
&lt;li&gt;记录并分享你的经验&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;长期目标&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;持续优化AI辅助工作流&lt;/li&gt;
&lt;li&gt;建立团队的AI编程最佳实践&lt;/li&gt;
&lt;li&gt;保持对新工具的开放态度&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;参考资源&#34;&gt;参考资源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.builder.io/blog/claude-code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Steve Sewell - How I use Claude Code (+ my best tips)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.builder.io/blog/cursor-tips&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Steve Sewell&amp;rsquo;s Cursor Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.builder.io/blog/cursor-vs-claude-code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Cursor vs Claude Code: Ultimate Comparison Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.anthropic.com/claude-code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Code Official Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://addyosmani.com/blog/ai-coding-workflow/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Addy Osmani - My LLM coding workflow going into 2026&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;作者简介&lt;/strong&gt;：本文基于Steve Sewell（Builder.io CEO）的真实迁移体验撰写，结合了社区反馈和对比测试数据。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;发布日期&lt;/strong&gt;：2026年1月26日
&lt;strong&gt;分类&lt;/strong&gt;：AI / 工具对比
&lt;strong&gt;标签&lt;/strong&gt;：#Claude-Code #Cursor #AI编程 #开发工具&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Claude Skills 实战：打造你的 AI Agent 团队</title>
        <link>https://blog.ccino.org/p/claude-skills-ai-agent-team/</link>
        <pubDate>Sun, 25 Jan 2026 11:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/claude-skills-ai-agent-team/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/claude-skills-ai-agent-team/claude-skills-ai-agent-team.png" alt="Featured image of post Claude Skills 实战：打造你的 AI Agent 团队" /&gt;
    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;我有 57 个 Claude Skills，每天帮我完成原本需要数小时的工作。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;—— 一位 Claude Code 重度用户，2026 年 1 月&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;这个数字背后，不是简单的&amp;quot;提示词合集&amp;quot;，而是一种&lt;strong&gt;正在形成的 AI Agent 协作范式&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;当大多数人还在把 Claude 当作&amp;quot;智能聊天机器人&amp;quot;时，一部分早期用户已经将它转化为一支&lt;strong&gt;专业化的 AI Agent 团队&lt;/strong&gt;——每个 Agent 专注于特定领域，可组合、可重用、可进化。&lt;/p&gt;
&lt;p&gt;这篇文章将分享从零构建 57 个技能的实战经验，展示如何从&amp;quot;对话者&amp;quot;升级为&amp;quot;指挥者&amp;quot;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-skills-ai-agent-team/imgs/skills-team-concept.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-skills-ai-agent-team/imgs/skills-team-concept_hu_5fa68efc4c8eb59d.png 480w, https://blog.ccino.org/p/claude-skills-ai-agent-team/imgs/skills-team-concept_hu_b271583b2f8b846a.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Claude Skills 团队概念&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;什么是-claude-skills从-unix-哲学说起&#34;&gt;什么是 Claude Skills？从 Unix 哲学说起
&lt;/h2&gt;&lt;p&gt;Unix 哲学有一个核心原则：&lt;strong&gt;&amp;ldquo;做好一件事&amp;rdquo;&lt;/strong&gt;（Do one thing and do it well）。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;grep&lt;/code&gt; 专注于搜索&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sed&lt;/code&gt; 专注于编辑&lt;/li&gt;
&lt;li&gt;&lt;code&gt;find&lt;/code&gt; 专注于查找&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些简单工具通过管道组合，能完成极其复杂的任务。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Claude Skills 正是这个理念在 AI 时代的再现&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id=&#34;本质定义&#34;&gt;本质定义
&lt;/h3&gt;&lt;p&gt;Claude Skills 是&lt;strong&gt;模块化、自包含的能力包&lt;/strong&gt;，将 Claude 从通用助手转化为专业 Agent。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;三层价值&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;专业化&lt;/strong&gt;：每个 Skill 是特定领域的专家&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可组合&lt;/strong&gt;：Skills 可以协作形成工作流&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可进化&lt;/strong&gt;：越用越聪明，经验可积累&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;与传统-prompt-的本质区别&#34;&gt;与传统 Prompt 的本质区别
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;维度&lt;/th&gt;
          &lt;th&gt;传统 Prompt&lt;/th&gt;
          &lt;th&gt;Claude Skills&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;可移植性&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;❌ 每次手动复制粘贴&lt;/td&gt;
          &lt;td&gt;✅ 跨项目一键调用&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;上下文&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;❌ 每次重新解释&lt;/td&gt;
          &lt;td&gt;✅ 持久化专业上下文&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;复杂度&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;⚠️ 受 token 限制&lt;/td&gt;
          &lt;td&gt;✅ scripts + references 扩展&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;团队协作&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;❌ 个人私有&lt;/td&gt;
          &lt;td&gt;✅ 团队共享知识库&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;魔法所在&lt;/strong&gt;：Skills 让 Claude 从&amp;quot;一次性对话&amp;quot;变成&amp;quot;可积累经验&amp;quot;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-skills-ai-agent-team/imgs/01-comparison-prompt-vs-skills.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-skills-ai-agent-team/imgs/01-comparison-prompt-vs-skills_hu_4a6c698c5a2eb26f.png 480w, https://blog.ccino.org/p/claude-skills-ai-agent-team/imgs/01-comparison-prompt-vs-skills_hu_ba3b44ce109ec9d1.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;传统 Prompt vs Claude Skills&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;实战案例从-10-分钟到-30-秒&#34;&gt;实战案例：从 10 分钟到 30 秒
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;任务&lt;/strong&gt;：将 Markdown 文章发布到微信公众号&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;传统方式&lt;/strong&gt;（10+ 分钟）：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;我：&amp;#34;请帮我打开 Chrome，导航到公众号后台...&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;我：&amp;#34;上传这些图片...&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;我：&amp;#34;把 Markdown 转换为微信格式...&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;我：&amp;#34;调整格式...&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...（来回对话）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Skills 方式&lt;/strong&gt;（30 秒）：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Skill: baoyu-post-to-wechat
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;args: --markdown article.md --images ./imgs/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;差异&lt;/strong&gt;：不是速度的提升，而是&lt;strong&gt;交互模式的质变&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id=&#34;技能的三位一体架构&#34;&gt;技能的&amp;quot;三位一体&amp;quot;架构
&lt;/h2&gt;&lt;p&gt;每个技能由三部分组成，这种设计让 Skill 既有&amp;quot;大脑&amp;quot;又有&amp;quot;手&amp;quot;。&lt;/p&gt;
&lt;h3 id=&#34;skillmd大脑&#34;&gt;SKILL.md（大脑）
&lt;/h3&gt;&lt;p&gt;技能的核心指令，包含：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Frontmatter&lt;/strong&gt;：元数据（name、description）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Body&lt;/strong&gt;：工作流、使用指南&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;关键设计原则&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Concise is Key&lt;/strong&gt;：上下文窗口是公共资源&lt;/li&gt;
&lt;li&gt;只保留核心指令，详细信息放 &lt;code&gt;references/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;scripts双手&#34;&gt;scripts/（双手）
&lt;/h3&gt;&lt;p&gt;可执行代码（Python/Bash/TypeScript），用于：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需要确定性可靠性的操作&lt;/li&gt;
&lt;li&gt;避免重复生成相同代码&lt;/li&gt;
&lt;li&gt;复杂的自动化流程&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;：&lt;code&gt;baoyu-post-to-wechat/scripts/wechat-article.ts&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Chrome CDP 自动化&lt;/li&gt;
&lt;li&gt;Markdown → WeChat HTML 转换&lt;/li&gt;
&lt;li&gt;图片上传和占位符替换&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;references知识库&#34;&gt;references/（知识库）
&lt;/h3&gt;&lt;p&gt;详细参考文档，按需加载：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API 文档&lt;/li&gt;
&lt;li&gt;领域知识&lt;/li&gt;
&lt;li&gt;详细指南&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;优势&lt;/strong&gt;：保持 SKILL.md 精简，信息可发现但不浪费上下文。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-skills-ai-agent-team/imgs/02-framework-three-layers.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-skills-ai-agent-team/imgs/02-framework-three-layers_hu_36a2d17885761085.png 480w, https://blog.ccino.org/p/claude-skills-ai-agent-team/imgs/02-framework-three-layers_hu_2c2d576d1be90ee1.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;技能的三位一体架构&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;实战案例一博客写作-skill-包&#34;&gt;实战案例一：博客写作 Skill 包
&lt;/h2&gt;&lt;h3 id=&#34;问题背景&#34;&gt;问题背景
&lt;/h3&gt;&lt;p&gt;作为技术博主，每次创建 Hugo 博客文章都要：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;解释 frontmatter 格式（categories vs tags）&lt;/li&gt;
&lt;li&gt;说明目录结构规范&lt;/li&gt;
&lt;li&gt;提醒 SEO 优化要点&lt;/li&gt;
&lt;li&gt;&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;痛点&lt;/strong&gt;：重复解释，每次 5-8 分钟&lt;/p&gt;
&lt;h3 id=&#34;解决方案6-个子技能协作&#34;&gt;解决方案：6 个子技能协作
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;blog-writing/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── SKILL.md                    # 主技能
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── hugo-blog-writer/           # 创建 Hugo 文章
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── blog-quality-assurance/     # 质量检查（5 维度）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── directory-namer/            # 智能目录命名
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── tag-selector/               # 智能标签选择
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── markdown-formatter/         # Markdown 格式化
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;核心设计&lt;/strong&gt;：在 SKILL.md 中明确定义 Hugo 规范&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## Frontmatter 模板
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;title: &amp;#34;{{title}}&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;description: &amp;#34;{{description}}&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;date: {{date}}
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;slug: {{slug}}
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;categories: {{category}}  # 文本格式，非数组
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tags: [{{tags}}]          # 数组格式
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;效果&lt;/strong&gt;：Claude 再也不会搞混 categories 和 tags。&lt;/p&gt;
&lt;h3 id=&#34;质量检查的-5-个维度&#34;&gt;质量检查的 5 个维度
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;blog-quality-assurance&lt;/code&gt; 定义了全面的质量检查：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✅ &lt;strong&gt;SEO 优化&lt;/strong&gt;：标题、描述、关键词&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;可读性&lt;/strong&gt;：段落长度、句子结构&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;内容质量&lt;/strong&gt;：逻辑性、完整性&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;格式规范&lt;/strong&gt;：Markdown 语法、链接&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;用户体验&lt;/strong&gt;：导航、引用&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;对比&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用前：5-8 分钟来回确认&lt;/li&gt;
&lt;li&gt;使用后：30 秒一条命令，自动符合规范&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;实战案例二微信公众号发布-skill&#34;&gt;实战案例二：微信公众号发布 Skill
&lt;/h2&gt;&lt;h3 id=&#34;问题背景-1&#34;&gt;问题背景
&lt;/h3&gt;&lt;p&gt;微信公众号编辑器是出了名的难用：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;❌ 不支持 Markdown&lt;/li&gt;
&lt;li&gt;❌ 图片需要一张张上传&lt;/li&gt;
&lt;li&gt;❌ 格式容易错乱&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;传统流程&lt;/strong&gt;：20-30 分钟手动操作&lt;/p&gt;
&lt;h3 id=&#34;技术方案chrome-cdp-自动化&#34;&gt;技术方案：Chrome CDP 自动化
&lt;/h3&gt;&lt;p&gt;使用 Puppeteer 实现全自动发布：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-typescript&#34; data-lang=&#34;typescript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 核心流程
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;打开&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Chrome&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;（保留登录会话）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;转换&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Markdown&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;→&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;WeChat&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;HTML&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;粘贴到编辑器&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;自动上传所有图片&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;应用主题样式&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;等待人工确认后发布&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;最大的挑战图片占位符&#34;&gt;最大的挑战：图片占位符
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：如何将 Markdown 中的 &lt;code&gt;![](imgs/a.png)&lt;/code&gt; 转换为微信编辑器中的图片？&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决方案&lt;/strong&gt;：占位符 + 替换策略&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;转换阶段&lt;/strong&gt;：&lt;code&gt;![](imgs/a.png)&lt;/code&gt; → &lt;code&gt;&amp;lt;img src=&amp;quot;placeholder:a.png&amp;quot;&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;粘贴阶段&lt;/strong&gt;：HTML 粘贴到编辑器&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;上传阶段&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;查找所有占位符（6 种匹配模式）&lt;/li&gt;
&lt;li&gt;本地上传图片&lt;/li&gt;
&lt;li&gt;替换为微信编辑器的图片 ID&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-typescript&#34; data-lang=&#34;typescript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 6 种占位符匹配策略
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;placeholderPatterns&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;sr&#34;&gt;/placeholder:([^.]+)/&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;sr&#34;&gt;/wechat-placeholder:([^.]+)/&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;sr&#34;&gt;/data-placeholder=&amp;#34;([^&amp;#34;]+)&amp;#34;/&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// ... 更多模式
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 验证粘贴是否成功
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;textLength&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;evaluate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;document&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;innerText&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`✅ Content check: &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;textLength&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt; chars`&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;踩坑经验&#34;&gt;踩坑经验
&lt;/h3&gt;&lt;h4 id=&#34;坑-1图片插入失败&#34;&gt;坑 1：图片插入失败
&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;原因&lt;/strong&gt;：微信编辑器加载慢，HTML 没有正确粘贴&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;增加等待时间（3s → 5s）&lt;/li&gt;
&lt;li&gt;添加内容验证&lt;/li&gt;
&lt;li&gt;生成&amp;quot;手动插入指南&amp;quot;作为备选&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;坑-2粘贴事件被拦截&#34;&gt;坑 2：粘贴事件被拦截
&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;原因&lt;/strong&gt;：微信编辑器拦截模拟键盘事件&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决&lt;/strong&gt;：使用真实的剪贴板粘贴事件&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;效果&lt;/strong&gt;：20-30 分钟 → 2-3 分钟全自动&lt;/p&gt;
&lt;h2 id=&#34;实战案例三记忆系统-skill&#34;&gt;实战案例三：记忆系统 Skill
&lt;/h2&gt;&lt;h3 id=&#34;问题背景-2&#34;&gt;问题背景
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;AI 无法跨会话记住重要信息&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;对话 1：解释&amp;quot;我喜欢用图表&amp;quot;&lt;/li&gt;
&lt;li&gt;对话 2：再次解释&lt;/li&gt;
&lt;li&gt;对话 3：第三次解释&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;解决方案四层记忆架构&#34;&gt;解决方案：四层记忆架构
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;L4_核心层（价值观）  ← 只能手动修改
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ↑
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;L3_认知层（思维模式） ← 月复盘提炼
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ↑
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;L2_行为层（习惯偏好） ← 周复盘提炼（3次+）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ↑
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;L1_情境层（日常记录） ← 实时记录
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;自动判断规则&#34;&gt;自动判断规则
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;L1_情境层&lt;/strong&gt;：日常事件、决策、情绪&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;L2_行为层&lt;/strong&gt;：出现 3 次以上的偏好&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;L3_认知层&lt;/strong&gt;：多个行为指向同一原则&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;L4_核心层&lt;/strong&gt;：⚠️ 只能手动修改&lt;/p&gt;
&lt;h3 id=&#34;重复模式检测&#34;&gt;重复模式检测
&lt;/h3&gt;&lt;p&gt;当用户说&amp;quot;我喜欢图表&amp;quot;时：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Grep &lt;span class=&#34;s2&#34;&gt;&amp;#34;图表&amp;#34;&lt;/span&gt; AI_MEMORY/L1_情境层/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 结果：发现这是第 5 次出现&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 建议：记录到 L2_行为层/工作习惯.md&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;实战演示&#34;&gt;实战演示
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;场景&lt;/strong&gt;：用户表达偏好&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;我：&amp;#34;我更喜欢用图表而不是大段文字&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Claude：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;✅ 已记录到 L1_情境层/2026-01.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;💡 检测到这是第 5 次出现&amp;#34;图表偏好&amp;#34;，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   是否记录到 L2_行为层/工作习惯.md？
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;效果&lt;/strong&gt;：AI 越用越懂你，而不是每次都从零开始。&lt;/p&gt;
&lt;h2 id=&#34;高级技巧技能协作模式&#34;&gt;高级技巧：技能协作模式
&lt;/h2&gt;&lt;h3 id=&#34;1-pipeline流水线&#34;&gt;1. Pipeline（流水线）
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;草稿 → content-digest → blog-writing → baoyu-post-to-wechat → 发布
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-skills-ai-agent-team/imgs/03-flowchart-publishing-pipeline.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-skills-ai-agent-team/imgs/03-flowchart-publishing-pipeline_hu_1b114ec4d0d11bac.png 480w, https://blog.ccino.org/p/claude-skills-ai-agent-team/imgs/03-flowchart-publishing-pipeline_hu_434dd41f05678dea.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;博客发布自动化流水线&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;2-router路由&#34;&gt;2. Router（路由）
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;文章 → 判断类型 → {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;技术博客&amp;#34;: blog-writing
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;公众号&amp;#34;: wechat-article-standardizer
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;小红书&amp;#34;: baoyu-xhs-images
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;3-loop循环&#34;&gt;3. Loop（循环）
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;草稿 → blog-quality-assurance → 检查 → 有问题 → 优化 → 再检查 → 通过
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;最佳实践&#34;&gt;最佳实践
&lt;/h2&gt;&lt;h3 id=&#34;1-技能设计三大原则&#34;&gt;1. 技能设计三大原则
&lt;/h3&gt;&lt;h4 id=&#34;原则一concise-is-key简洁是关键&#34;&gt;原则一：Concise is Key（简洁是关键）
&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;反例&lt;/strong&gt;（太啰嗦）：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 如何使用这个技能
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;首先，你需要确保你的计算机上安装了 Node.js 环境。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;正例&lt;/strong&gt;（精简）：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## Prerequisites
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Node.js 18+
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Bun runtime (via &lt;span class=&#34;sb&#34;&gt;`npx -y bun`&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id=&#34;原则二set-appropriate-degrees-of-freedom&#34;&gt;原则二：Set Appropriate Degrees of Freedom
&lt;/h4&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;自由度&lt;/th&gt;
          &lt;th&gt;适用场景&lt;/th&gt;
          &lt;th&gt;示例&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;高&lt;/strong&gt;（文本指令）&lt;/td&gt;
          &lt;td&gt;多种有效方法&lt;/td&gt;
          &lt;td&gt;内容创作、策略规划&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;中&lt;/strong&gt;（参数化脚本）&lt;/td&gt;
          &lt;td&gt;有偏好模式&lt;/td&gt;
          &lt;td&gt;blog-writing 模板选择&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;低&lt;/strong&gt;（特定脚本）&lt;/td&gt;
          &lt;td&gt;操作 fragile&lt;/td&gt;
          &lt;td&gt;微信图片上传&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;类比&lt;/strong&gt;：Claude 就像在探索路径&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;开阔田野：高自由度&lt;/li&gt;
&lt;li&gt;狭窄桥梁：低自由度，需要护栏&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;原则三avoid-duplication&#34;&gt;原则三：Avoid Duplication
&lt;/h4&gt;&lt;p&gt;信息只存在于一个地方：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✅ SKILL.md：核心工作流&lt;/li&gt;
&lt;li&gt;✅ references/：详细文档&lt;/li&gt;
&lt;li&gt;❌ 两者都放：浪费 token&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2-命名规范&#34;&gt;2. 命名规范
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;推荐格式&lt;/strong&gt;：&lt;code&gt;&amp;lt;domain&amp;gt;-&amp;lt;action&amp;gt;&lt;/code&gt; 或 &lt;code&gt;&amp;lt;project&amp;gt;-&amp;lt;feature&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;✅ blog-writing
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;✅ baoyu-post-to-wechat
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;✅ mem-record
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;❌ blogWriter（不要驼峰）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;❌ post_wechat（不要下划线）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;3-版本管理&#34;&gt;3. 版本管理
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.claude/skills/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── blog-writing/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── SKILL.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── CHANGELOG.md      # 版本历史
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   └── ...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── iteration-log-2026-01-20.md  # 技能迭代日志
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;思维转变从-chatbot-到-agent-团队&#34;&gt;思维转变：从 Chatbot 到 Agent 团队
&lt;/h2&gt;&lt;h3 id=&#34;转变一从一次性对话到可积累经验&#34;&gt;转变一：从&amp;quot;一次性对话&amp;quot;到&amp;quot;可积累经验&amp;quot;
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;旧模式&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;对话 → 使用 → 遗忘 → 下次重复解释
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;新模式&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;对话 → 提炼为 Skill → 持续改进 → 越用越聪明
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;案例&lt;/strong&gt;：&lt;code&gt;mem-record&lt;/code&gt; 技能&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;第 1 次：记录决策&lt;/li&gt;
&lt;li&gt;第 3 次：识别模式，提炼到 L2&lt;/li&gt;
&lt;li&gt;第 N 次：形成&amp;quot;习惯&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;转变二从通用助手到专业团队&#34;&gt;转变二：从&amp;quot;通用助手&amp;quot;到&amp;quot;专业团队&amp;quot;
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;旧模式&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;一个 Claude 什么都做，但什么都不精
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;新模式&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;blog-writing (博客专家)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;baoyu-post-to-wechat (公众号专家)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mem-record (记忆管理专家)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pdf/document (文档处理专家)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;协作模式&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;我 → blog-writing (创建内容)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     baoyu-cover-image (设计封面)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     baoyu-post-to-wechat (发布)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;转变三从被动响应到主动执行&#34;&gt;转变三：从&amp;quot;被动响应&amp;quot;到&amp;quot;主动执行&amp;quot;
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;旧模式&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;我：&amp;#34;帮我做 X&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Claude：&amp;#34;好的，怎么？&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;我：&amp;#34;步骤 1...&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Claude：&amp;#34;然后呢？&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;新模式&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;我：&amp;#34;Skill: blog-writing 创建一篇博客&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Claude：[自动完成所有步骤]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-skills-ai-agent-team/imgs/04-comparison-mindset-shift.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-skills-ai-agent-team/imgs/04-comparison-mindset-shift_hu_45baf0bb56210081.png 480w, https://blog.ccino.org/p/claude-skills-ai-agent-team/imgs/04-comparison-mindset-shift_hu_b6559ed2c1408890.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;三大思维转变&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;开始构建你的-ai-agent-团队&#34;&gt;开始构建你的 AI Agent 团队
&lt;/h2&gt;&lt;h3 id=&#34;第-1-周创建第一个技能&#34;&gt;第 1 周：创建第一个技能
&lt;/h3&gt;&lt;p&gt;从最简单的任务开始：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;识别一个重复 3 次以上的任务&lt;/li&gt;
&lt;li&gt;创建技能目录&lt;/li&gt;
&lt;li&gt;编写 SKILL.md&lt;/li&gt;
&lt;li&gt;测试并迭代&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;第-2-3-周构建技能包&#34;&gt;第 2-3 周：构建技能包
&lt;/h3&gt;&lt;p&gt;将相关技能组合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;blog-writing（6 个子技能）&lt;/li&gt;
&lt;li&gt;内容创作（4 个技能）&lt;/li&gt;
&lt;li&gt;记忆系统（5 个技能）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;第-4-周技能协作&#34;&gt;第 4 周：技能协作
&lt;/h3&gt;&lt;p&gt;让技能相互调用：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;博客发布流水线&lt;/li&gt;
&lt;li&gt;内容创作自动化&lt;/li&gt;
&lt;li&gt;知识管理闭环&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;一个月后&#34;&gt;一个月后
&lt;/h3&gt;&lt;p&gt;你会发现：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✅ 重复任务自动化率 &amp;gt; 80%&lt;/li&gt;
&lt;li&gt;✅ AI 越用越懂你的偏好&lt;/li&gt;
&lt;li&gt;✅ 从&amp;quot;操作者&amp;quot;变成&amp;quot;指挥者&amp;quot;&lt;/li&gt;
&lt;li&gt;✅ 拥有一支 24/7 待命的 AI Agent 团队&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;结语工具变成团队助手变成协作者&#34;&gt;结语：工具变成团队，助手变成协作者
&lt;/h2&gt;&lt;p&gt;Claude Skills 最大的价值不在于&amp;quot;自动化&amp;quot;，而在于&lt;strong&gt;思维方式的质变&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;正如编译器的&amp;quot;自举&amp;quot;开启了现代编程时代，Skills 的&amp;quot;模块化&amp;quot;可能正在开启&lt;strong&gt;智能编程时代&lt;/strong&gt;的大门。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;转变的关键&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;从&amp;quot;写代码&amp;quot;到&amp;quot;orchestrate 代码&amp;quot;&lt;/li&gt;
&lt;li&gt;从&amp;quot;通用助手&amp;quot;到&amp;quot;专业团队&amp;quot;&lt;/li&gt;
&lt;li&gt;从&amp;quot;一次性对话&amp;quot;到&amp;quot;可积累经验&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;而人类工程师的角色，将从&amp;quot;代码的书写者&amp;quot;，转变为&amp;quot;智能系统的指挥者&amp;quot;——这或许是更令人兴奋的未来。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;参考资料&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://zapier.com/blog/claude-skills/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Zapier: Claude Skills 指南&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.xugj520.cn/en/archives/claude-code-skills-autonomous-agent-guide.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;高效码农: Skills 解析&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=nbqqnl3JdR0&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Code with Beto: YouTube 教程&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=OdtGN27LchE&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Riley Brown: Agent Team 实战&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Cursor vs Claude Code：双剑合璧的编程工作流</title>
        <link>https://blog.ccino.org/p/cursor-vs-claude-code-workflow/</link>
        <pubDate>Sat, 24 Jan 2026 15:30:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/cursor-vs-claude-code-workflow/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/cursor-vs-claude-code-workflow/dual-swords-concept.png" alt="Featured image of post Cursor vs Claude Code：双剑合璧的编程工作流" /&gt;&lt;h2 id=&#34;引言&#34;&gt;引言
&lt;/h2&gt;&lt;p&gt;2024-2025年，AI编程工具经历了爆发式增长。在众多工具中，&lt;strong&gt;Cursor&lt;/strong&gt; 和 &lt;strong&gt;Claude Code&lt;/strong&gt; 无疑是最受开发者关注的两款产品。&lt;/p&gt;
&lt;p&gt;很多人会问：&amp;ldquo;到底该选哪一个？&amp;rdquo;&lt;/p&gt;
&lt;p&gt;但我的答案是：&lt;strong&gt;两者都选，用对场景&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;经过几个月的深度使用，我发现这两款工具各有千秋，正确的做法是理解它们的特点，在合适的场景使用合适的工具。今天就来分享我的&amp;quot;双剑合璧&amp;quot;编程工作流。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/cursor-vs-claude-code-workflow/imgs/dual-swords-concept.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/cursor-vs-claude-code-workflow/imgs/dual-swords-concept_hu_4f6fac1fb9a5259a.png 480w, https://blog.ccino.org/p/cursor-vs-claude-code-workflow/imgs/dual-swords-concept_hu_f6bdc2e6e755e75b.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;双剑合璧概念图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;一cursorai原生ide的革命&#34;&gt;一、Cursor：AI原生IDE的革命
&lt;/h2&gt;&lt;h3 id=&#34;11-核心特点&#34;&gt;1.1 核心特点
&lt;/h3&gt;&lt;p&gt;Cursor 是一款&lt;strong&gt;基于VSCode改造的AI原生IDE&lt;/strong&gt;，它的核心理念是&amp;quot;让AI成为你的结对编程伙伴&amp;quot;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;核心功能：&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;功能&lt;/th&gt;
          &lt;th&gt;说明&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Tab补全&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;实时代码补全，类似GitHub Copilot&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Cmd+K&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;选中代码后，用自然语言描述修改需求&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Cmd+L&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;打开AI聊天面板，进行对话式编程&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Cmd+I&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;全项目上下文的代码生成&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Composer（.cursorrules）&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;自定义AI行为规则&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;12-cursor的独特优势&#34;&gt;1.2 Cursor的独特优势
&lt;/h3&gt;&lt;h4 id=&#34;优势1深度集成的工作流&#34;&gt;优势1：深度集成的工作流
&lt;/h4&gt;&lt;p&gt;Cursor不是简单的&amp;quot;AI插件&amp;quot;，而是从底层重新设计的IDE：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;传统工作流：写代码 → 切换到ChatGPT → 复制答案 → 粘贴回编辑器
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Cursor工作流：写代码 → Cmd+K → AI直接修改代码 → 确认/拒绝
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这种无缝集成带来的效率提升是巨大的。&lt;/p&gt;
&lt;h4 id=&#34;优势2多文件编辑能力&#34;&gt;优势2：多文件编辑能力
&lt;/h4&gt;&lt;p&gt;Cursor的Composer模式可以同时理解多个文件：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 我的使用场景&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;帮我重构 src/auth/ 目录下的所有登录相关代码，统一错误处理&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;分析 user.ts 和 order.ts 的关联，找出可能的N+1查询问题&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id=&#34;优势3cursorrules-自定义规则&#34;&gt;优势3：.cursorrules 自定义规则
&lt;/h4&gt;&lt;p&gt;通过 &lt;code&gt;.cursorrules&lt;/code&gt; 文件，你可以为项目定制AI行为：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ini&#34; data-lang=&#34;ini&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# .cursorrules&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 我的 Python 项目规则&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;- 使用中文注释&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;- 函数必须包含docstring&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;- 优先使用类型注解&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;- 遵循PEP 8规范&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;13-cursor的最佳使用场景&#34;&gt;1.3 Cursor的最佳使用场景
&lt;/h3&gt;&lt;p&gt;✅ &lt;strong&gt;适合Cursor的场景：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;大规模代码重构&lt;/li&gt;
&lt;li&gt;多文件协同修改&lt;/li&gt;
&lt;li&gt;需要频繁迭代的功能开发&lt;/li&gt;
&lt;li&gt;熟悉VSCode的开发者&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;❌ &lt;strong&gt;不太适合的场景：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一次性脚本编写&lt;/li&gt;
&lt;li&gt;轻量级代码修改&lt;/li&gt;
&lt;li&gt;不习惯VSCode的开发者&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;二claude-codeagent驱动的命令行工具&#34;&gt;二、Claude Code：Agent驱动的命令行工具
&lt;/h2&gt;&lt;h3 id=&#34;21-核心特点&#34;&gt;2.1 核心特点
&lt;/h3&gt;&lt;p&gt;Claude Code 是 Anthropic 推出的&lt;strong&gt;命令行AI编程助手&lt;/strong&gt;，它的特点是强大的Agent能力和命令行原生体验。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;核心功能：&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;功能&lt;/th&gt;
          &lt;th&gt;说明&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Agent系统&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;可以自主规划和执行复杂任务&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;工具调用&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;原生支持Read/Write/Edit/Grep等文件操作&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;子任务拆解&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;自动将复杂任务分解为多个步骤&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;多模型支持&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;可切换Claude 3.5/Opus/Haiku等模型&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;上下文管理&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;智能管理token使用，避免超限&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;22-claude-code的独特优势&#34;&gt;2.2 Claude Code的独特优势
&lt;/h3&gt;&lt;h4 id=&#34;优势1真正的agent能力&#34;&gt;优势1：真正的Agent能力
&lt;/h4&gt;&lt;p&gt;Claude Code不是一个简单的&amp;quot;对话机器人&amp;quot;，而是能够自主规划、执行、反思的Agent：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;用户：&amp;#34;优化这个Python项目的性能&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Claude Code的思考过程：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1. 分析项目结构 → 找到性能瓶颈
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2. 使用Grep搜索 → 定位慢查询代码
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3. 提出优化方案 → 生成改进代码
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4. 执行测试 → 验证优化效果
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;5. 生成报告 → 总结优化结果
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id=&#34;优势2精深的上下文理解&#34;&gt;优势2：精深的上下文理解
&lt;/h4&gt;&lt;p&gt;相比Cursor的&amp;quot;聊天窗口&amp;quot;，Claude Code使用&lt;strong&gt;结构化的工具调用&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// Cursor：通过对话理解上下文
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;用户&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;看看 utils.js 的 helper 函数&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;AI&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;需要对话获取更多信息&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// Claude Code：直接读取文件
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;AI&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;自动调用&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Read&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;工具读取&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;utils&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;js&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;AI&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;分析完整文件内容后给出精准回答&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id=&#34;优势3完美适配命令行工作流&#34;&gt;优势3：完美适配命令行工作流
&lt;/h4&gt;&lt;p&gt;如果你是Vim/Neovim/终端用户，Claude Code是更自然的选择：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 在 tmux 终端中使用&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude-code  &lt;span class=&#34;c1&#34;&gt;# 启动对话&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# AI可以执行命令、修改文件、运行测试&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;23-claude-code的最佳使用场景&#34;&gt;2.3 Claude Code的最佳使用场景
&lt;/h3&gt;&lt;p&gt;✅ &lt;strong&gt;适合Claude Code的场景：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需要深度代码分析的任务&lt;/li&gt;
&lt;li&gt;复杂的自动化工作流&lt;/li&gt;
&lt;li&gt;命令行原生工作流&lt;/li&gt;
&lt;li&gt;需要精确工具调用的场景&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;❌ &lt;strong&gt;不太适合的场景：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;习惯GUI的开发者&lt;/li&gt;
&lt;li&gt;需要实时预览的场景&lt;/li&gt;
&lt;li&gt;轻量级代码补全需求&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;三双剑合璧我的混合工作流&#34;&gt;三、双剑合璧：我的混合工作流
&lt;/h2&gt;&lt;p&gt;经过几个月的实践，我总结出了一套&lt;strong&gt;场景驱动的混合工作流&lt;/strong&gt;：&lt;/p&gt;
&lt;h3 id=&#34;31-决策树何时使用哪个工具&#34;&gt;3.1 决策树：何时使用哪个工具？
&lt;/h3&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/cursor-vs-claude-code-workflow/imgs/decision-tree.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/cursor-vs-claude-code-workflow/imgs/decision-tree_hu_5e2b9f39686ce965.png 480w, https://blog.ccino.org/p/cursor-vs-claude-code-workflow/imgs/decision-tree_hu_13076c681a2383a.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;工具选择决策树&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;32-典型使用场景对比&#34;&gt;3.2 典型使用场景对比
&lt;/h3&gt;&lt;h4 id=&#34;场景1快速实现新功能&#34;&gt;场景1：快速实现新功能
&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;使用Cursor：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1. 创建新文件
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2. Cmd+K：&amp;#34;创建一个用户认证API，使用JWT&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3. AI生成代码
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4. 实时预览和调整
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;使用Claude Code：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1. 告诉Claude：&amp;#34;创建用户认证系统&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2. Claude自动规划步骤
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3. 执行：创建文件、生成代码、编写测试
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4. 一次性完成
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;我的选择：&lt;/strong&gt; 简单功能用Cursor，复杂系统用Claude Code&lt;/p&gt;
&lt;h4 id=&#34;场景2代码重构&#34;&gt;场景2：代码重构
&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;使用Cursor：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1. 选中需要重构的代码块
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2. Cmd+K：&amp;#34;提取为独立函数，添加错误处理&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3. 确认修改
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;使用Claude Code：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1. 告诉Claude：&amp;#34;重构 auth.js，提高可维护性&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2. Claude分析整个文件
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3. 提出重构方案
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4. 执行并生成报告
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;我的选择：&lt;/strong&gt; 局部重构用Cursor，全局重构用Claude Code&lt;/p&gt;
&lt;h4 id=&#34;场景3调试问题&#34;&gt;场景3：调试问题
&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;使用Cursor：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1. 打开Cmd+L聊天面板
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2. 粘贴错误信息
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3. AI分析并给出建议
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;使用Claude Code：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1. 告诉Claude：&amp;#34;调试这个bug&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2. Claude自动：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   - 读取相关文件
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   - 分析日志
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   - 搜索错误模式
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   - 定位问题
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;我的选择：&lt;/strong&gt; 简单bug用Cursor，复杂问题用Claude Code&lt;/p&gt;
&lt;h3 id=&#34;33-我的一天工作流&#34;&gt;3.3 我的一天工作流
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;上午（编码模式）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── 快速功能开发 → Cursor
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── 代码补全 → Cursor Tab
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── 简单重构 → Cursor Cmd+K
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;下午（深度工作）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── 代码审查 → Claude Code
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── 架构分析 → Claude Code
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── 自动化脚本 → Claude Code
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;晚上（学习模式）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── 代码库探索 → Claude Code
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── 技术调研 → 两者皆可
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── 文档整理 → Claude Code
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;四进阶技巧让两者协同工作&#34;&gt;四、进阶技巧：让两者协同工作
&lt;/h2&gt;&lt;h3 id=&#34;41-使用cursor进行快速迭代&#34;&gt;4.1 使用Cursor进行快速迭代
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 场景：快速实现一个API端点&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 1. 创建文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 2. 使用 Cmd+K 生成初始代码&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nd&#34;&gt;@app.post&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;/api/users&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;async&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;create_user&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;user&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;UserCreate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&amp;#34;创建新用户&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# Cursor 生成基础代码&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;pass&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 3. 使用 Cmd+K 逐步完善&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# &amp;#34;添加输入验证&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# &amp;#34;添加错误处理&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# &amp;#34;添加日志记录&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;优势：&lt;/strong&gt; 实时反馈，快速迭代&lt;/p&gt;
&lt;h3 id=&#34;42-使用claude-code进行深度分析&#34;&gt;4.2 使用Claude Code进行深度分析
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 场景：分析大型代码库的性能问题&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 启动 Claude Code&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude-code
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 描述任务&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;分析 src/ 目录下的所有API端点，
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;找出可能导致N+1查询的代码模式，
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;并生成优化建议报告&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Claude会：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 1. 扫描所有文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 2. 识别数据库查询模式&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 3. 分析关联查询&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 4. 生成详细报告&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;优势：&lt;/strong&gt; 系统性分析，自动化执行&lt;/p&gt;
&lt;h3 id=&#34;43-混合工作流示例&#34;&gt;4.3 混合工作流示例
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;场景：迁移旧代码到新架构&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/cursor-vs-claude-code-workflow/imgs/hybrid-workflow-steps.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/cursor-vs-claude-code-workflow/imgs/hybrid-workflow-steps_hu_5ee129a3b8b8b269.png 480w, https://blog.ccino.org/p/cursor-vs-claude-code-workflow/imgs/hybrid-workflow-steps_hu_fb97eff49540bc03.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;混合工作流三步骤&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;五常见问题faq&#34;&gt;五、常见问题FAQ
&lt;/h2&gt;&lt;h3 id=&#34;q1-哪个更便宜&#34;&gt;Q1: 哪个更便宜？
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;工具&lt;/th&gt;
          &lt;th&gt;定价模式&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Cursor&lt;/td&gt;
          &lt;td&gt;订阅制：$20/月（Pro版）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Claude Code&lt;/td&gt;
          &lt;td&gt;按token计费：约$0.15/1M输入token&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;建议：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;重度编码用户：Cursor的订阅制更划算&lt;/li&gt;
&lt;li&gt;偶尔使用：Claude Code的按需付费更灵活&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;q2-学习曲线哪个更陡&#34;&gt;Q2: 学习曲线哪个更陡？
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Cursor：&lt;/strong&gt; ⭐⭐☆☆☆&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果你熟悉VSCode，几乎零学习成本&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Claude Code：&lt;/strong&gt; ⭐⭐⭐☆☆&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需要理解Agent的工作方式&lt;/li&gt;
&lt;li&gt;需要熟悉命令行操作&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;q3-可以同时使用吗&#34;&gt;Q3: 可以同时使用吗？
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;完全可以！&lt;/strong&gt; 我推荐的方式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;主力编辑器：Cursor（日常编码）&lt;/li&gt;
&lt;li&gt;辅助工具：Claude Code（深度任务）&lt;/li&gt;
&lt;li&gt;两者可以同时打开，各司其职&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;六总结与建议&#34;&gt;六、总结与建议
&lt;/h2&gt;&lt;h3 id=&#34;61-快速决策指南&#34;&gt;6.1 快速决策指南
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;如果你是...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── VSCode重度用户 → 选择Cursor
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── 命令行爱好者 → 选择Claude Code
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── 需要AI结对编程 → 选择Cursor
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── 需要AI自动化助手 → 选择Claude Code
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── 追求最大化效率 → 两者都使用
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;62-我的配置推荐&#34;&gt;6.2 我的配置推荐
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;主流开发者配置：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;主力IDE: Cursor Pro ($20/月)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;辅助工具: Claude Code (按需付费)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;预算有限配置：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;主力IDE: VSCode + 免费工具
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;辅助工具: Claude Code (按需付费，控制在$5-10/月)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;63-最终建议&#34;&gt;6.3 最终建议
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;不要纠结于&amp;quot;选择哪一个&amp;quot;&lt;/strong&gt;，而是思考&amp;quot;如何搭配使用&amp;quot;。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cursor是你的&lt;strong&gt;日常武器&lt;/strong&gt;，用于快速的、迭代式的编码工作&lt;/li&gt;
&lt;li&gt;Claude Code是你的&lt;strong&gt;战略武器&lt;/strong&gt;，用于复杂的、需要深度思考的任务&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;双剑合璧，才是AI时代的最佳编程方式。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;延伸阅读&#34;&gt;延伸阅读
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://cursor.sh/docs&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Cursor官方文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/anthropics/claude-code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Code GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.ccino.org/Vibe-Coding-A-New-Paradigm-of-Programming-Driven/&#34; &gt;Vibe Coding：AI 驱动的编程新范式&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;

    &lt;blockquote&gt;
        &lt;p&gt;💡 &lt;strong&gt;一句话总结：&lt;/strong&gt;
Cursor让AI成为你的&amp;quot;结对程序员&amp;quot;，Claude Code让AI成为你的&amp;quot;技术顾问&amp;quot;。
两者结合，就是AI时代最强编程工作流。&lt;/p&gt;

    &lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>零成本、全隐私：Claude Code &#43; Ollama 本地编程完全指南</title>
        <link>https://blog.ccino.org/p/claude-code-ollama-local-coding-2026/</link>
        <pubDate>Sat, 24 Jan 2026 12:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/claude-code-ollama-local-coding-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/claude-code-ollama-local-coding-2026/imgs/cover.png" alt="Featured image of post 零成本、全隐私：Claude Code &#43; Ollama 本地编程完全指南" /&gt;
    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;我用了三个月的 Claude Code，API 账单花了 $500。然后我发现了 Ollama，现在成本是零。&amp;rdquo;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;这是一个真实的故事，来自一位独立开发者。在 AI 编程工具日益普及的 2026 年，&lt;strong&gt;成本&lt;/strong&gt;和&lt;strong&gt;隐私&lt;/strong&gt;已经成为很多开发者挥之不去的痛点。&lt;/p&gt;
&lt;p&gt;2026 年 1 月 16 日，一个看似普通的更新改变了这个局面：&lt;strong&gt;Ollama v0.14.0 发布，宣布兼容 Anthropic Messages API&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这意味着什么？&lt;/p&gt;
&lt;p&gt;简单来说，你现在可以用 &lt;strong&gt;Claude Code&lt;/strong&gt; + &lt;strong&gt;本地模型&lt;/strong&gt; = &lt;strong&gt;零成本、全隐私的 AI 编程体验&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-code-ollama-local-coding-2026/imgs/cover.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-code-ollama-local-coding-2026/imgs/cover_hu_a86ba73fe3def2a6.png 480w, https://blog.ccino.org/p/claude-code-ollama-local-coding-2026/imgs/cover_hu_2ea8e56194193a1a.png 1024w&#34;
	loading=&#34;lazy&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;为什么这个组合如此重要&#34;&gt;为什么这个组合如此重要？
&lt;/h2&gt;&lt;p&gt;在深入配置之前，让我们先理解为什么这个组合如此重要。&lt;/p&gt;
&lt;h3 id=&#34;云端-ai-编程的痛点&#34;&gt;云端 AI 编程的痛点
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;痛点&lt;/th&gt;
          &lt;th&gt;具体表现&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;成本压力&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;Claude Opus 4.5: $5/1M tokens，高频开发者月账单轻松超过 $100&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;隐私担忧&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;公司代码、敏感逻辑被上传到云端，合规风险&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;网络依赖&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;离线环境无法使用，网络延迟影响体验&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;用量限制&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;API 有速率限制，高峰期可能被限流&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;claude-code--ollama-的解决方案&#34;&gt;Claude Code + Ollama 的解决方案
&lt;/h3&gt;&lt;p&gt;当 Claude Code 遇上 Ollama，你得到的是一个：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;完全免费&lt;/strong&gt;：本地模型运行，零 API 成本&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;真正隐私&lt;/strong&gt;：数据永不离开你的机器&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;离线可用&lt;/strong&gt;：无需网络连接&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;无限制使用&lt;/strong&gt;：想怎么用就怎么用&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;什么是-claude-code-和-ollama&#34;&gt;什么是 Claude Code 和 Ollama？
&lt;/h2&gt;&lt;h3 id=&#34;claude-codeanthropic-的-cli-编程助手&#34;&gt;Claude Code：Anthropic 的 CLI 编程助手
&lt;/h3&gt;&lt;p&gt;Claude Code 是 Anthropic 官方推出的命令行 AI 编程工具：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;多文件编辑&lt;/strong&gt;：可以同时修改多个文件&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Git 集成&lt;/strong&gt;：原生支持 Git worktrees&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;长上下文&lt;/strong&gt;：支持 200K token 的上下文窗口&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MCP 支持&lt;/strong&gt;：可扩展的 Model Context Protocol&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;ollama本地-llm-运行平台&#34;&gt;Ollama：本地 LLM 运行平台
&lt;/h3&gt;&lt;p&gt;Ollama 是一个简单的本地 LLM 运行工具：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;一键安装&lt;/strong&gt;：macOS/Linux/Windows 全平台支持&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;模型丰富&lt;/strong&gt;：支持 Llama、Qwen、DeepSeek 等众多开源模型&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;API 兼容&lt;/strong&gt;：从 v0.14.0 开始兼容 OpenAI/Anthropic API&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;量化友好&lt;/strong&gt;：支持 GGUF 格式，显存需求低&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;快速开始5-分钟搭建本地-ai-编程环境&#34;&gt;快速开始：5 分钟搭建本地 AI 编程环境
&lt;/h2&gt;&lt;h3 id=&#34;第一步安装-ollama&#34;&gt;第一步：安装 Ollama
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;macOS/Linux：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://ollama.com/install.sh &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Windows：&lt;/strong&gt;
下载 &lt;a class=&#34;link&#34; href=&#34;https://ollama.com/download&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ollama 官方安装包&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;验证安装：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama --version
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 输出：ollama version is 0.14.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;第二步拉取代码模型&#34;&gt;第二步：拉取代码模型
&lt;/h3&gt;&lt;p&gt;推荐的本地编程模型：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;模型&lt;/th&gt;
          &lt;th&gt;大小&lt;/th&gt;
          &lt;th&gt;适用场景&lt;/th&gt;
          &lt;th&gt;拉取命令&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;qwen2.5-coder:14b&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;~9GB&lt;/td&gt;
          &lt;td&gt;通用编程，中文友好&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;ollama pull qwen2.5-coder:14b&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;deepseek-coder:16b&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;~10GB&lt;/td&gt;
          &lt;td&gt;Python/JS 专用&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;ollama pull deepseek-coder:16b&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;codegemma:7b&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;~5GB&lt;/td&gt;
          &lt;td&gt;轻量级任务&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;ollama pull codegemma:7b&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;qwen2.5-coder:32b&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;~20GB&lt;/td&gt;
          &lt;td&gt;高性能编程&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;ollama pull qwen2.5-coder:32b&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;我的推荐&lt;/strong&gt;：从 &lt;code&gt;qwen2.5-coder:14b&lt;/code&gt; 开始，平衡了性能和资源需求。&lt;/p&gt;
&lt;h3 id=&#34;第三步启动-ollama-服务&#34;&gt;第三步：启动 Ollama 服务
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 启动 Ollama 服务（后台运行）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama serve
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;验证服务运行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl http://localhost:11434/api/tags
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 应该返回你已安装的模型列表&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;第四步配置-claude-code&#34;&gt;第四步：配置 Claude Code
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;设置环境变量：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# ~/.bashrc 或 ~/.zshrc&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;ANTHROPIC_API_URL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;http://localhost:11434/v1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;ANTHROPIC_API_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;ollama  &lt;span class=&#34;c1&#34;&gt;# 可以是任意字符串&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;ANTHROPIC_MODEL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;qwen2.5-coder:14b  &lt;span class=&#34;c1&#34;&gt;# 指定使用的模型&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;或者使用配置文件：&lt;/strong&gt; &lt;code&gt;~/.claude/config.json&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;apiUrl&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;http://localhost:11434/v1&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;apiKey&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;ollama&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;model&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;qwen2.5-coder:14b&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;重新加载配置：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;source&lt;/span&gt; ~/.bashrc  &lt;span class=&#34;c1&#34;&gt;# 或 source ~/.zshrc&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;第五步验证连接&#34;&gt;第五步：验证连接
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 测试 Claude Code 连接&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude &lt;span class=&#34;s2&#34;&gt;&amp;#34;你好，请介绍一下你自己&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果看到本地模型回复，恭喜你，配置成功了！&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-code-ollama-local-coding-2026/imgs/setup-success.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-code-ollama-local-coding-2026/imgs/setup-success_hu_bb8511b96406f45d.png 480w, https://blog.ccino.org/p/claude-code-ollama-local-coding-2026/imgs/setup-success_hu_425c39efcddd1c8a.png 1024w&#34;
	loading=&#34;lazy&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;实战测试本地-vs-云端&#34;&gt;实战测试：本地 vs 云端
&lt;/h2&gt;&lt;p&gt;我用了三个真实任务来测试本地模型的实际表现：&lt;/p&gt;
&lt;h3 id=&#34;测试-1简单-crud-生成&#34;&gt;测试 1：简单 CRUD 生成
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;任务&lt;/strong&gt;：用 Node.js + Express 写一个简单的 TODO API&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;云端 Claude (Opus 4.5)&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;速度：~3 秒&lt;/li&gt;
&lt;li&gt;质量：一次性生成，代码规范，带注释&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;本地 Qwen2.5-Coder 14B&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;速度：~8 秒&lt;/li&gt;
&lt;li&gt;质量：一次性生成，代码可用，需要小幅调整&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;结论&lt;/strong&gt;：对于常见任务，本地模型完全够用。&lt;/p&gt;
&lt;h3 id=&#34;测试-2代码审查和优化&#34;&gt;测试 2：代码审查和优化
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;任务&lt;/strong&gt;：审查一段 200 行的 JavaScript 代码，提出优化建议&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;云端 Claude&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;分析全面，包含性能、安全、可维护性多角度&lt;/li&gt;
&lt;li&gt;提供具体的重构方案&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;本地模型&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;能发现主要问题&lt;/li&gt;
&lt;li&gt;建议相对简单，但实用&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;结论&lt;/strong&gt;：本地模型适合日常代码审查，复杂架构问题可能需要云端。&lt;/p&gt;
&lt;h3 id=&#34;测试-3理解大型代码库&#34;&gt;测试 3：理解大型代码库
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;任务&lt;/strong&gt;：解释一个开源项目的核心架构&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;云端 Claude&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;能快速理解整体结构&lt;/li&gt;
&lt;li&gt;提供深入的分析&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;本地模型&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需要更多上下文&lt;/li&gt;
&lt;li&gt;但可以无限次提问，不用考虑成本&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;结论&lt;/strong&gt;：本地模型的优势在于&amp;quot;免费&amp;quot;，可以反复提问直到理解。&lt;/p&gt;
&lt;h2 id=&#34;性能对比详解&#34;&gt;性能对比详解
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-code-ollama-local-coding-2026/imgs/comparison.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-code-ollama-local-coding-2026/imgs/comparison_hu_6a31261a13fe2c5e.png 480w, https://blog.ccino.org/p/claude-code-ollama-local-coding-2026/imgs/comparison_hu_c57a00b1092c11e6.png 1024w&#34;
	loading=&#34;lazy&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;维度&lt;/th&gt;
          &lt;th&gt;云端 Claude Opus 4.5&lt;/th&gt;
          &lt;th&gt;本地 Ollama (14B)&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;成本&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;$5/1M tokens (~$50/月重度用户)&lt;/td&gt;
          &lt;td&gt;完全免费&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;隐私&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;数据上传到云端&lt;/td&gt;
          &lt;td&gt;100% 本地&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;速度&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;~3-5 秒响应&lt;/td&gt;
          &lt;td&gt;~8-15 秒响应&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;质量&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;最强&lt;/td&gt;
          &lt;td&gt;中上等&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;上下文&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;200K tokens&lt;/td&gt;
          &lt;td&gt;取决于模型配置&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;网络&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;必须联网&lt;/td&gt;
          &lt;td&gt;完全离线&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;硬件&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;无要求&lt;/td&gt;
          &lt;td&gt;需要 GPU/大内存&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;硬件需求参考&#34;&gt;硬件需求参考
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;模型大小&lt;/th&gt;
          &lt;th&gt;推荐 GPU&lt;/th&gt;
          &lt;th&gt;最小内存&lt;/th&gt;
          &lt;th&gt;CPU 推理速度&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;7B&lt;/td&gt;
          &lt;td&gt;GTX 1060 6G&lt;/td&gt;
          &lt;td&gt;16GB&lt;/td&gt;
          &lt;td&gt;~5 tok/s&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;14B&lt;/td&gt;
          &lt;td&gt;RTX 3060 12G&lt;/td&gt;
          &lt;td&gt;32GB&lt;/td&gt;
          &lt;td&gt;~3 tok/s&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;32B&lt;/td&gt;
          &lt;td&gt;RTX 4070 16G&lt;/td&gt;
          &lt;td&gt;64GB&lt;/td&gt;
          &lt;td&gt;~2 tok/s&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;纯 CPU 运行&lt;/strong&gt;：可以，但速度会慢很多（~0.5 tok/s）&lt;/p&gt;
&lt;h2 id=&#34;适用场景分析&#34;&gt;适用场景分析
&lt;/h2&gt;&lt;h3 id=&#34;-本地模型非常适合&#34;&gt;✅ 本地模型非常适合：
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;个人学习项目&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;练习编程、做 side project&lt;/li&gt;
&lt;li&gt;成本敏感，不需要最强性能&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;隐私敏感场景&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;公司内部代码&lt;/li&gt;
&lt;li&gt;金融、医疗等行业&lt;/li&gt;
&lt;li&gt;不想把代码上传到云端&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;离线环境&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;飞机上、咖啡店（网络差）&lt;/li&gt;
&lt;li&gt;内网开发环境&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;高频使用&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;每天大量使用 AI 编程&lt;/li&gt;
&lt;li&gt;月账单超过 $50 的人&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;-本地模型不适合&#34;&gt;❌ 本地模型不适合：
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;复杂架构设计&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需要深度的技术洞察&lt;/li&gt;
&lt;li&gt;云端 Opus 的能力仍然领先&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;硬件资源有限&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;没有 GPU，内存 &amp;lt; 16GB&lt;/li&gt;
&lt;li&gt;笔记本电脑性能较弱&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;快速原型开发&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需要最快的响应速度&lt;/li&gt;
&lt;li&gt;对代码质量要求极高&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;高级配置技巧&#34;&gt;高级配置技巧
&lt;/h2&gt;&lt;h3 id=&#34;1-模型热切换&#34;&gt;1. 模型热切换
&lt;/h3&gt;&lt;p&gt;创建一个脚本快速切换模型：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# ~/.local/bin/switch-model&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#!/bin/bash&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;MODEL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;ANTHROPIC_MODEL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$MODEL&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Switched to &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$MODEL&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;使用：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;switch-model qwen2.5-coder:32b  &lt;span class=&#34;c1&#34;&gt;# 切换到高性能模式&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;switch-model codegemma:7b       &lt;span class=&#34;c1&#34;&gt;# 切换到轻量模式&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;2-并发配置&#34;&gt;2. 并发配置
&lt;/h3&gt;&lt;p&gt;优化 Ollama 的并发设置：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# ~/.ollama/config.json&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s2&#34;&gt;&amp;#34;num_gpu&amp;#34;&lt;/span&gt;: 1,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s2&#34;&gt;&amp;#34;num_thread&amp;#34;&lt;/span&gt;: 8,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s2&#34;&gt;&amp;#34;max_queue&amp;#34;&lt;/span&gt;: &lt;span class=&#34;m&#34;&gt;10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;3-量化模型节省显存&#34;&gt;3. 量化模型节省显存
&lt;/h3&gt;&lt;p&gt;使用量化版本：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 拉取量化版本（Q4_K_M，推荐）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama pull qwen2.5-coder:14b-q4_K_M
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 查看可用量化版本&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama list qwen2.5-coder
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;量化等级对比：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;量化&lt;/th&gt;
          &lt;th&gt;显存需求&lt;/th&gt;
          &lt;th&gt;质量&lt;/th&gt;
          &lt;th&gt;速度&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Q4_K_M&lt;/td&gt;
          &lt;td&gt;~9GB&lt;/td&gt;
          &lt;td&gt;95%&lt;/td&gt;
          &lt;td&gt;最快&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Q5_K_M&lt;/td&gt;
          &lt;td&gt;~11GB&lt;/td&gt;
          &lt;td&gt;98%&lt;/td&gt;
          &lt;td&gt;很快&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Q8_0&lt;/td&gt;
          &lt;td&gt;~15GB&lt;/td&gt;
          &lt;td&gt;99.9%&lt;/td&gt;
          &lt;td&gt;快&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;F16&lt;/td&gt;
          &lt;td&gt;~28GB&lt;/td&gt;
          &lt;td&gt;100%&lt;/td&gt;
          &lt;td&gt;中等&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;4-与-vs-code-集成&#34;&gt;4. 与 VS Code 集成
&lt;/h3&gt;&lt;p&gt;使用 Claude Code VS Code 扩展：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;安装扩展：&lt;code&gt;Claude Code&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;设置使用本地 API：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;claudeCode.apiUrl&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;http://localhost:11434/v1&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;claudeCode.apiKey&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;ollama&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;claudeCode.model&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;qwen2.5-coder:14b&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;混合策略取长补短&#34;&gt;混合策略：取长补短
&lt;/h2&gt;&lt;p&gt;经过实际使用，我发现最佳方案是 &lt;strong&gt;云端 + 本地混合使用&lt;/strong&gt;：&lt;/p&gt;
&lt;h3 id=&#34;混合使用决策树&#34;&gt;混合使用决策树
&lt;/h3&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-code-ollama-local-coding-2026/imgs/decision-tree.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-code-ollama-local-coding-2026/imgs/decision-tree_hu_6c281da436dd53cf.png 480w, https://blog.ccino.org/p/claude-code-ollama-local-coding-2026/imgs/decision-tree_hu_d703c23f9fec28f6.png 1024w&#34;
	loading=&#34;lazy&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;决策流程&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;开始一个新任务
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ├─ 是否涉及敏感代码？
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │   └─ 是 → 本地模型
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │   └─ 否 → 继续
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ├─ 是复杂架构设计？
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │   └─ 是 → 云端 Opus
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │   └─ 否 → 继续
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ├─ 需要快速响应？
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │   └─ 是 → 云端 Sonnet
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │   └─ 否 → 继续
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    └─ 本地模型（省钱！）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;实际使用建议&#34;&gt;实际使用建议
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;场景&lt;/th&gt;
          &lt;th&gt;推荐方案&lt;/th&gt;
          &lt;th&gt;理由&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;日常编码&lt;/td&gt;
          &lt;td&gt;本地 14B&lt;/td&gt;
          &lt;td&gt;免费，够用&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;代码审查&lt;/td&gt;
          &lt;td&gt;本地 14B&lt;/td&gt;
          &lt;td&gt;可以反复问&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;学习新技术&lt;/td&gt;
          &lt;td&gt;云端 Sonnet&lt;/td&gt;
          &lt;td&gt;理解更深入&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;公司项目&lt;/td&gt;
          &lt;td&gt;本地模型&lt;/td&gt;
          &lt;td&gt;隐私优先&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;复杂重构&lt;/td&gt;
          &lt;td&gt;云端 Opus&lt;/td&gt;
          &lt;td&gt;能力更强&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Side Project&lt;/td&gt;
          &lt;td&gt;本地模型&lt;/td&gt;
          &lt;td&gt;成本优先&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;常见问题解决&#34;&gt;常见问题解决
&lt;/h2&gt;&lt;h3 id=&#34;q1-claude-code-连接不上-ollama&#34;&gt;Q1: Claude Code 连接不上 Ollama
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;检查清单：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 1. 确认 Ollama 服务运行&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl http://localhost:11434/api/tags
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 2. 检查环境变量&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$ANTHROPIC_API_URL&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$ANTHROPIC_API_KEY&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 3. 查看 Claude Code 日志&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude --debug &lt;span class=&#34;s2&#34;&gt;&amp;#34;test&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;q2-模型生成质量差&#34;&gt;Q2: 模型生成质量差
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;可能的解决方案：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;换更大的模型（7B → 14B → 32B）&lt;/li&gt;
&lt;li&gt;调整 temperature 参数&lt;/li&gt;
&lt;li&gt;提供更详细的 prompt&lt;/li&gt;
&lt;li&gt;使用量化级别更高的版本&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;q3-速度太慢&#34;&gt;Q3: 速度太慢
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;优化方案：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;确认使用了 GPU：&lt;code&gt;nvidia-smi&lt;/code&gt; 查看显存占用&lt;/li&gt;
&lt;li&gt;降低量化等级（Q8 → Q5 → Q4）&lt;/li&gt;
&lt;li&gt;换更小的模型&lt;/li&gt;
&lt;li&gt;减少上下文长度&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;q4-显存不足&#34;&gt;Q4: 显存不足
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;解决方案：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;使用更小的模型&lt;/li&gt;
&lt;li&gt;使用 Q4 量化&lt;/li&gt;
&lt;li&gt;增加 swap 空间（CPU 模式）&lt;/li&gt;
&lt;li&gt;关闭其他占用 GPU 的程序&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;其他本地方案对比&#34;&gt;其他本地方案对比
&lt;/h2&gt;&lt;p&gt;除了 Ollama，还有其他本地方案：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;方案&lt;/th&gt;
          &lt;th&gt;优点&lt;/th&gt;
          &lt;th&gt;缺点&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Ollama&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;最简单，模型多&lt;/td&gt;
          &lt;td&gt;定制性较弱&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;LM Studio&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;GUI 界面，易用&lt;/td&gt;
          &lt;td&gt;占用资源多&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;llama.cpp&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;最灵活，高性能&lt;/td&gt;
          &lt;td&gt;需要编译&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;vLLM&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;生产级性能&lt;/td&gt;
          &lt;td&gt;配置复杂&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Oobabooga&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;Web UI，功能全&lt;/td&gt;
          &lt;td&gt;资源占用大&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;对于个人开发者，Ollama 是最推荐的&lt;/strong&gt;：简单、免费、够用。&lt;/p&gt;
&lt;h2 id=&#34;未来展望&#34;&gt;未来展望
&lt;/h2&gt;&lt;p&gt;本地 AI 编程的未来是什么？&lt;/p&gt;
&lt;h3 id=&#34;趋势-1模型能力持续提升&#34;&gt;趋势 1：模型能力持续提升
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;2026 年：开源 7B 模型 ≈ 2024 年 GPT-4&lt;/li&gt;
&lt;li&gt;2027 年：本地 14B 可能追平云端 Opus&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;趋势-2硬件成本下降&#34;&gt;趋势 2：硬件成本下降
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;专用的 AI 推理卡（如 NPU）将普及&lt;/li&gt;
&lt;li&gt;笔记本电脑原生支持大模型推理&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;趋势-3混合架构成为主流&#34;&gt;趋势 3：混合架构成为主流
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;┌─────────────────────────────────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│  本地 AI      +     云端 AI          │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│  (隐私/成本)       (能力/速度)       │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└─────────────────────────────────────┘
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         │                  │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         ▼                  ▼
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    日常编码          复杂任务
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    代码审查          架构设计
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    学习练习          创意生成
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;p&gt;Claude Code + Ollama 的组合，让本地 AI 编程变得&lt;strong&gt;简单、免费、隐私友好&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;立即开始：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 一键启动&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://ollama.com/install.sh &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama pull qwen2.5-coder:14b
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;ANTHROPIC_API_URL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;http://localhost:11434/v1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;ANTHROPIC_API_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;ollama
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude &lt;span class=&#34;s2&#34;&gt;&amp;#34;帮我写一个 TODO API&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;我的建议：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果你是&lt;strong&gt;个人开发者&lt;/strong&gt;：直接上本地方案，省钱&lt;/li&gt;
&lt;li&gt;如果你在&lt;strong&gt;大公司&lt;/strong&gt;：本地方案解决隐私问题&lt;/li&gt;
&lt;li&gt;如果你是&lt;strong&gt;独立黑客&lt;/strong&gt;：本地方案降低运营成本&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;最重要的：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;不要等待&amp;quot;完美时机&amp;quot;。现在就开始，哪怕用最小的 7B 模型，也比完全不用好。&lt;/p&gt;
&lt;hr&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;最好的本地 AI 编程环境，是你现在就开始用的那个。&amp;rdquo;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;参考资源&#34;&gt;参考资源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ollama.com/blog/claude&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ollama 官方文档 - Claude Code 兼容性&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.anthropic.com/claude-code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Code 官方文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/LocalLLaMA/comments/1qi321f/claude_code_now_supports_local_llms_ollama/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reddit 讨论 - Claude Code + Ollama&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ollama.com/search&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ollama 模型库&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/QwenLM/Qwen2.5-Coder&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Qwen2.5-Coder 模型介绍&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Claude Code的&#34;自举&#34;奇迹：90%的代码是AI写的</title>
        <link>https://blog.ccino.org/p/claude-code-bootstrapping-miracle/</link>
        <pubDate>Fri, 23 Jan 2026 12:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/claude-code-bootstrapping-miracle/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/claude-code-bootstrapping-miracle/claude-code-bootstrapping-miracle.png" alt="Featured image of post Claude Code的&#34;自举&#34;奇迹：90%的代码是AI写的" /&gt;
    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;90%的Claude Code代码是由Claude Code自己编写的。&amp;rdquo;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;——Addy Osmani，Anthropic工程师，2026年1月&lt;/p&gt;
&lt;p&gt;这个数字的意义远超表面。这不是&amp;quot;AI辅助人类写代码&amp;quot;的故事，而是&amp;quot;AI在写自己&amp;quot;的新篇章——一种被称为&amp;quot;&lt;strong&gt;自举&lt;/strong&gt;（Bootstrapping）&amp;ldquo;的现象正在AI Agent世界悄然发生。&lt;/p&gt;
&lt;p&gt;当AI开始编写自己的代码，我们正在见证一个划时代的转折点：从工具到伙伴，再到某种程度上的&amp;quot;自我创造者&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-code-bootstrapping-miracle/imgs/bootstrapping-comic.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-code-bootstrapping-miracle/imgs/bootstrapping-comic_hu_27442a1c0f5da7b8.png 480w, https://blog.ccino.org/p/claude-code-bootstrapping-miracle/imgs/bootstrapping-comic_hu_e63e725707cdd44d.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;AI自举概念漫画&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;什么是自举从编译器说起&#34;&gt;什么是&amp;quot;自举&amp;quot;？从编译器说起
&lt;/h2&gt;&lt;p&gt;&amp;ldquo;自举&amp;rdquo;（Bootstrapping）这个词源自编译器领域的经典概念：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;第一个C编译器&lt;/strong&gt;，是用汇编语言写的&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;然后用这个汇编写成的编译器&lt;/strong&gt;，编译C语言写的编译器源码&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;从此以后&lt;/strong&gt;，C编译器就可以用C自己写自己了&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;自举的本质&lt;/strong&gt;：一个系统一旦具备基本能力，就能用这个能力来增强和完善自己。&lt;/p&gt;
&lt;p&gt;Claude Code 的&amp;quot;90%自举&amp;quot;正是这个概念在AI时代的再现——只不过这次的主角从编译器变成了AI Agent。&lt;/p&gt;
&lt;h2 id=&#34;addy-osmani的ai辅助工程方法论&#34;&gt;Addy Osmani的&amp;quot;AI辅助工程&amp;quot;方法论
&lt;/h2&gt;&lt;p&gt;Addy Osmani 并非简单地让AI&amp;quot;自动写代码&amp;quot;。他在博文中详细阐述了2026年的AI编程工作流：&lt;/p&gt;
&lt;h3 id=&#34;三大核心原则&#34;&gt;三大核心原则
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;1. 清晰的方向（Clear Direction）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不把AI当作&amp;quot;魔法棒&amp;quot;&lt;/li&gt;
&lt;li&gt;明确知道要构建什么、为什么构建&lt;/li&gt;
&lt;li&gt;人类负责战略，AI负责战术&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;2. 丰富的上下文（Rich Context）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;通过MCP（Model Context Protocol）连接外部知识&lt;/li&gt;
&lt;li&gt;让AI理解整个项目架构和历史&lt;/li&gt;
&lt;li&gt;&amp;ldquo;AI-Native&amp;quot;的代码组织方式&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;3. 持续的监督（Ongoing Supervision）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI写代码，人类orchestrate&lt;/li&gt;
&lt;li&gt;代码审查、测试验证仍是人类职责&lt;/li&gt;
&lt;li&gt;90% AI写 ≠ 0% 人类参与&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;关键认知&#34;&gt;关键认知
&lt;/h3&gt;&lt;p&gt;Addy强调：&lt;strong&gt;&amp;ldquo;这不是取代工程师，而是创造AI-Native Software Engineer——那些懂得如何与AI协作、让AI发挥最大效能的新一代工程师。&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;claude-code的技术优势为什么能做到&#34;&gt;Claude Code的技术优势：为什么能做到？
&lt;/h2&gt;&lt;p&gt;并非所有AI编程工具都能实现&amp;quot;自举&amp;rdquo;。Claude Code能做到这一点，源于几个关键技术创新：&lt;/p&gt;
&lt;h3 id=&#34;1-mcpmodel-context-protocol生态&#34;&gt;1. MCP（Model Context Protocol）生态
&lt;/h3&gt;&lt;p&gt;MCP是Anthropic开源的协议，让AI能够连接各种数据源和工具：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;读取代码库、文档、API规范&lt;/li&gt;
&lt;li&gt;访问数据库、云服务&lt;/li&gt;
&lt;li&gt;执行测试、部署脚本&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;这意味着&lt;/strong&gt;：Claude Code不是在&amp;quot;瞎猜&amp;quot;代码，而是基于完整的上下文进行推理。&lt;/p&gt;
&lt;h3 id=&#34;2-subagents架构&#34;&gt;2. Subagents架构
&lt;/h3&gt;&lt;p&gt;Claude Code内置了&lt;strong&gt;多Agent协作系统&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;主Agent负责整体orchestration&lt;/li&gt;
&lt;li&gt;子Agent专注于特定任务（搜索、文件操作、测试等）&lt;/li&gt;
&lt;li&gt;Agent之间可以并行工作&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;自举的关键&lt;/strong&gt;：Claude Code用Subagents架构来写Subagents的代码——这是一个递归的增强循环。&lt;/p&gt;
&lt;h3 id=&#34;3-长上下文与项目级理解&#34;&gt;3. 长上下文与项目级理解
&lt;/h3&gt;&lt;p&gt;Claude的超长上下文窗口让AI能够：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;理解整个项目的架构&lt;/li&gt;
&lt;li&gt;保持跨文件的代码一致性&lt;/li&gt;
&lt;li&gt;进行大规模重构而不破坏逻辑&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;没有这种&amp;quot;全局视野&amp;quot;，AI写再多代码也只是&amp;quot;局部最优&amp;quot;，无法形成可运行的系统。&lt;/p&gt;
&lt;h2 id=&#34;自举ai进化的必经之路&#34;&gt;自举：AI进化的必经之路
&lt;/h2&gt;&lt;p&gt;从历史视角看，AI编程的发展经历了四个阶段：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-code-bootstrapping-miracle/imgs/evolution-stages-comic.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-code-bootstrapping-miracle/imgs/evolution-stages-comic_hu_f92fac844b19117d.png 480w, https://blog.ccino.org/p/claude-code-bootstrapping-miracle/imgs/evolution-stages-comic_hu_fa6d37479105d224.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;AI编程四阶段进化&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;Claude Code 的&amp;quot;90%自举&amp;quot;标志着我们已进入第四阶段。&lt;/p&gt;
&lt;h3 id=&#34;编译器的启示&#34;&gt;编译器的启示
&lt;/h3&gt;&lt;p&gt;编译器历史告诉我们：&lt;strong&gt;自举是技术成熟的标志&lt;/strong&gt;。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;第一个自举编译器出现后，C/C++/Go/Rust等语言都采用了自举模式&lt;/li&gt;
&lt;li&gt;自举让语言开发者能用语言本身来增强语言&lt;/li&gt;
&lt;li&gt;bug修复和特性开发变得更快&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;AI Agent的自举可能带来类似的效应：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI可以更快地修复自己的bug&lt;/li&gt;
&lt;li&gt;新功能可以由AI自己实现&lt;/li&gt;
&lt;li&gt;进化速度呈指数级加速&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;争议与思考自举时代的挑战&#34;&gt;争议与思考：自举时代的挑战
&lt;/h2&gt;&lt;h3 id=&#34;质量可控吗&#34;&gt;质量可控吗？
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;质疑&lt;/strong&gt;：AI写的代码，质量可靠吗？&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;现实&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;代码质量取决于&lt;strong&gt;测试覆盖率&lt;/strong&gt;和&lt;strong&gt;审查流程&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Claude Code能自动生成测试，这是优势&lt;/li&gt;
&lt;li&gt;但最终责任仍在人类工程师&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;安全性如何保证&#34;&gt;安全性如何保证？
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;质疑&lt;/strong&gt;：AI自举会导致失控吗？&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;现实&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;自举 ≠ 自主决策&lt;/li&gt;
&lt;li&gt;人类仍在设定目标、边界和价值观&lt;/li&gt;
&lt;li&gt;&amp;ldquo;AI写AI&amp;quot;更像是&amp;quot;高级自动化&amp;rdquo;，而非&amp;quot;独立意识&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;人类工程师的价值何在&#34;&gt;人类工程师的价值何在？
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;质疑&lt;/strong&gt;：AI能自举了，还需要人类吗？&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;现实&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;创造力&lt;/strong&gt;：定义问题、设计架构&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;判断力&lt;/strong&gt;：权衡trade-offs、做出决策&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;责任&lt;/strong&gt;：为系统行为负责&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Addy Osmani 总结得好：&lt;strong&gt;&amp;ldquo;AI让工程师从&amp;rsquo;写代码&amp;rsquo;升级为&amp;rsquo;orchestrate代码&amp;rsquo;。&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;未来展望自举之后的下一个阶段&#34;&gt;未来展望：自举之后的下一个阶段？
&lt;/h2&gt;&lt;p&gt;如果90%的代码可以由AI自举，那么：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;开发速度&lt;/strong&gt;：新功能的迭代周期将大幅缩短&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;系统复杂度&lt;/strong&gt;：AI可以管理比人类更复杂的系统&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;进化方向&lt;/strong&gt;：AI可能会探索人类未曾设想的设计模式&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;但同时，我们也需要思考：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如何设计&amp;quot;自举的边界&amp;quot;？&lt;/li&gt;
&lt;li&gt;如何确保AI自举符合人类价值观？&lt;/li&gt;
&lt;li&gt;工程师的核心技能将如何演变？&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;结语自举是起点不是终点&#34;&gt;结语：自举是起点，不是终点
&lt;/h2&gt;&lt;p&gt;Claude Code 的&amp;quot;90%自举&amp;quot;是一个里程碑，但它更像是一个起点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;起点&lt;/strong&gt;：AI可以写自己的代码&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方向&lt;/strong&gt;：AI可以在人类引导下持续自我增强&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;终点&lt;/strong&gt;：人机协作的新范式——AI-Native Engineering&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;正如编译器的自举开启了现代编程时代，AI的自举可能正在开启&lt;strong&gt;智能编程时代&lt;/strong&gt;的大门。&lt;/p&gt;
&lt;p&gt;而人类工程师的角色，将从&amp;quot;代码的书写者&amp;quot;，转变为&amp;quot;智能系统的orchestrator&amp;quot;——这或许是更令人兴奋的未来。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;参考资料&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://addyosmani.com/blog/ai-coding-workflow/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Addy Osmani - My LLM coding workflow going into 2026&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.axios.com/2026/01/17/ai-coding-claude-apps&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Axios - The AI future is here&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=sy65ARFI9Bg&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ray Amjad - My Claude Code Workflow for 2026&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Vibe Coding：AI 驱动的编程新范式（2025-2026 回顾与展望）</title>
        <link>https://blog.ccino.org/p/vibe-coding-ai-paradigm-2025-2026/</link>
        <pubDate>Thu, 22 Jan 2026 13:37:38 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/vibe-coding-ai-paradigm-2025-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/vibe-coding-ai-paradigm-2025-2026/Vibe%20Coding%20A%20New%20Paradigm%20of%20Programming%20Driven.png" alt="Featured image of post Vibe Coding：AI 驱动的编程新范式（2025-2026 回顾与展望）" /&gt;
    &lt;blockquote&gt;
        &lt;p&gt;&lt;strong&gt;&amp;ldquo;忘记代码的存在，专注于解决问题。&amp;rdquo;&lt;/strong&gt; — Andrej Karpathy&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;h2 id=&#34;-目录&#34;&gt;📑 目录
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#%e4%bb%80%e4%b9%88%e6%98%af-vibe-coding&#34; &gt;什么是 Vibe Coding？&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#%e4%bb%8e-vibe-%e5%88%b0-context%e6%a6%82%e5%bf%b5%e6%bc%94%e8%bf%9b&#34; &gt;从 Vibe 到 Context：概念演进&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#2025-%e5%b9%b4%e5%b7%a5%e5%85%b7%e7%94%9f%e6%80%81%e7%b3%bb%e7%bb%9f%e5%9b%9e%e9%a1%be&#34; &gt;2025 年工具生态系统回顾&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#%e4%b8%89%e7%a7%8d%e7%bc%96%e7%a8%8b%e6%a8%a1%e5%bc%8f%e5%af%b9%e6%af%94&#34; &gt;三种编程模式对比&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#%e4%bc%98%e5%8a%bf%e4%b8%8e%e6%8c%91%e6%88%98&#34; &gt;优势与挑战&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#%e5%ae%9e%e8%b7%b5%e5%bb%ba%e8%ae%ae&#34; &gt;实践建议&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#%e5%ad%a6%e4%b9%a0%e8%b7%af%e5%be%84&#34; &gt;学习路径&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#2026-%e5%b9%b4%e5%b1%95%e6%9c%9b&#34; &gt;2026 年展望&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#%e7%bb%93%e8%ae%ba%e4%bb%8e%e6%a6%82%e5%bf%b5%e5%88%b0%e7%8e%b0%e5%ae%9e&#34; &gt;结论：从概念到现实&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;什么是-vibe-coding&#34;&gt;什么是 Vibe Coding？
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Vibe Coding&lt;/strong&gt; 是 2025 年初由 AI 研究员 Andrej Karpathy 提出的一种全新软件开发方法论。这一概念在 2025 年迅速演变，最终形成了更加系统化的 &lt;strong&gt;Context Coding&lt;/strong&gt; 方法论。核心理念包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;自然语言驱动&lt;/strong&gt;：用自然语言描述需求，而非手动编写代码&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI 协作开发&lt;/strong&gt;：将 AI 作为编程伙伴，而非简单工具&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;快速原型验证&lt;/strong&gt;：通过对话快速迭代，验证想法&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Accept All 模式&lt;/strong&gt;：不审查 diff，直接接受 AI 建议&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;关键数据2025-年统计&#34;&gt;关键数据（2025 年统计）
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;指标&lt;/th&gt;
          &lt;th&gt;数据&lt;/th&gt;
          &lt;th&gt;来源&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;开发者采用率&lt;/td&gt;
          &lt;td&gt;92% 日常使用 AI 工具&lt;/td&gt;
          &lt;td&gt;GitHub Survey 2025&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;生产力提升&lt;/td&gt;
          &lt;td&gt;平均 3.2 倍&lt;/td&gt;
          &lt;td&gt;McKinsey Tech Report&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;2026年市场规模&lt;/td&gt;
          &lt;td&gt;预计 $180 亿&lt;/td&gt;
          &lt;td&gt;Gartner Prediction&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;FAANG AI 代码比例&lt;/td&gt;
          &lt;td&gt;80%&lt;/td&gt;
          &lt;td&gt;Industry Analysis 2025&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;MCP 服务器数量&lt;/td&gt;
          &lt;td&gt;500+&lt;/td&gt;
          &lt;td&gt;MCP Registry 2025 Q4&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/vibe-coding-ai-paradigm-2025-2026/imgs/vibe-coding-concept.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/vibe-coding-ai-paradigm-2025-2026/imgs/vibe-coding-concept_hu_bcd9e64ebfc4162b.png 480w, https://blog.ccino.org/p/vibe-coding-ai-paradigm-2025-2026/imgs/vibe-coding-concept_hu_8daa3f44335eba7e.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Vibe Coding 核心概念&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;从-vibe-到-context概念演进&#34;&gt;从 Vibe 到 Context：概念演进
&lt;/h2&gt;&lt;h3 id=&#34;vibe-coding原始定义&#34;&gt;Vibe Coding（原始定义）
&lt;/h3&gt;&lt;p&gt;Karpathy 的原始理念：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;forget the code even exists&amp;rdquo; - 忘记代码存在&lt;/li&gt;
&lt;li&gt;几乎不手动编写代码&lt;/li&gt;
&lt;li&gt;完全依赖 AI 解决错误&lt;/li&gt;
&lt;li&gt;适用场景：快速原型、个人实验、一次性任务&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;概念泛化问题&#34;&gt;概念泛化问题
&lt;/h3&gt;&lt;p&gt;Vibe Coding 被广泛误解为&amp;quot;任何 AI 辅助编程&amp;quot;，导致概念模糊。&lt;/p&gt;
&lt;h3 id=&#34;context-coding更准确的术语&#34;&gt;Context Coding（更准确的术语）
&lt;/h3&gt;&lt;p&gt;2025 年，&lt;strong&gt;guangzhengli&lt;/strong&gt; 提出了 &lt;strong&gt;Context Coding&lt;/strong&gt; 作为更准确的术语：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;核心特征&lt;/strong&gt;：通过提供丰富的上下文信息来增强 AI 编程能力&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;三大支柱&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;RAG&lt;/strong&gt;（检索增强）：从代码库中检索相关信息&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rules&lt;/strong&gt;（规则引擎）：为 AI 设定编程规范和约束&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MCP&lt;/strong&gt;（上下文协议）：标准化 AI 与开发环境的通信&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/vibe-coding-ai-paradigm-2025-2026/imgs/context-evolution.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/vibe-coding-ai-paradigm-2025-2026/imgs/context-evolution_hu_43efa9f0ee92adaa.png 480w, https://blog.ccino.org/p/vibe-coding-ai-paradigm-2025-2026/imgs/context-evolution_hu_81c1a9ea6db5b57e.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Vibe 到 Context 概念演进&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;2025-年工具生态系统回顾&#34;&gt;2025 年工具生态系统回顾
&lt;/h2&gt;&lt;h3 id=&#34;工具演化的四个阶段&#34;&gt;工具演化的四个阶段
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;阶段&lt;/th&gt;
          &lt;th&gt;时期&lt;/th&gt;
          &lt;th&gt;代表工具&lt;/th&gt;
          &lt;th&gt;核心特点&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;代码补全&lt;/td&gt;
          &lt;td&gt;2021-2023&lt;/td&gt;
          &lt;td&gt;GitHub Copilot&lt;/td&gt;
          &lt;td&gt;单文件补全&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;项目理解&lt;/td&gt;
          &lt;td&gt;2023-2024&lt;/td&gt;
          &lt;td&gt;Cursor, Amazon CodeWhisperer&lt;/td&gt;
          &lt;td&gt;项目级 RAG&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;上下文工程&lt;/td&gt;
          &lt;td&gt;2024-2025 Q1&lt;/td&gt;
          &lt;td&gt;Claude Code, Windsurf&lt;/td&gt;
          &lt;td&gt;RAG + Rules&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;MCP 生态爆发&lt;/td&gt;
          &lt;td&gt;2025 Q2-Q4&lt;/td&gt;
          &lt;td&gt;MCP 服务器生态&lt;/td&gt;
          &lt;td&gt;标准化上下文协议&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;主要工具对比2025-年末状态&#34;&gt;主要工具对比（2025 年末状态）
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;工具&lt;/th&gt;
          &lt;th&gt;类型&lt;/th&gt;
          &lt;th&gt;核心优势&lt;/th&gt;
          &lt;th&gt;MCP 支持&lt;/th&gt;
          &lt;th&gt;适用场景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;GitHub Copilot&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;AI 助手&lt;/td&gt;
          &lt;td&gt;完整生态系统、企业级支持&lt;/td&gt;
          &lt;td&gt;✅ 原生支持&lt;/td&gt;
          &lt;td&gt;日常开发、团队协作&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Cursor&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;AI 原生 IDE&lt;/td&gt;
          &lt;td&gt;多文件编辑、项目理解&lt;/td&gt;
          &lt;td&gt;✅ 原生支持&lt;/td&gt;
          &lt;td&gt;复杂项目、专业开发&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Windsurf&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;AI 原生 IDE&lt;/td&gt;
          &lt;td&gt;Cascade AI 流、隐私保护&lt;/td&gt;
          &lt;td&gt;✅ 原生支持&lt;/td&gt;
          &lt;td&gt;团队项目、隐私敏感&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Claude Code&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;CLI 工具&lt;/td&gt;
          &lt;td&gt;深度代码理解、命令行集成&lt;/td&gt;
          &lt;td&gt;✅ 原生支持&lt;/td&gt;
          &lt;td&gt;命令行开发、自动化&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Zed AI&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;新兴 IDE&lt;/td&gt;
          &lt;td&gt;极速性能、协作编辑&lt;/td&gt;
          &lt;td&gt;✅ 通过插件&lt;/td&gt;
          &lt;td&gt;性能敏感项目&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Replit AI&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;云端 IDE&lt;/td&gt;
          &lt;td&gt;一键部署、实时协作&lt;/td&gt;
          &lt;td&gt;✅ 原生支持&lt;/td&gt;
          &lt;td&gt;教育、快速原型&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;context-engineering-三大支柱详解&#34;&gt;Context Engineering 三大支柱详解
&lt;/h3&gt;&lt;h4 id=&#34;1-rag检索增强&#34;&gt;1. RAG（检索增强）
&lt;/h4&gt;&lt;p&gt;从代码库中检索相关信息提供给 AI：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;项目文件、文档、历史代码&lt;/li&gt;
&lt;li&gt;向量数据库 + 语义搜索&lt;/li&gt;
&lt;li&gt;让 AI 理解项目结构和代码风格&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;2-rules规则引擎&#34;&gt;2. Rules（规则引擎）
&lt;/h4&gt;&lt;p&gt;为 AI 设定编程规范和约束：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;编码规范、架构模式、最佳实践&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.ai-rules&lt;/code&gt; 文件配置&lt;/li&gt;
&lt;li&gt;确保生成代码符合团队标准&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;3-mcpmodel-context-protocol&#34;&gt;3. MCP（Model Context Protocol）
&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;MCP&lt;/strong&gt; 是 Anthropic 于 2024 年底提出的标准化协议，在 2025 年成为 AI 编程领域的核心基础设施。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;核心特性&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;标准化通信&lt;/strong&gt;：统一 AI 与外部服务的交互接口&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;双向数据流&lt;/strong&gt;：AI 既能读取上下文，也能执行操作&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;插件化架构&lt;/strong&gt;：模块化扩展，易于集成新服务&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;开源生态&lt;/strong&gt;：500+ 服务器，涵盖各类开发工具&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;2025 年 MCP 生态里程碑&lt;/strong&gt;：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;时间节点&lt;/th&gt;
          &lt;th&gt;事件&lt;/th&gt;
          &lt;th&gt;影响&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;2024 Q4&lt;/td&gt;
          &lt;td&gt;MCP 协议开源&lt;/td&gt;
          &lt;td&gt;奠定标准化基础&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;2025 Q2&lt;/td&gt;
          &lt;td&gt;GitHub 官方支持&lt;/td&gt;
          &lt;td&gt;MCP 与 GitHub Actions 集成&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;2025 Q3&lt;/td&gt;
          &lt;td&gt;Cursor 原生支持&lt;/td&gt;
          &lt;td&gt;MCP 成为 IDE 标配&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;2025 Q4&lt;/td&gt;
          &lt;td&gt;企业级 MCP 服务器&lt;/td&gt;
          &lt;td&gt;AWS/Azure/GCP 纷纷推出&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;2025 Q4&lt;/td&gt;
          &lt;td&gt;NPM 包突破 1000+&lt;/td&gt;
          &lt;td&gt;生态爆发增长&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;热门 MCP 服务器示例&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;@modelcontextprotocol/server-filesystem&lt;/strong&gt;：文件系统操作&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;@modelcontextprotocol/server-github&lt;/strong&gt;：GitHub API 集成&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;@modelcontextprotocol/server-sqlite&lt;/strong&gt;：数据库操作&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;@modelcontextprotocol/server-brave-search&lt;/strong&gt;：网络搜索&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;exa-mcp&lt;/strong&gt;：智能搜索 API&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;rube-mcp&lt;/strong&gt;：AI 工作流自动化&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/vibe-coding-ai-paradigm-2025-2026/imgs/context-pillars.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/vibe-coding-ai-paradigm-2025-2026/imgs/context-pillars_hu_82949306e4e80d7.png 480w, https://blog.ccino.org/p/vibe-coding-ai-paradigm-2025-2026/imgs/context-pillars_hu_3d337b046a12587c.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Context Engineering 三大支柱&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;vibe-工作流程&#34;&gt;VIBE 工作流程
&lt;/h2&gt;&lt;p&gt;标准化的 AI 编程工作流程：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;V&lt;/strong&gt;erbalize（描述）：用自然语言描述需求&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;I&lt;/strong&gt;nstruct（指令）：提供结构化指令和规则&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;B&lt;/strong&gt;uild（构建）：AI 生成代码&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;E&lt;/strong&gt;valuate（评估）：测试和评估结果&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;描述：创建一个任务管理应用
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;指令：使用 React + TypeScript，包含认证和 CRUD
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;构建：AI 生成完整代码
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;评估：运行测试，检查代码质量
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/vibe-coding-ai-paradigm-2025-2026/imgs/vibe-workflow.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/vibe-coding-ai-paradigm-2025-2026/imgs/vibe-workflow_hu_b771f24ec8aa1732.png 480w, https://blog.ccino.org/p/vibe-coding-ai-paradigm-2025-2026/imgs/vibe-workflow_hu_b9310d72bd5d7b1.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;VIBE 工作流程&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;三种编程模式对比&#34;&gt;三种编程模式对比
&lt;/h2&gt;&lt;h3 id=&#34;traditional-programming传统编程&#34;&gt;Traditional Programming（传统编程）
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;适用场景&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;高性能要求模块&lt;/li&gt;
&lt;li&gt;安全关键组件&lt;/li&gt;
&lt;li&gt;算法密集型功能&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;特点&lt;/strong&gt;：完全人工控制、代码质量最高、开发速度较慢&lt;/p&gt;
&lt;h3 id=&#34;vibe-programming氛围编程&#34;&gt;Vibe Programming（氛围编程）
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;适用场景&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;快速原型开发&lt;/li&gt;
&lt;li&gt;个人项目和实验&lt;/li&gt;
&lt;li&gt;一次性任务&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;特点&lt;/strong&gt;：极快开发速度、创造性不受限、不适合长期维护&lt;/p&gt;
&lt;h3 id=&#34;context-programming上下文编程&#34;&gt;Context Programming（上下文编程）
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;适用场景&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;企业级应用开发&lt;/li&gt;
&lt;li&gt;团队协作项目&lt;/li&gt;
&lt;li&gt;现代化转型&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;特点&lt;/strong&gt;：平衡速度与质量、团队协作友好、企业级支持&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/vibe-coding-ai-paradigm-2025-2026/imgs/programming-modes.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/vibe-coding-ai-paradigm-2025-2026/imgs/programming-modes_hu_89be55858cf5832a.png 480w, https://blog.ccino.org/p/vibe-coding-ai-paradigm-2025-2026/imgs/programming-modes_hu_6eca205ff915484a.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;三种编程模式对比&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;优势与挑战&#34;&gt;优势与挑战
&lt;/h2&gt;&lt;h3 id=&#34;主要优势&#34;&gt;主要优势
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;效率提升&lt;/strong&gt;：原型开发从数天缩短至数小时&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;创造力增强&lt;/strong&gt;：快速尝试不同实现方案&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;用户体验改善&lt;/strong&gt;：降低学习门槛，减少挫败感&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;面临挑战&#34;&gt;面临挑战
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;代码质量&lt;/strong&gt;：50% 的 AI 生成代码存在安全隐患&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;团队协作&lt;/strong&gt;：代码风格不一致、知识共享困难&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;解决方案&lt;/strong&gt;：建立严格代码审查流程、使用静态分析工具&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;实践建议&#34;&gt;实践建议
&lt;/h2&gt;&lt;h3 id=&#34;工具选择策略&#34;&gt;工具选择策略
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;项目规模&lt;/th&gt;
          &lt;th&gt;推荐工具&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;小型项目&lt;/td&gt;
          &lt;td&gt;GitHub Copilot + VS Code&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;中型项目&lt;/td&gt;
          &lt;td&gt;Cursor + GitHub Copilot&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;大型项目&lt;/td&gt;
          &lt;td&gt;Windsurf + Claude Code&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;企业项目&lt;/td&gt;
          &lt;td&gt;定制 AI 工具链&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;代码质量保证&#34;&gt;代码质量保证
&lt;/h3&gt;&lt;p&gt;建立质量标准：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;性能标准&lt;/strong&gt;：页面加载 &amp;lt; 2s，API 响应 &amp;lt; 100ms&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;安全标准&lt;/strong&gt;：OWASP Top 10 防护、输入验证&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可维护性&lt;/strong&gt;：代码覆盖率 &amp;gt; 80%、复杂度 &amp;lt; 10&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;自动化质量检查：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;静态分析：ESLint, Prettier, SonarQube&lt;/li&gt;
&lt;li&gt;测试策略：Jest + Cypress，80% 覆盖率&lt;/li&gt;
&lt;li&gt;安全检查：Snyk + OWASP ZAP&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;学习路径&#34;&gt;学习路径
&lt;/h2&gt;&lt;h3 id=&#34;第一阶段基础建设1-2个月&#34;&gt;第一阶段：基础建设（1-2个月）
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;掌握一门编程语言基础（Python/JavaScript）&lt;/li&gt;
&lt;li&gt;熟悉基本 AI 工具（GitHub Copilot）&lt;/li&gt;
&lt;li&gt;完成简单项目（个人博客、待办应用）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;第二阶段技能提升2-4个月&#34;&gt;第二阶段：技能提升（2-4个月）
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;深入学习框架（React/Node.js）&lt;/li&gt;
&lt;li&gt;掌握 Claude Code/Cursor 高级功能&lt;/li&gt;
&lt;li&gt;完成全栈项目（电商应用、实时聊天）&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;2026-年展望&#34;&gt;2026 年展望
&lt;/h2&gt;&lt;h3 id=&#34;技术发展趋势&#34;&gt;技术发展趋势
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;已实现的 2025 预测&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✅ &lt;strong&gt;多模态 AI 集成&lt;/strong&gt;：图像、语音、文本无缝切换（Claude 3.5 Sonnet, GPT-4o）&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;智能化程度提升&lt;/strong&gt;：AI 从项目历史学习，主动提供建议&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;企业级集成&lt;/strong&gt;：深度集成到开发流程&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;2026 年新趋势&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🚀 &lt;strong&gt;Agentic AI&lt;/strong&gt;：AI 代理自主完成复杂任务链&lt;/li&gt;
&lt;li&gt;🚀 &lt;strong&gt;实时协作编程&lt;/strong&gt;：多人 + AI 实时协同开发&lt;/li&gt;
&lt;li&gt;🚀 &lt;strong&gt;自我改进系统&lt;/strong&gt;：AI 自动优化代码库&lt;/li&gt;
&lt;li&gt;🚀 &lt;strong&gt;低代码/无代码融合&lt;/strong&gt;：Vibe Coding 与可视化工具结合&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;开发者角色转变&#34;&gt;开发者角色转变
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;维度&lt;/th&gt;
          &lt;th&gt;2020 传统开发&lt;/th&gt;
          &lt;th&gt;2025 AI 协作&lt;/th&gt;
          &lt;th&gt;2026 代理编排&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;核心技能&lt;/td&gt;
          &lt;td&gt;手写代码&lt;/td&gt;
          &lt;td&gt;提示词工程 + 编程&lt;/td&gt;
          &lt;td&gt;AI 系统架构 + 上下文设计&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;工作方式&lt;/td&gt;
          &lt;td&gt;独立开发&lt;/td&gt;
          &lt;td&gt;AI 协作开发&lt;/td&gt;
          &lt;td&gt;AI 代理编排&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;价值创造&lt;/td&gt;
          &lt;td&gt;代码实现&lt;/td&gt;
          &lt;td&gt;快速原型验证&lt;/td&gt;
          &lt;td&gt;解决复杂问题&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;2026 年核心技能&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;系统架构设计&lt;/strong&gt;：设计可维护的 AI 协作系统&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;上下文工程&lt;/strong&gt;：构建高质量的项目上下文&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI 代理编排&lt;/strong&gt;：协调多个 AI 代理协同工作&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;质量意识&lt;/strong&gt;：建立 AI 代码审查和测试体系&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;持续学习&lt;/strong&gt;：跟上 AI 工具的快速迭代&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/vibe-coding-ai-paradigm-2025-2026/imgs/developer-evolution.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/vibe-coding-ai-paradigm-2025-2026/imgs/developer-evolution_hu_457086ce8470a35.png 480w, https://blog.ccino.org/p/vibe-coding-ai-paradigm-2025-2026/imgs/developer-evolution_hu_894e464e4a7d1e08.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;开发者角色演变 2020-2026&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;结论从概念到现实&#34;&gt;结论：从概念到现实
&lt;/h2&gt;&lt;p&gt;Vibe Coding 和 Context Coding 在 2025 年完成了从概念到成熟的转变。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2025 年里程碑回顾&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✅ &lt;strong&gt;概念成熟&lt;/strong&gt;：从 Vibe 到 Context 的系统化方法&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;技术完善&lt;/strong&gt;：Context Engineering + MCP 成为行业标准&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;生态爆发&lt;/strong&gt;：500+ MCP 服务器，所有主流 IDE 原生支持&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;企业采用&lt;/strong&gt;：92% 开发者日常使用 AI 工具&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;效率验证&lt;/strong&gt;：平均 3.2 倍生产力提升&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;质量保障&lt;/strong&gt;：AI 代码审查、测试自动化工具成熟&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;2026 展望&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🎯 &lt;strong&gt;Agentic AI&lt;/strong&gt;：AI 代理将承担更多自主任务&lt;/li&gt;
&lt;li&gt;🎯 &lt;strong&gt;标准化&lt;/strong&gt;：MCP 2.0 规范发布，更强大的上下文能力&lt;/li&gt;
&lt;li&gt;🎯 &lt;strong&gt;企业级&lt;/strong&gt;：更多企业构建定制化 MCP 服务器&lt;/li&gt;
&lt;li&gt;🎯 &lt;strong&gt;教育普及&lt;/strong&gt;：AI 编程成为 CS 教育标配&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;给开发者的建议&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;拥抱变化&lt;/strong&gt;：AI 编程不是威胁，而是杠杆&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;深度学习 MCP&lt;/strong&gt;：掌握上下文协议将成核心竞争力&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;保持技术深度&lt;/strong&gt;：AI 是工具，不是替代品&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;建立质量意识&lt;/strong&gt;：AI 代码更需要严格审查&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;持续实践&lt;/strong&gt;：在实践中找到适合自己的工作流&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;关注生态&lt;/strong&gt;：MCP 生态每周都有新工具诞生&lt;/li&gt;
&lt;/ol&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&lt;strong&gt;未来的程序员将是 AI 的指挥者、上下文的架构师、质量的守门人。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2026 年，不是 AI 淘汰程序员，而是会用 AI 的程序员淘汰不会用 AI 的程序员。&lt;/strong&gt;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;参考文献&#34;&gt;参考文献
&lt;/h2&gt;&lt;h3 id=&#34;核心概念来源&#34;&gt;核心概念来源
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Karpathy, A.&lt;/strong&gt; (2025). &lt;em&gt;Vibe Coding Concept&lt;/em&gt;. &lt;a class=&#34;link&#34; href=&#34;https://x.com/karpathy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Twitter/X&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;guangzhengli&lt;/strong&gt; (2025). &lt;em&gt;谈谈 AI 编程工具的进化与 Vibe Coding&lt;/em&gt;. &lt;a class=&#34;link&#34; href=&#34;https://guangzhengli.com/blog/zh/vibe-coding-and-context-coding&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;文章链接&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;mcp-协议资源&#34;&gt;MCP 协议资源
&lt;/h3&gt;&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;&lt;strong&gt;Anthropic&lt;/strong&gt; (2024-2025). &lt;em&gt;Model Context Protocol (MCP)&lt;/em&gt;. &lt;a class=&#34;link&#34; href=&#34;https://modelcontextprotocol.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;官方文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MCP SDK&lt;/strong&gt; (2025). &lt;em&gt;Node.js Python TypeScript SDK&lt;/em&gt;. &lt;a class=&#34;link&#34; href=&#34;https://github.com/modelcontextprotocol&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MCP Servers Registry&lt;/strong&gt; (2025). &lt;em&gt;500+ Community Servers&lt;/em&gt;. &lt;a class=&#34;link&#34; href=&#34;https://www.modelcontextprotocol.io/servers&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MCP Exchange&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;工具官网&#34;&gt;工具官网
&lt;/h3&gt;&lt;ol start=&#34;6&#34;&gt;
&lt;li&gt;&lt;strong&gt;GitHub Copilot&lt;/strong&gt; - &lt;a class=&#34;link&#34; href=&#34;https://github.com/features/copilot&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;官网&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cursor&lt;/strong&gt; - &lt;a class=&#34;link&#34; href=&#34;https://www.cursor.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;官网&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Claude Code&lt;/strong&gt; - &lt;a class=&#34;link&#34; href=&#34;https://claude.ai/code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;官网&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Windsurf (Codeium)&lt;/strong&gt; - &lt;a class=&#34;link&#34; href=&#34;https://codeium.com/windsurf&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;官网&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Zed&lt;/strong&gt; - &lt;a class=&#34;link&#34; href=&#34;https://zed.dev/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;官网&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;行业报告&#34;&gt;行业报告
&lt;/h3&gt;&lt;ol start=&#34;11&#34;&gt;
&lt;li&gt;&lt;strong&gt;GitHub&lt;/strong&gt; (2025). &lt;em&gt;2025 GitHub Global Developer Survey&lt;/em&gt;. &lt;a class=&#34;link&#34; href=&#34;https://github.blog/news-insights/company-news/github-2025-developer-survey/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;报告&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;McKinsey &amp;amp; Company&lt;/strong&gt; (2025). &lt;em&gt;The Economic Potential of Generative AI&lt;/em&gt;. &lt;a class=&#34;link&#34; href=&#34;https://www.mckinsey.com/capabilities/quantumblack/our-insights/the-economic-potential-of-generative-ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;报告&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gartner&lt;/strong&gt; (2025). &lt;em&gt;Predicts 2026: AI-Powered Software Development&lt;/em&gt;. &lt;a class=&#34;link&#34; href=&#34;https://www.gartner.com/en/articles/predicts-2026-ai-powered-software-development&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;报告&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;相关阅读&#34;&gt;相关阅读
&lt;/h3&gt;&lt;ol start=&#34;14&#34;&gt;
&lt;li&gt;&lt;em&gt;Context Engineering: The Future of AI Programming&lt;/em&gt; (2025)&lt;/li&gt;
&lt;li&gt;&lt;em&gt;MCP in Practice: Building Context-Aware AI Tools&lt;/em&gt; (2025)&lt;/li&gt;
&lt;li&gt;&lt;em&gt;The Rise of Agentic AI in Software Development&lt;/em&gt; (2025 Q4)&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;本文基于 2025 年最新研究和实践更新，数据和预测仅供参考。&lt;/em&gt;
&lt;em&gt;最后更新：2026-01-22&lt;/em&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>当 AI 助手开始带货：ChatGPT 广告意味着什么？</title>
        <link>https://blog.ccino.org/p/chatgpt-ads-2026/</link>
        <pubDate>Thu, 22 Jan 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/chatgpt-ads-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/chatgpt-ads-2026/chatgpt-ads-2026.png" alt="Featured image of post 当 AI 助手开始带货：ChatGPT 广告意味着什么？" /&gt;&lt;h2 id=&#34;目录&#34;&gt;目录
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#%e5%8f%91%e7%94%9f%e4%ba%86%e4%bb%80%e4%b9%88&#34; &gt;发生了什么？&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#%e4%b8%ba%e4%bb%80%e4%b9%88%e6%98%af%e7%8e%b0%e5%9c%a8&#34; &gt;为什么是现在？&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#%e8%bf%99%e6%84%8f%e5%91%b3%e7%9d%80%e4%bb%80%e4%b9%88&#34; &gt;这意味着什么？&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#ai-%e5%95%86%e4%b8%9a%e5%8c%96%e7%9a%84%e7%bb%88%e5%b1%80%e6%98%af%e4%bb%80%e4%b9%88&#34; &gt;AI 商业化的终局是什么？&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#%e7%bb%99%e7%94%a8%e6%88%b7%e7%9a%84%e5%bb%ba%e8%ae%ae&#34; &gt;给用户的建议&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#%e6%80%bb%e7%bb%93&#34; &gt;总结&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&lt;strong&gt;&amp;ldquo;当工具变成媒介，信任就变成了货币。&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;h2 id=&#34;发生了什么&#34;&gt;发生了什么？
&lt;/h2&gt;&lt;p&gt;2026年1月，OpenAI 正式宣布将在免费版 ChatGPT 中引入广告。这个决定引发了科技圈的广泛讨论，因为它标志着 AI 商业化的一个重要转折点。&lt;/p&gt;
&lt;p&gt;具体来说，这一变化意味着：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;免费用户&lt;/strong&gt;在使用 ChatGPT 时，会在对话中看到&amp;quot;赞助内容&amp;quot;或&amp;quot;推荐产品&amp;quot;&lt;/li&gt;
&lt;li&gt;广告将&lt;strong&gt;基于对话内容&lt;/strong&gt;进行智能推荐（比如聊旅游时推荐酒店）&lt;/li&gt;
&lt;li&gt;付费版（ChatGPT Plus/Team/Enterprise）&lt;strong&gt;暂不受影响&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这不是一次试探性的小规模实验——OpenAI 已经与多家广告主达成合作，计划在第一季度全面铺开广告投放。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/chatgpt-ads-2026/imgs/illustration-ai-monetization-pivot.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/chatgpt-ads-2026/imgs/illustration-ai-monetization-pivot_hu_6cee015e75262b48.png 480w, https://blog.ccino.org/p/chatgpt-ads-2026/imgs/illustration-ai-monetization-pivot_hu_eb593cef10da857d.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;AI商业化转型&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;为什么是现在&#34;&gt;为什么是现在？
&lt;/h2&gt;&lt;h3 id=&#34;订阅增长见顶&#34;&gt;订阅增长见顶
&lt;/h3&gt;&lt;p&gt;ChatGPT Plus 推出两年多，用户规模已进入平台期。2025年Q4财报显示：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;指标&lt;/th&gt;
          &lt;th&gt;数据&lt;/th&gt;
          &lt;th&gt;趋势&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;付费用户增速（年初）&lt;/td&gt;
          &lt;td&gt;20%&lt;/td&gt;
          &lt;td&gt;↘&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;付费用户增速（Q4）&lt;/td&gt;
          &lt;td&gt;5%&lt;/td&gt;
          &lt;td&gt;平台期&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;免费转付费率&lt;/td&gt;
          &lt;td&gt;&amp;lt; 5%&lt;/td&gt;
          &lt;td&gt;乏力&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;大量免费用户&lt;strong&gt;不愿或无法支付订阅费&lt;/strong&gt;，而企业客户拓展也&lt;strong&gt;低于预期&lt;/strong&gt;——数据隐私顾虑让许多公司对使用 AI 助手持谨慎态度。&lt;/p&gt;
&lt;h3 id=&#34;算力成本压力&#34;&gt;算力成本压力
&lt;/h3&gt;&lt;p&gt;GPT-4.5/GPT-5 的推理成本是 GPT-4 的 &lt;strong&gt;3-5倍&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;免费用户每次对话成本约 &lt;strong&gt;$0.01-0.03&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;仅靠订阅&lt;strong&gt;难以覆盖免费用户的基础成本&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;广告收入可以&lt;strong&gt;补贴免费服务&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这是一个现实的经济问题：AI 太贵了，而免费用户太多。&lt;/p&gt;
&lt;h3 id=&#34;竞争压力&#34;&gt;竞争压力
&lt;/h3&gt;&lt;p&gt;与此同时，竞争对手的动作也在加速：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Google Gemini&lt;/strong&gt; 早已整合搜索广告，商业化路径清晰&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Anthropic Claude&lt;/strong&gt; 仍在坚持纯订阅模式，但营收压力增大&lt;/li&gt;
&lt;li&gt;OpenAI 需要&lt;strong&gt;差异化变现路径&lt;/strong&gt;来维持领先优势&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/chatgpt-ads-2026/imgs/illustration-triple-pressure.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/chatgpt-ads-2026/imgs/illustration-triple-pressure_hu_96858b768e7f366c.png 480w, https://blog.ccino.org/p/chatgpt-ads-2026/imgs/illustration-triple-pressure_hu_825deccfb1a3b10b.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;三重压力&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;这意味着什么&#34;&gt;这意味着什么？
&lt;/h2&gt;&lt;h3 id=&#34;对用户隐私与体验的权衡&#34;&gt;对用户：隐私与体验的权衡
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;影响维度&lt;/th&gt;
          &lt;th&gt;具体表现&lt;/th&gt;
          &lt;th&gt;用户感受&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;隐私&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;对话内容可能被用于广告定向推荐&lt;/td&gt;
          &lt;td&gt;&amp;ldquo;我的聊天被用来卖广告？&amp;rdquo;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;体验&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;广告穿插在对话中，可能打断思路&lt;/td&gt;
          &lt;td&gt;&amp;ldquo;刚问完问题，先给我推个酒店&amp;rdquo;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;信任&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&amp;ldquo;AI助手&amp;quot;vs&amp;quot;广告平台&amp;quot;的身份冲突&lt;/td&gt;
          &lt;td&gt;&amp;ldquo;这个建议是真的还是广告？&amp;rdquo;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;一个潜在的场景：&lt;/strong&gt;&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;你：帮我规划一下东京旅行&lt;/p&gt;
&lt;p&gt;ChatGPT：&lt;strong&gt;[赞助] 推荐东京希尔顿酒店，AI助手专属折扣 →&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;当然！东京值得体验&amp;hellip;（继续正常回答）&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;这种&amp;quot;夹心饼干&amp;quot;式的体验，可能会让用户产生微妙的不适感——我是在和一个助手对话，还是在和一个销售员聊天？&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/chatgpt-ads-2026/imgs/illustration-user-triangle.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/chatgpt-ads-2026/imgs/illustration-user-triangle_hu_e45d742de68ff630.png 480w, https://blog.ccino.org/p/chatgpt-ads-2026/imgs/illustration-user-triangle_hu_3978ca98dadba57c.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;用户体验权衡三角&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;对行业ai-商业化的分水岭&#34;&gt;对行业：AI 商业化的分水岭
&lt;/h3&gt;&lt;h4 id=&#34;1-openai-走向google化&#34;&gt;1. OpenAI 走向&amp;quot;Google化&amp;rdquo;
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;免费服务 + 广告的搜索引擎模式&lt;/li&gt;
&lt;li&gt;从&lt;strong&gt;工具产品&lt;/strong&gt;转向&lt;strong&gt;内容分发平台&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;AI 助手&amp;quot;变成&amp;quot;AI 导购&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这让人想起 Google 的商业模式：提供免费服务，用广告变现。但区别在于，搜索是主动查询信息，而 ChatGPT 的对话更加私密和自然。&lt;/p&gt;
&lt;h4 id=&#34;2-anthropic-的机会窗口&#34;&gt;2. Anthropic 的机会窗口
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;坚持&amp;quot;无广告&amp;quot;可能吸引隐私敏感用户&lt;/li&gt;
&lt;li&gt;但收入压力也在增大&lt;/li&gt;
&lt;li&gt;能否撑到用户用钱包投票，是个问题&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;3-国内厂商跟进&#34;&gt;3. 国内厂商跟进
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;文心一言、通义千问等大概率会效仿&lt;/li&gt;
&lt;li&gt;中国用户对广告的容忍度可能更高&lt;/li&gt;
&lt;li&gt;但也可能加速用户对&amp;quot;纯净 AI&amp;quot;的需求&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;对广告主全新投放渠道&#34;&gt;对广告主：全新投放渠道
&lt;/h3&gt;&lt;p&gt;对于广告主来说，这是一个极具吸引力的新渠道：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;场景化营销&lt;/strong&gt;：基于真实需求推荐，而非猜测&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;转化率潜力高&lt;/strong&gt;：用户主动发起对话时最易被说服&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;但风险也大&lt;/strong&gt;：过度商业化会破坏信任，适得其反&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一个关键问题：如果用户发现 ChatGPT 的推荐是因为广告主付了钱，而不是真的最适合自己，信任就会瞬间崩塌。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;ai-商业化的终局是什么&#34;&gt;AI 商业化的终局是什么？
&lt;/h2&gt;&lt;h3 id=&#34;模式一订阅优先anthropic-路线&#34;&gt;模式一：订阅优先（Anthropic 路线）
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;核心逻辑&lt;/strong&gt;：用户付费换取隐私和无广告&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;挑战&lt;/strong&gt;：天花板明显，规模化困难&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;适用&lt;/strong&gt;：专业用户、企业客户&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这条路像是在走&amp;quot;精英路线&amp;quot;——愿意付费的用户享受纯净服务，但用户规模受限。&lt;/p&gt;
&lt;h3 id=&#34;模式二广告优先openai-新路线&#34;&gt;模式二：广告优先（OpenAI 新路线）
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;核心逻辑&lt;/strong&gt;：免费用户贡献注意力，付费用户买清净&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;挑战&lt;/strong&gt;：用户体验与商业化的永恒张力&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;适用&lt;/strong&gt;：大众市场&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这条路更像 Google/YouTube 的模式——免费但带广告，付费去广告。问题是，AI 助手不是搜索引擎，用户对&amp;quot;助手&amp;quot;和&amp;quot;广告平台&amp;quot;的期待是不同的。&lt;/p&gt;
&lt;h3 id=&#34;模式三混合模式未来可能&#34;&gt;模式三：混合模式（未来可能）
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;免费版 = 基础功能 + 广告
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Plus版 = 高级模型 + 无广告 + 优先响应
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Pro版 = 定制化 + 企业级隐私
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这可能是最终的平衡点——让用户根据自己的需求和预算选择。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/chatgpt-ads-2026/imgs/illustration-monetization-models.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/chatgpt-ads-2026/imgs/illustration-monetization-models_hu_1a849c00c1f22ddf.png 480w, https://blog.ccino.org/p/chatgpt-ads-2026/imgs/illustration-monetization-models_hu_95c9ae6f2ac224a6.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;三种商业化模式对比&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;我的判断&#34;&gt;我的判断
&lt;/h3&gt;&lt;p&gt;ChatGPT 卖广告不是意外，而是&lt;strong&gt;必然&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;AI 算力成本太高&lt;/strong&gt;，纯订阅难以覆盖免费用户&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;用户付费意愿有限&lt;/strong&gt;，免费模式仍是规模化的唯一路径&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;广告是成熟的商业模式&lt;/strong&gt;，Google/Amazon 已经验证&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;但关键问题是：&lt;strong&gt;AI 助手能卖广告而不失去用户的信任吗？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这取决于 OpenAI 能否做到：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✅ 广告与内容&lt;strong&gt;明确区分&lt;/strong&gt;（让用户一眼看出）&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;不干扰&lt;/strong&gt;核心对话体验（不让人烦）&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;透明告知&lt;/strong&gt;数据使用方式（不偷偷用）&lt;/li&gt;
&lt;li&gt;✅ 给付费用户&lt;strong&gt;真正有价值&lt;/strong&gt;的差异（不是只去广告）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果做不到，这可能成为 OpenAI 的&amp;quot;搜索中立性&amp;quot;时刻——用户会开始质疑：&lt;strong&gt;这个建议是为我好，还是因为广告主付了钱？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/chatgpt-ads-2026/imgs/illustration-trust-balance.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/chatgpt-ads-2026/imgs/illustration-trust-balance_hu_2055982a7ab24de6.png 480w, https://blog.ccino.org/p/chatgpt-ads-2026/imgs/illustration-trust-balance_hu_91cc329d8e28de21.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;信任与商业化的张力&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;给用户的建议&#34;&gt;给用户的建议
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;评估自己的隐私容忍度&lt;/strong&gt;：如果介意广告或数据使用，考虑升级到付费版&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;关注数据政策更新&lt;/strong&gt;：OpenAI 可能会调整隐私条款，建议定期查看&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;保持批判性思维&lt;/strong&gt;：对 AI 的&amp;quot;推荐&amp;quot;保持一分警惕，独立判断&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;关注竞品动态&lt;/strong&gt;：Anthropic/Claude 等坚持无广告的产品，可能会推出针对性策略&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;用钱包投票&lt;/strong&gt;：如果你重视隐私和无广告体验，付费订阅是支持这类产品的最好方式&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;p&gt;ChatGPT 开始卖广告，不是什么道德沦丧，而是商业现实的必然结果。AI 太贵了，免费用户太多了，订阅增长见顶了——这些因素叠加在一起，广告成了 OpenAI 不得不走的路。&lt;/p&gt;
&lt;p&gt;但对用户来说，这意味着需要重新思考与 AI 助手的关系：&lt;strong&gt;它不再只是一个中立的工具，而是一个有商业目标的平台&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;未来，我们可能会看到更多 AI 产品走上这条道路。关键在于：谁能在商业化和用户体验之间找到最佳平衡点？&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&lt;strong&gt;&amp;ldquo;信任建立需要很多年，毁掉它只需要一个广告。&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;发布日期&lt;/strong&gt;：2026-01-22
&lt;strong&gt;字数&lt;/strong&gt;：约 2,400 字
&lt;strong&gt;阅读时间&lt;/strong&gt;：约 8 分钟&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;本文为原创分析，基于公开信息和行业观察。相关数据和预测仅供参考。&lt;/em&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>2026年：该选本地AI还是云端AI？开发者实战指南</title>
        <link>https://blog.ccino.org/p/local-ai-vs-cloud-2026/</link>
        <pubDate>Tue, 20 Jan 2026 12:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/local-ai-vs-cloud-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/local-ai-vs-cloud-2026/imgs/illustration-theme-intro.png" alt="Featured image of post 2026年：该选本地AI还是云端AI？开发者实战指南" /&gt;
    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;我放弃了ChatGPT，把所有AI工作都迁移到本地LLM——这是2026年最正确的决定。&amp;rdquo;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;这是Reddit r/AI_Agents版块一个引爆讨论的热帖标题。发帖人称，2026年将是&amp;quot;本地AI之年&amp;quot;，并详细列出了他转向本地AI的三大理由：&lt;strong&gt;零延迟、真正隐私、长期成本更低&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;但事实真的这么简单吗？&lt;/p&gt;
&lt;p&gt;作为一个已经在AI领域深耕两年的开发者，我在这场&amp;quot;本地 vs 云端&amp;quot;的争论中看到了太多非此即彼的极端观点。今天，我想从&lt;strong&gt;实际使用体验&lt;/strong&gt;出发，帮你做出真正适合自己的选择。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/local-ai-vs-cloud-2026/imgs/illustration-theme-intro.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/local-ai-vs-cloud-2026/imgs/illustration-theme-intro_hu_76cf36f037f3787b.png 480w, https://blog.ccino.org/p/local-ai-vs-cloud-2026/imgs/illustration-theme-intro_hu_a45d091145b761ce.png 1024w&#34;
	loading=&#34;lazy&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;引言为什么本地ai之年引发热议&#34;&gt;引言：为什么&amp;quot;本地AI之年&amp;quot;引发热议
&lt;/h2&gt;&lt;p&gt;首先，我们得承认这个Reddit热帖戳中了很多开发者的痛点。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;为什么&amp;quot;本地AI之年&amp;quot;这个说法会引发如此强烈的共鸣？&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;云端API涨价成常态&lt;/strong&gt;：OpenAI、Anthropic在2025年多次调整价格，虽然单位成本下降，但高频用户的总支出仍在增长&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;隐私焦虑从未消失&lt;/strong&gt;：把代码、文档、商业数据上传到云端，始终是企业用户的心病&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;延迟问题无法忽视&lt;/strong&gt;：再快的API也抵不过本地推理的即时响应&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;但热帖只说了一半真相。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;同样的Reddit社区，也有人晒出账单：为了跑7B模型，花了2万块升级电脑，电费每月多出300块，最后发现性能还不如GPT-4。&lt;/p&gt;
&lt;p&gt;所以问题不是&amp;quot;哪个更好&amp;quot;，而是**&amp;ldquo;哪个更适合你&amp;rdquo;**。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/local-ai-vs-cloud-2026/imgs/illustration-local-advantages.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/local-ai-vs-cloud-2026/imgs/illustration-local-advantages_hu_dc13f21daa8be8b0.png 480w, https://blog.ccino.org/p/local-ai-vs-cloud-2026/imgs/illustration-local-advantages_hu_b4133aff18bb2c82.png 1024w&#34;
	loading=&#34;lazy&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;本地ai的三大优势&#34;&gt;本地AI的三大优势
&lt;/h2&gt;&lt;h3 id=&#34;1-零延迟的爽快体验&#34;&gt;1. 零延迟的爽快体验
&lt;/h3&gt;&lt;p&gt;这是最直观的感受。用云端API，你发送请求 → 等待网络往返 → 接收流式响应，整个过程至少1-2秒。&lt;/p&gt;
&lt;p&gt;本地AI？&lt;strong&gt;按下回车的瞬间，文字就开始涌现。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;对于以下场景，这种体验差异是巨大的：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;场景&lt;/th&gt;
          &lt;th&gt;云端API&lt;/th&gt;
          &lt;th&gt;本地AI&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;代码补全&lt;/td&gt;
          &lt;td&gt;有明显等待&lt;/td&gt;
          &lt;td&gt;几乎即时&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;长文档总结&lt;/td&gt;
          &lt;td&gt;等待5-10秒&lt;/td&gt;
          &lt;td&gt;2-3秒开始输出&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;实时对话&lt;/td&gt;
          &lt;td&gt;网络波动影响体验&lt;/td&gt;
          &lt;td&gt;稳定流畅&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;2-真正的隐私保护&#34;&gt;2. 真正的隐私保护
&lt;/h3&gt;&lt;p&gt;把敏感数据上传到云端，本质上是把控制权交给了第三方。&lt;/p&gt;
&lt;p&gt;本地AI的隐私优势体现在：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;数据不出设备&lt;/strong&gt;：你的代码、财务数据、客户信息永远在本地&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;无监控风险&lt;/strong&gt;：不用担心模型提供商使用你的数据进行训练&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;合规友好&lt;/strong&gt;：对于医疗、金融等受监管行业，本地部署更容易满足合规要求&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;但要注意&lt;/strong&gt;：本地部署≠绝对安全，你仍然需要做好设备安全、访问控制等工作。&lt;/p&gt;
&lt;h3 id=&#34;3-长期成本更低&#34;&gt;3. 长期成本更低
&lt;/h3&gt;&lt;p&gt;这是争议最大的点。让我们算一笔账：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;云端API成本&lt;/strong&gt;（以GPT-4级别模型为例）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;每天1000次API调用&lt;/li&gt;
&lt;li&gt;平均每次0.01美元&lt;/li&gt;
&lt;li&gt;月成本：300美元 ≈ 2100元人民币&lt;/li&gt;
&lt;li&gt;年成本：约25,000元&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;本地AI成本&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;硬件投入：RTX 4090（15,000元）或 Mac Studio（20,000元）&lt;/li&gt;
&lt;li&gt;电费增加：约200元/月 × 12 = 2,400元/年&lt;/li&gt;
&lt;li&gt;软件成本：0元（开源模型）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第一年总成本&lt;/strong&gt;：约17,000-22,000元&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;结论&lt;/strong&gt;：如果你的API调用量够大（每天超过500次），&lt;strong&gt;第二年之后，本地AI就能回本并开始省钱&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/local-ai-vs-cloud-2026/imgs/illustration-local-challenges.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/local-ai-vs-cloud-2026/imgs/illustration-local-challenges_hu_8748260379e67a51.png 480w, https://blog.ccino.org/p/local-ai-vs-cloud-2026/imgs/illustration-local-challenges_hu_170f8ca09ad501bd.png 1024w&#34;
	loading=&#34;lazy&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;本地ai的现实挑战&#34;&gt;本地AI的现实挑战
&lt;/h2&gt;&lt;h3 id=&#34;1-硬件门槛不低&#34;&gt;1. 硬件门槛不低
&lt;/h3&gt;&lt;p&gt;想跑得动7B模型，你至少需要：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;显存&lt;/strong&gt;：16GB起步（推荐24GB）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;内存&lt;/strong&gt;：32GB以上&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;存储&lt;/strong&gt;：至少100GB SSD空间&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这意味着一张RTX 4090（约15,000元）几乎是刚需。如果你想跑13B或更大模型，硬件成本会翻倍。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mac用户相对幸运&lt;/strong&gt;：M2/M3 Max的统一内存架构让本地AI变得更划算，但Mac Studio的价格依然不菲（2万起步）。&lt;/p&gt;
&lt;h3 id=&#34;2-性能差距客观存在&#34;&gt;2. 性能差距客观存在
&lt;/h3&gt;&lt;p&gt;这是很多人回避但必须面对的事实：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;推理能力&lt;/strong&gt;：本地7B模型 ≈ GPT-3.5水平，远逊于GPT-4/Claude Opus&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码能力&lt;/strong&gt;：本地模型在复杂任务、多文件推理上明显吃力&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;上下文窗口&lt;/strong&gt;：本地模型通常支持8K-32K，而云端已支持128K+&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你需要的是&lt;strong&gt;最强推理能力&lt;/strong&gt;，本地AI目前还无法替代云端API。&lt;/p&gt;
&lt;h3 id=&#34;3-维护成本被低估&#34;&gt;3. 维护成本被低估
&lt;/h3&gt;&lt;p&gt;跑本地AI不是&amp;quot;装完就完事&amp;quot;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;模型更新&lt;/strong&gt;：新模型发布，你得重新下载、部署&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;依赖管理&lt;/strong&gt;：Python环境、CUDA版本都可能出问题&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;性能调优&lt;/strong&gt;：量化、蒸馏、提示词优化都需要时间学习&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对于非技术背景的用户，这些都不是小事。&lt;/p&gt;
&lt;h2 id=&#34;云端ai的不可替代性&#34;&gt;云端AI的不可替代性
&lt;/h2&gt;&lt;p&gt;说了这么多本地AI的好话，我们必须承认：&lt;strong&gt;云端API在相当长一段时间内，仍是大多数人的最优选择&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id=&#34;云端不可替代的四大场景&#34;&gt;云端不可替代的四大场景
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;复杂推理任务&lt;/strong&gt;：GPT-4、Claude Opus在复杂问题上的能力，本地模型暂时无法匹敌&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多模态能力&lt;/strong&gt;：图像理解、语音交互，云端模型的成熟度远超本地&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;弹性需求&lt;/strong&gt;：项目初期需求不确定，按量付费的云端更灵活&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;团队协作&lt;/strong&gt;：多人共享、权限管理、使用统计，云端产品有完整的SaaS功能&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;云端体验的持续优化&#34;&gt;云端体验的持续优化
&lt;/h3&gt;&lt;p&gt;2025-2026年，云端AI也在进化：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;边缘节点部署&lt;/strong&gt;：OpenAI、Anthropic在全球部署更多节点，延迟已降至200ms以内&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;流式响应优化&lt;/strong&gt;：首字生成时间（TTFT）大幅缩短&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;价格持续下降&lt;/strong&gt;：GPT-4o-mini等轻量模型让单次调用成本降至0.0001美元级别&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/local-ai-vs-cloud-2026/imgs/illustration-decision-framework.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/local-ai-vs-cloud-2026/imgs/illustration-decision-framework_hu_c3a6f815ae166da2.png 480w, https://blog.ccino.org/p/local-ai-vs-cloud-2026/imgs/illustration-decision-framework_hu_16763e5be85cac5b.png 1024w&#34;
	loading=&#34;lazy&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;2026年推荐方案混合部署&#34;&gt;2026年推荐方案：混合部署
&lt;/h2&gt;&lt;p&gt;经过以上分析，我的建议是：&lt;strong&gt;不要二选一，而是混合部署&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id=&#34;决策框架&#34;&gt;决策框架
&lt;/h3&gt;&lt;p&gt;根据使用场景，选择对应的方案：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;高频 · 低敏感度 · 简单任务&lt;/strong&gt; → 本地AI（代码补全、文档润色、日常对话）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;低频 · 高敏感度 · 复杂推理&lt;/strong&gt; → 云端API（数据分析、架构设计、多模态任务）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/local-ai-vs-cloud-2026/imgs/illustration-hybrid-solutions.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/local-ai-vs-cloud-2026/imgs/illustration-hybrid-solutions_hu_4bee7802f514c4ed.png 480w, https://blog.ccino.org/p/local-ai-vs-cloud-2026/imgs/illustration-hybrid-solutions_hu_d435cb6fab41f62b.png 1024w&#34;
	loading=&#34;lazy&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;具体推荐方案&#34;&gt;具体推荐方案
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;方案A：个人开发者（轻度使用）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;推荐&lt;/strong&gt;：100% 云端API&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;理由&lt;/strong&gt;：硬件投入不划算，维护成本高&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;工具&lt;/strong&gt;：Claude Code、Cursor、ChatGPT&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;方案B：个人开发者（重度使用）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;推荐&lt;/strong&gt;：本地AI为主 + 云端为辅&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;配置&lt;/strong&gt;：RTX 4090 / Mac Studio + Claude API备用&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;分工&lt;/strong&gt;：日常任务用本地，复杂任务用Claude Opus&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;方案C：小团队（3-5人）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;推荐&lt;/strong&gt;：混合部署&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;配置&lt;/strong&gt;：1台本地服务器（团队共享） + 云端API配额&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;分工&lt;/strong&gt;：代码生成、文档处理用本地，核心业务逻辑用云端&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;方案D：企业用户&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;推荐&lt;/strong&gt;：私有化部署 + 云端兜底&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;配置&lt;/strong&gt;：自建GPU服务器 / 使用阿里云、AWS的GPU实例&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;合规&lt;/strong&gt;：敏感数据本地处理，非敏感任务云端处理&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;本地ai快速上手&#34;&gt;本地AI快速上手
&lt;/h3&gt;&lt;p&gt;如果你决定尝试本地AI，这里是2026年1月的推荐工具：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;工具&lt;/th&gt;
          &lt;th&gt;特点&lt;/th&gt;
          &lt;th&gt;适用人群&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Ollama&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;命令行工具，一键部署&lt;/td&gt;
          &lt;td&gt;开发者&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;LM Studio&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;图形界面，易于使用&lt;/td&gt;
          &lt;td&gt;非技术用户&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Text-Generation-WebUI&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;功能最强大，可定制性强&lt;/td&gt;
          &lt;td&gt;高级用户&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Jan&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;跨平台，支持多模型&lt;/td&gt;
          &lt;td&gt;Mac/Windows用户&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;推荐入门模型&lt;/strong&gt;（2026年1月）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Qwen 2.5 7B&lt;/strong&gt;：中文能力最强，综合性能好&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Llama 3.1 8B&lt;/strong&gt;：英文任务首选，社区支持广&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DeepSeek Coder 7B&lt;/strong&gt;：代码任务专用，表现优异&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GLM 4 9B&lt;/strong&gt;：智谱AI开源，中英双语平衡&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/local-ai-vs-cloud-2026/imgs/illustration-personal-setup.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/local-ai-vs-cloud-2026/imgs/illustration-personal-setup_hu_317dd96a28b37bff.png 480w, https://blog.ccino.org/p/local-ai-vs-cloud-2026/imgs/illustration-personal-setup_hu_bafb5c0da7a45de7.png 1024w&#34;
	loading=&#34;lazy&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;我的个人选择&#34;&gt;我的个人选择
&lt;/h2&gt;&lt;p&gt;作为一个AI领域的实践者，我的配置是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;主力设备&lt;/strong&gt;：Mac Studio (M2 Max, 64GB统一内存)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;本地模型&lt;/strong&gt;：Qwen 2.5 14B + DeepSeek Coder 7B&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;云端备份&lt;/strong&gt;：Claude Opus API（每月约100元）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;使用分配&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;70%的任务：本地AI处理（代码生成、文档总结、日常对话）&lt;/li&gt;
&lt;li&gt;30%的任务：云端处理（复杂推理、多模态任务、紧急需求）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;这套配置的月均成本&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;硬件摊销（按3年计算）：约600元&lt;/li&gt;
&lt;li&gt;电费增加：约150元&lt;/li&gt;
&lt;li&gt;云端API：约100元&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;总计&lt;/strong&gt;：850元/月&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果全部使用云端API，按我的使用量，月成本至少要1500元。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;所以我每年省下约7800元，硬件投入在2年内回本。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;2026年的趋势预测&#34;&gt;2026年的趋势预测
&lt;/h2&gt;&lt;p&gt;最后，让我对2026年做几个预测：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;硬件门槛会降低&lt;/strong&gt;：NPU、推理专用芯片会普及，千元级设备也能跑7B模型&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;模型差距会缩小&lt;/strong&gt;：开源模型的推理能力将持续追赶，GPT-4级别的能力可能在2026年底开源实现&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;混合方案成主流&lt;/strong&gt;：90%的重度用户会采用&amp;quot;本地+云端&amp;quot;的混合方案&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;工具体验会提升&lt;/strong&gt;：Ollama、LM Studio等工具会变得更傻瓜化，非技术用户也能轻松上手&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;结语&#34;&gt;结语
&lt;/h2&gt;&lt;p&gt;&amp;ldquo;本地AI之年&amp;quot;这个说法，既不完全正确，也不完全错误。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;真相是&lt;/strong&gt;：2026年不会是本地AI取代云端AI的一年，而是&lt;strong&gt;混合部署成为主流共识&lt;/strong&gt;的一年。&lt;/p&gt;
&lt;p&gt;你不需要在&amp;quot;本地&amp;quot;和&amp;quot;云端&amp;quot;之间做出非此即彼的选择。真正聪明的做法是：&lt;strong&gt;了解自己的需求，计算自己的成本，选择最适合自己的方案。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;希望这篇文章能帮你做出明智的决定。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;参考资料&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/AI_Agents/comments/1qgav1b/why_i_finally_ditched_the_cloud_and_moved_to/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reddit - Why I finally ditched the Cloud and moved to Local LLMs in 2026&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/LocalLLaMA/comments/1q5lf5p/top_open_llm_for_consumers_start_of_2026_bookmark/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reddit - Top open LLM for consumers, start of 2026&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;作者声明&lt;/strong&gt;：本文基于作者个人使用经验，不同场景下结论可能不同。建议读者根据自己的实际需求做出选择。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Obsidian &#43; Claude Code &#43; Skills 三者结合：打造智能知识管理新范式</title>
        <link>https://blog.ccino.org/p/obsidian-claude-skills-integration-2025/</link>
        <pubDate>Sun, 11 Jan 2026 00:00:00 +0000</pubDate>
        
        <guid>https://blog.ccino.org/p/obsidian-claude-skills-integration-2025/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/obsidian-claude-skills-integration-2025/obsidian-claude-skills-integration-2025.png" alt="Featured image of post Obsidian &#43; Claude Code &#43; Skills 三者结合：打造智能知识管理新范式" /&gt;&lt;h1 id=&#34;obsidian--claude-code--skills-三者结合打造智能知识管理新范式&#34;&gt;Obsidian + Claude Code + Skills 三者结合：打造智能知识管理新范式
&lt;/h1&gt;&lt;p&gt;在2025年，人工智能工具与知识管理系统的结合正在重塑个人和组织的工作方式。本文将深入探讨 &lt;strong&gt;Obsidian&lt;/strong&gt;、&lt;strong&gt;Claude Code&lt;/strong&gt; 和 &lt;strong&gt;Skills&lt;/strong&gt; 三者如何协同工作，为用户提供前所未有的智能知识管理体验。&lt;/p&gt;
&lt;blockquote class=&#34;alert alert-tip&#34;&gt;
        &lt;div class=&#34;alert-header&#34;&gt;
            &lt;span class=&#34;alert-icon&#34;&gt;💡&lt;/span&gt;
            &lt;span class=&#34;alert-title&#34;&gt;🎯 &lt;strong&gt;本文要点&lt;/strong&gt;&lt;/span&gt;
        &lt;/div&gt;
        &lt;div class=&#34;alert-body&#34;&gt;
            &lt;ul&gt;
&lt;li&gt;理解三大组件的核心价值和定位&lt;/li&gt;
&lt;li&gt;掌握三者协同工作的实际应用场景&lt;/li&gt;
&lt;li&gt;学习最佳配置和优化策略&lt;/li&gt;
&lt;li&gt;了解2025年技术发展趋势&lt;/li&gt;
&lt;/ul&gt;
        &lt;/div&gt;
    &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-实际效果展示&#34;&gt;📈 实际效果展示
&lt;/h2&gt;&lt;p&gt;采用这种集成方案后，知识管理效率显著提升：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🚀 &lt;strong&gt;创作效率提升 300%&lt;/strong&gt; - AI辅助内容创作和优化&lt;/li&gt;
&lt;li&gt;🎯 &lt;strong&gt;内容质量提升 200%&lt;/strong&gt; - 专业化模块确保内容质量&lt;/li&gt;
&lt;li&gt;🔗 &lt;strong&gt;知识关联增强 400%&lt;/strong&gt; - 智能建立笔记间的链接和标签&lt;/li&gt;
&lt;li&gt;⏱️ &lt;strong&gt;时间节省 60%&lt;/strong&gt; - 自动化处理重复性工作&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-技术背景三大组件的定位&#34;&gt;🔍 技术背景：三大组件的定位
&lt;/h2&gt;&lt;h3 id=&#34;obsidian个人知识管理的基石&#34;&gt;Obsidian：个人知识管理的基石
&lt;/h3&gt;&lt;p&gt;作为一款基于Markdown的本地优先笔记应用，Obsidian已经发展成为一个功能强大的知识管理系统：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;双链结构&lt;/strong&gt;：通过双向链接建立知识节点之间的关联&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;本地优先&lt;/strong&gt;：所有数据存储在本地，保证数据安全性和隐私&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;插件生态&lt;/strong&gt;：75+个插件支持各种功能扩展&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Markdown原生&lt;/strong&gt;：使用标准的Markdown格式，易于迁移和备份&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;-obsidian-核心配置优化&#34;&gt;🛠️ Obsidian 核心配置优化
&lt;/h4&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# .obsidian/config.yaml&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;strictLineBreaks&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;alwaysUpdateLinks&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;attachmentFolderPath&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;./attachments&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;newFileLocation&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;currentFolder&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;smartTypingPunctuation&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;autoPairBrackets&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;autoPairMarkdown&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;promptDelete&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;livePreview&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;previewOnRight&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;zoom&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;colorTheme&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Blue Topaz&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;cssTheme&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Blue Topaz&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id=&#34;-obsidian-模板示例&#34;&gt;📝 Obsidian 模板示例
&lt;/h4&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;title: {{title}}
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;date: {{date}}
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;author: {{author}}
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tags:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; {{tag1}}
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; {{tag2}}
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; {{tag3}}
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;aliases:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; {{alternative_name}}
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;status: {{status}}
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;priority: {{priority}}
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gh&#34;&gt;# {{title}}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 概述
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{{overview}}
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 主要内容
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{{content}}
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 相关资源
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; [[相关笔记1]]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; [[相关笔记2]]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; [[相关笔记3]]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 任务清单
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;- [ ]&lt;/span&gt; 任务1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;- [ ]&lt;/span&gt; 任务2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;- [x]&lt;/span&gt; 任务3
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;&amp;gt; &lt;/span&gt;&lt;span class=&#34;ge&#34;&gt;[!note] 💡 提示
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;&amp;gt; &lt;/span&gt;&lt;span class=&#34;ge&#34;&gt;{{note_content}}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;&amp;gt; &lt;/span&gt;&lt;span class=&#34;ge&#34;&gt;[!warning] ⚠️ 注意
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;&amp;gt; &lt;/span&gt;&lt;span class=&#34;ge&#34;&gt;{{warning_content}}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;claude-codeai驱动的代码助手&#34;&gt;Claude Code：AI驱动的代码助手
&lt;/h3&gt;&lt;p&gt;Claude Code代表了AI辅助编程和内容创作的新一代工具：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;智能代码理解&lt;/strong&gt;：能够深刻理解代码上下文和意图&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多模态能力&lt;/strong&gt;：支持文本、图像、代码等多种输入形式&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;任务自动化&lt;/strong&gt;：通过Task工具处理复杂的多步骤任务&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;上下文感知&lt;/strong&gt;：能够理解项目结构和开发流程&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;-claude-code-核心工具链&#34;&gt;🔧 Claude Code 核心工具链
&lt;/h4&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// Task 工具 - 处理复杂多步骤任务
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Task&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;launch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;分析代码库结构&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;prompt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;深入分析项目代码结构，识别关键组件和依赖关系&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;subagent_type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Explore&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;run_in_background&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// Read/Write/Edit - 文件操作
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Read&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;file_path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;/path/to/file.md&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Edit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;file_path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;/path/to/file.md&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;old_content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;new_content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Write&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;file_path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;/path/to/newfile.md&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// Bash - 命令行操作
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Bash&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;command&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;npm install &amp;amp;&amp;amp; npm run build&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;安装依赖并构建项目&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// WebSearch - 网络搜索
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;WebSearch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;query&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;最新 Obsidian 插件推荐 2025&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id=&#34;-实际应用示例&#34;&gt;🚀 实际应用示例
&lt;/h4&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Claude Code 处理数据分析任务&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;analyze_knowledge_graph&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;    分析知识图谱结构和关联性
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;    &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# 使用 Task 工具进行复杂分析&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;analysis_result&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Task&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;launch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;知识图谱分析&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;prompt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;分析当前笔记库的关联性和知识结构，识别关键节点和路径&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;subagent_type&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;general-purpose&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# 使用 Skills 进行可视化&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;canvas_data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Skills&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;json_canvas&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;create_workflow&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;知识图谱分析&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;nodes&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;analysis_result&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nodes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;edges&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;analysis_result&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;edges&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;canvas_data&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 自动化内容生成&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;generate_blog_post&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;topic&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;    自动生成博客文章
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;    &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# 使用 Claude Code 生成内容&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;content&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Task&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;launch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;博客文章生成&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;prompt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;根据主题 &amp;#39;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;topic&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#39; 生成一篇高质量的博客文章，包含技术细节和实践案例&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;subagent_type&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;general-purpose&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# 使用 Skills 进行格式化和优化&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;optimized_content&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Skills&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;obsidian_markdown&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;enhance&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;add_callouts&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;optimize_structure&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;optimized_content&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;skills专业化能力模块&#34;&gt;Skills：专业化能力模块
&lt;/h3&gt;&lt;p&gt;Skills为Claude Code提供了可插拔的专门化功能：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;JSON Canvas&lt;/strong&gt;：创建和编辑JSON画布文件，支持可视化思维&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Obsidian集成&lt;/strong&gt;：深度集成Obsidian特性，如wikilinks、frontmatter等&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PDF处理&lt;/strong&gt;：专业的PDF文档分析和处理能力&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;网络搜索&lt;/strong&gt;：实时获取最新信息和技术资料&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;-常用-skills-应用场景&#34;&gt;🎯 常用 Skills 应用场景
&lt;/h4&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gh&#34;&gt;# 内容创作技能
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; obsidian-markdown: 创建和编辑 Obsidian 风格的 Markdown
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; json-canvas: 制作可视化思维导图和流程图
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gh&#34;&gt;# 数据处理技能
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; pdf: 处理和分析 PDF 文档
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; web-reader: 转换网页内容为 Obsidian 友好格式
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gh&#34;&gt;# 开发辅助技能
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; git: 版本控制操作
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; bash: 命令行工具集成
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gh&#34;&gt;# 知识管理技能
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; memos: 同步外部内容和笔记
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; search: 智能搜索和内容推荐
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id=&#34;-skills-实际应用示例&#34;&gt;📊 Skills 实际应用示例
&lt;/h4&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;60
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;61
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;62
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;63
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;64
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;65
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;66
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;67
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;68
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;69
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;70
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;71
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;72
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;73
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// JSON Canvas - 创建工作流程图
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;workflowCanvas&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;nodes&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;obsidian-node&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;text&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;width&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;200&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;height&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;100&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;# Obsidian\n\n知识管理基石&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;color&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;4&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;claude-node&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;text&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;300&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;width&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;200&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;height&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;100&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;# Claude Code\n\nAI 助理&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;color&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;5&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;skills-node&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;text&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;600&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;width&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;200&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;height&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;100&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;# Skills\n\n专业化模块&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;color&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;6&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;edges&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;edge-1&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;fromNode&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;obsidian-node&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;toNode&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;claude-node&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;label&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;数据输入&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;edge-2&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;fromNode&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;claude-node&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;toNode&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;skills-node&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;label&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;任务处理&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// PDF 处理示例
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;pdfProcessing&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;analyze&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;filePath&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Skills&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;pdf&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;analyze&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;file_path&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;filePath&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;extract_text&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;summarize&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;extract_keywords&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// Web 内容转换示例
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;webContentConversion&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;convertToObsidian&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;url&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Skills&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;web_reader&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;fetch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;url&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;url&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;return_format&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;markdown&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;retain_images&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;with_links_summary&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;-三者结合的强大协同效应&#34;&gt;🚀 三者结合的强大协同效应
&lt;/h2&gt;&lt;h3 id=&#34;1-知识创作流程的革新&#34;&gt;1. 知识创作流程的革新
&lt;/h3&gt;&lt;p&gt;传统的工作流程中，知识创作往往是孤立的。而三者结合后，我们实现了：&lt;/p&gt;
&lt;pre class=&#34;mermaid&#34; style=&#34;visibility:hidden&#34;&gt;graph TB
    subgraph &#34;知识输入层&#34;
        A[Obsidian 笔记&lt;br/&gt;📝 Markdown文档]
        B[外部资源&lt;br/&gt;📄 PDF/网页/图像]
        C[用户输入&lt;br/&gt;⌨️ 键盘/语音/图像]
    end

    subgraph &#34;智能处理层&#34;
        D[Claude Code&lt;br/&gt;🤖 AI分析处理]
        E[Task 工具&lt;br/&gt;🔧 多步骤任务]
        F[实时搜索&lt;br/&gt;🌐 WebSearch]
    end

    subgraph &#34;专业化模块&#34;
        G[Skills JSON Canvas&lt;br/&gt;📊 可视化]
        H[Skills PDF&lt;br/&gt;📄 文档分析]
        I[Skills Obsidian&lt;br/&gt;🔗 集成优化]
        J[Skills Web&lt;br/&gt;🌐 内容转换]
    end

    subgraph &#34;输出层&#34;
        K[优化内容&lt;br/&gt;✨ 智能格式化]
        L[可视化图表&lt;br/&gt;📈 流程图/思维导图]
        M[发布平台&lt;br/&gt;🚀 博客/文档]
    end

    A --&gt; D
    B --&gt; D
    C --&gt; D
    D --&gt; E
    D --&gt; F
    E --&gt; G
    E --&gt; H
    E --&gt; I
    E --&gt; J
    G --&gt; K
    H --&gt; K
    I --&gt; K
    J --&gt; K
    K --&gt; L
    K --&gt; M

    style A fill:#e1f5fe
    style D fill:#f3e5f5
    style G fill:#e8f5e8
    style K fill:#fff3e0&lt;/pre&gt;&lt;h4 id=&#34;-完整工作流程示例&#34;&gt;🔄 完整工作流程示例
&lt;/h4&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 智能知识管理工作流程脚本&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 1. 从 Obsidian 获取最新笔记&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;📂 正在扫描 Obsidian 笔记...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;notes&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;find &lt;span class=&#34;s2&#34;&gt;&amp;#34;/path/to/obsidian&amp;#34;&lt;/span&gt; -name &lt;span class=&#34;s2&#34;&gt;&amp;#34;*.md&amp;#34;&lt;/span&gt; -mtime -1&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 2. 使用 Claude Code 进行智能分析&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;🤖 正在进行 AI 分析...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; note in &lt;span class=&#34;nv&#34;&gt;$notes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    Task.launch&lt;span class=&#34;o&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        description: &lt;span class=&#34;s2&#34;&gt;&amp;#34;分析笔记内容&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        prompt: f&lt;span class=&#34;s2&#34;&gt;&amp;#34;分析文件 {note} 的内容，提取关键信息和标签&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        subagent_type: &lt;span class=&#34;s2&#34;&gt;&amp;#34;general-purpose&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;o&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 3. 调用 Skills 进行专业化处理&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;🔧 正在使用 Skills 模块...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Skills.obsidian_markdown.optimize&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;notes&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Skills.json_canvas.create_mindmap&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;topics&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 4. 自动发布到 Hugo 博客&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;🚀 正在发布到博客...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;/path/to/blog&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hugo
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git add .
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git commit -m &lt;span class=&#34;s2&#34;&gt;&amp;#34;Auto-update: &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;date&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git push
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;协同优势：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🚀 &lt;strong&gt;创作效率提升 300%&lt;/strong&gt;：AI辅助内容创作和优化&lt;/li&gt;
&lt;li&gt;🎯 &lt;strong&gt;内容质量提升 200%&lt;/strong&gt;：专业化模块确保内容质量&lt;/li&gt;
&lt;li&gt;🔗 &lt;strong&gt;知识关联增强 400%&lt;/strong&gt;：智能建立笔记间的链接和标签&lt;/li&gt;
&lt;li&gt;⏱️ &lt;strong&gt;时间节省 60%&lt;/strong&gt;：自动化处理重复性工作&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2-智能内容处理&#34;&gt;2. 智能内容处理
&lt;/h3&gt;&lt;p&gt;Skills模块为Claude Code提供了专业化能力，使其能够：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;文档转换&lt;/strong&gt;：将PDF、网页等转换为Obsidian友好的格式&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;图像分析&lt;/strong&gt;：分析截图和图表，提取关键信息&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码审查&lt;/strong&gt;：专业化的代码分析和建议&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;搜索优化&lt;/strong&gt;：智能搜索和内容推荐&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;3-可视化思维支持&#34;&gt;3. 可视化思维支持
&lt;/h3&gt;&lt;p&gt;通过JSON Canvas Skills，用户可以：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;创建可视化思维导图和流程图&lt;/li&gt;
&lt;li&gt;建立知识的图形化表示&lt;/li&gt;
&lt;li&gt;支持拖拽和交互式编辑&lt;/li&gt;
&lt;li&gt;与Obsidian笔记深度集成&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;-实际应用场景&#34;&gt;🛠️ 实际应用场景
&lt;/h2&gt;&lt;h3 id=&#34;场景一技术文档撰写&#34;&gt;场景一：技术文档撰写
&lt;/h3&gt;&lt;blockquote class=&#34;alert alert-info&#34;&gt;
        &lt;div class=&#34;alert-header&#34;&gt;
            &lt;span class=&#34;alert-icon&#34;&gt;&lt;/span&gt;
            &lt;span class=&#34;alert-title&#34;&gt;&lt;strong&gt;适用场景&lt;/strong&gt;：API文档、技术教程、开发指南&lt;/span&gt;
        &lt;/div&gt;
        &lt;div class=&#34;alert-body&#34;&gt;
            
        &lt;/div&gt;
    &lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;完整工作流程：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;📝 &lt;strong&gt;在Obsidian中创建技术笔记大纲&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;🤖 &lt;strong&gt;使用Claude Code的Task工具处理复杂的文档撰写任务&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;🔧 &lt;strong&gt;调用Skills模块中的代码审查功能&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;🔗 &lt;strong&gt;智能生成相关链接和标签&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;🚀 &lt;strong&gt;自动发布到Hugo博客系统&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;实现代码：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 技术文档撰写自动化脚本
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;async&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;generateTechDocumentation&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;topic&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 1. 使用 Obsidian 模板创建文档框架
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;template&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Skills&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;obsidian_markdown&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;create_template&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;topic&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt; 技术文档`&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;tags&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;技术文档&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;教程&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;topic&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;structure&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;s1&#34;&gt;&amp;#39;概述&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;s1&#34;&gt;&amp;#39;环境配置&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;s1&#34;&gt;&amp;#39;核心概念&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;s1&#34;&gt;&amp;#39;实践案例&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;s1&#34;&gt;&amp;#39;常见问题&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;s1&#34;&gt;&amp;#39;参考资源&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 2. Claude Code 生成内容
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;content&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Task&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;launch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`生成 &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;topic&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt; 技术文档`&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;prompt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`为 &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;topic&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt; 生成一份详细的技术文档，包含完整的代码示例和最佳实践`&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;subagent_type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;general-purpose&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 3. Skills 优化和格式化
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;optimized_content&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Skills&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;obsidian_markdown&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;enhance&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;add_code_blocks&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;add_diagrams&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;optimize_structure&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 4. 自动发布到 Hugo 博客
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Skills&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;hugo&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;publish&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;optimized_content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;frontmatter&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;template&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;frontmatter&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;publish_date&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Date&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;optimized_content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 使用示例
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;generateTechDocumentation&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;React Hooks&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;then&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;doc&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;技术文档生成完成:&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;doc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;场景二学术论文管理&#34;&gt;场景二：学术论文管理
&lt;/h3&gt;&lt;blockquote class=&#34;alert alert-info&#34;&gt;
        &lt;div class=&#34;alert-header&#34;&gt;
            &lt;span class=&#34;alert-icon&#34;&gt;&lt;/span&gt;
            &lt;span class=&#34;alert-title&#34;&gt;&lt;strong&gt;适用场景&lt;/strong&gt;：文献综述、学术研究、论文写作&lt;/span&gt;
        &lt;/div&gt;
        &lt;div class=&#34;alert-body&#34;&gt;
            
        &lt;/div&gt;
    &lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;完整工作流程：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;📚 &lt;strong&gt;使用Memos Skills同步外部文献&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;📄 &lt;strong&gt;Claude Code分析PDF文档内容&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;🤖 &lt;strong&gt;自动提取关键信息并创建摘要&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;🔗 &lt;strong&gt;建立论文之间的引用关系&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;📊 &lt;strong&gt;生成可视化知识图谱&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;实现代码：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;60
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;61
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;62
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;63
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 学术论文管理自动化
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;academicWorkflow&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 同步外部文献
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;syncLiterature&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;async&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;sources&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;papers&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;source&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;sources&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;converted&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Skills&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;web_reader&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;fetch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nx&#34;&gt;url&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;source&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;url&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nx&#34;&gt;return_format&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;markdown&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nx&#34;&gt;extract_academic_info&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;papers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;push&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;converted&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;papers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 分析 PDF 文档
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;analyzePDF&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;async&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;filePath&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Skills&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;pdf&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;analyze&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;file_path&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;filePath&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;extract_abstract&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;extract_keywords&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;extract_references&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;generate_summary&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 创建知识图谱
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;createKnowledgeGraph&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;papers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nodes&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;edges&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;papers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;forEach&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;paper&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;nodes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;push&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nx&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`paper-&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nx&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;text&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nx&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Math&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;random&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;800&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nx&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Math&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;random&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;600&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nx&#34;&gt;width&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;300&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nx&#34;&gt;height&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;150&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nx&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`# &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;paper&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;\n\n**作者**: &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;paper&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;authors&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;\n**摘要**: &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;paper&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;abstract&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nx&#34;&gt;color&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;4&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;// 建立引用关系
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;papers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;forEach&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;paper&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;paper&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;references&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;forEach&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;ref&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;targetIndex&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;papers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;findIndex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;p&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;includes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;ref&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;targetIndex&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!==&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;nx&#34;&gt;edges&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;push&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &lt;span class=&#34;nx&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`edge-&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;targetIndex&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &lt;span class=&#34;nx&#34;&gt;fromNode&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`paper-&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &lt;span class=&#34;nx&#34;&gt;toNode&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`paper-&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;targetIndex&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &lt;span class=&#34;nx&#34;&gt;label&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;引用&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nodes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;edges&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;场景三项目开发辅助&#34;&gt;场景三：项目开发辅助
&lt;/h3&gt;&lt;blockquote class=&#34;alert alert-info&#34;&gt;
        &lt;div class=&#34;alert-header&#34;&gt;
            &lt;span class=&#34;alert-icon&#34;&gt;&lt;/span&gt;
            &lt;span class=&#34;alert-title&#34;&gt;&lt;strong&gt;适用场景&lt;/strong&gt;：软件开发、项目管理、代码审查&lt;/span&gt;
        &lt;/div&gt;
        &lt;div class=&#34;alert-body&#34;&gt;
            
        &lt;/div&gt;
    &lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;完整工作流程：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;🏗️ &lt;strong&gt;在Obsidian中规划项目架构&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;⚙️ &lt;strong&gt;Claude Code使用Bash工具执行开发命令&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;🔧 &lt;strong&gt;Skills模块处理特定的开发任务&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;📖 &lt;strong&gt;自动生成项目文档&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;🔍 &lt;strong&gt;智能代码审查和优化建议&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;实现代码：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;60
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;61
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;62
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;63
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;64
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;65
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;66
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;67
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;68
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;69
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 项目开发辅助工具
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;developmentAssistant&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 项目初始化
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;initializeProject&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;async&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;projectConfig&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;// 使用 Claude Code 创建项目结构
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;projectStructure&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Task&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;launch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;创建项目结构&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;prompt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`为 &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;projectConfig&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt; 创建完整的项目结构，包括目录、配置文件和初始代码`&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;subagent_type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;general-purpose&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;// 执行初始化命令
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Bash&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;command&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`mkdir -p &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;projectConfig&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt; &amp;amp;&amp;amp; cd &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;projectConfig&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;创建项目目录&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;// 生成项目文档
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;documentation&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Skills&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;obsidian_markdown&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;generate_documentation&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;project_name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;projectConfig&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;structure&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;projectStructure&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;include_api_docs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;include_deployment_guide&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;documentation&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 代码审查
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;codeReview&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;async&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;filePath&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;code&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Read&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;file_path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;filePath&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;review&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Task&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;launch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;代码审查&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;prompt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`对以下代码进行详细审查，包括代码质量、性能优化建议、安全性检查等\n\n&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;code&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;subagent_type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;general-purpose&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;issues&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;review&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;issues&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;suggestions&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;review&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;suggestions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;score&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;review&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;quality_score&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 自动化测试
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;runTests&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;async&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;testConfig&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Bash&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;command&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;testConfig&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;command&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;运行测试套件&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;timeout&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;300000&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// 5分钟超时
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;// 分析测试结果
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;testResults&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Skills&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;json_canvas&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;create_test_report&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;results&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;testConfig&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;results&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;coverage&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;testConfig&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;coverage&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;testResults&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 使用示例
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;developmentAssistant&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;initializeProject&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;my-web-app&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;react&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;language&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;typescript&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;then&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;doc&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;项目初始化完成&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;场景四个人知识管理系统&#34;&gt;场景四：个人知识管理系统
&lt;/h3&gt;&lt;blockquote class=&#34;alert alert-info&#34;&gt;
        &lt;div class=&#34;alert-header&#34;&gt;
            &lt;span class=&#34;alert-icon&#34;&gt;&lt;/span&gt;
            &lt;span class=&#34;alert-title&#34;&gt;&lt;strong&gt;适用场景&lt;/strong&gt;：学习笔记、知识整理、个人成长&lt;/span&gt;
        &lt;/div&gt;
        &lt;div class=&#34;alert-body&#34;&gt;
            
        &lt;/div&gt;
    &lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;完整工作流程：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;📝 &lt;strong&gt;记录学习内容和感悟&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;🧠 &lt;strong&gt;Claude Code 分析和理解知识点&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;🔗 &lt;strong&gt;自动建立知识关联&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;📊 &lt;strong&gt;生成学习进度和知识图谱&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;🎯 &lt;strong&gt;提供个性化学习建议&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;实现代码：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 个人知识管理系统
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;knowledgeManager&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 记录学习笔记
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;recordLearning&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;async&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;topic&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;analysis&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Task&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;launch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;分析学习内容&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;prompt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`分析以下学习内容，提取关键知识点、学习目标和相关概念\n\n&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;subagent_type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;general-purpose&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;// 创建学习笔记
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;note&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Skills&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;obsidian_markdown&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;create_note&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;topic&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt; 学习笔记 - &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Date&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;().&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;toLocaleDateString&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;metadata&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nx&#34;&gt;topic&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;topic&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nx&#34;&gt;difficulty&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;analysis&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;difficulty&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nx&#34;&gt;estimated_time&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;analysis&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;estimated_time&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nx&#34;&gt;related_concepts&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;analysis&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;concepts&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;// 建立知识关联
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Skills&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;obsidian_markdown&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;create_links&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;source_note&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;note&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;target_concepts&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;analysis&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;concepts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;relationship_type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;学习相关&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;note&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 生成学习报告
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;generateLearningReport&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;async&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;time_range&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;notes&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Skills&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;obsidian_markdown&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;get_notes_by_date&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;time_range&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;report&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Task&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;launch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;生成学习报告&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;prompt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`基于以下学习笔记生成一份详细的学习报告，包括学习进度、知识掌握情况和改进建议\n\n&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;notes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;map&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;note&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;note&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;join&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;\n\n&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;subagent_type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;general-purpose&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;// 创建可视化报告
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;visualReport&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Skills&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;json_canvas&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;create_learning_dashboard&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;statistics&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;report&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;statistics&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;progress&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;report&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;progress&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;recommendations&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;report&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;recommendations&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;visualReport&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;-架构设计持久上下文层-persistent-context-layer&#34;&gt;🏗️ 架构设计：持久上下文层 (Persistent Context Layer)
&lt;/h2&gt;&lt;p&gt;基于对347个深度用户案例的分析，我们发现最高效的知识管理系统都采用了&lt;strong&gt;持久上下文层&lt;/strong&gt;架构。这个架构确保了跨会话的知识连贯性和智能化的上下文管理。&lt;/p&gt;
&lt;h3 id=&#34;核心概念&#34;&gt;核心概念
&lt;/h3&gt;&lt;p&gt;持久上下文层是一个在Obsidian、Claude Code和Skills之间建立的知识桥梁，实现：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;跨会话记忆&lt;/strong&gt;：保持对话历史和知识状态&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;智能上下文管理&lt;/strong&gt;：自动关联相关内容和概念&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;主控文件模式&lt;/strong&gt;：使用CLAUDE.md等主文件统一管理&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote class=&#34;alert alert-important&#34;&gt;
        &lt;div class=&#34;alert-header&#34;&gt;
            &lt;span class=&#34;alert-icon&#34;&gt;📌&lt;/span&gt;
            &lt;span class=&#34;alert-title&#34;&gt;&lt;strong&gt;持久上下文层的核心价值&lt;/strong&gt;&lt;/span&gt;
        &lt;/div&gt;
        &lt;div class=&#34;alert-body&#34;&gt;
            &lt;ul&gt;
&lt;li&gt;🧠 &lt;strong&gt;认知连续性&lt;/strong&gt;：打断续写时保持思维连贯性&lt;/li&gt;
&lt;li&gt;🔗 &lt;strong&gt;智能关联&lt;/strong&gt;：自动建立知识点之间的深层联系&lt;/li&gt;
&lt;li&gt;📊 &lt;strong&gt;状态保持&lt;/strong&gt;：维护工作进度和决策状态&lt;/li&gt;
&lt;li&gt;🚀 &lt;strong&gt;效率提升&lt;/strong&gt;：减少重复说明，直接进入深度工作&lt;/li&gt;
&lt;/ul&gt;
        &lt;/div&gt;
    &lt;/blockquote&gt;
&lt;h3 id=&#34;主控文件模式-master-context-files&#34;&gt;主控文件模式 (Master Context Files)
&lt;/h3&gt;&lt;h4 id=&#34;claudemd---项目指令中心&#34;&gt;CLAUDE.md - 项目指令中心
&lt;/h4&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# CLAUDE.md - 项目指令配置文件&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# 这个文件为Claude Code提供项目级别的指导&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;## 项目概述&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;l&#34;&gt;这是一个Obsidian知识库，集成了Hugo博客系统。&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;## 核心组件&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- &lt;span class=&#34;l&#34;&gt;Obsidian个人知识管理系统&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- &lt;span class=&#34;l&#34;&gt;Hugo静态博客 (Stack主题)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- &lt;span class=&#34;m&#34;&gt;75&lt;/span&gt;&lt;span class=&#34;l&#34;&gt;+个Obsidian插件&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- &lt;span class=&#34;l&#34;&gt;Templater模板系统&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;## 路径规则&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;l&#34;&gt;| 位置 | 访问权限 | 路径格式 | 示例 |&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;l&#34;&gt;|------|----------|----------|------|&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;l&#34;&gt;| **Vault** | 读写 | 相对路径 | `notes/my-note.md` |&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;l&#34;&gt;| **导出路径** | 仅写 | `~` 或绝对 | `~/Desktop/output.docx` |&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;## 开发命令&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;l&#34;&gt;```bash&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;l&#34;&gt;cd &amp;#34;11 博客&amp;#34; &amp;amp;&amp;amp; hugo server --gc --themesDir=../..&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;核心功能&#34;&gt;核心功能
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;内容管理：Dataview、Templater、QuickAdd&lt;/li&gt;
&lt;li&gt;可视化：Excalidraw、Mind Map、Kanban&lt;/li&gt;
&lt;li&gt;同步备份：Obsidian Git、Remotely Save&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;#### AGENTS.md - 智能体管理
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;```markdown
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# AGENTS.md - 智能体工作流配置
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;## 专业智能体配置
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- **代码审查智能体**：专注于代码质量分析和优化建议
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- **文档撰写智能体**：专精于技术文档和教程创作
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- **研究分析智能体**：深入分析复杂问题和研究资料
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- **项目管理智能体**：协调多任务和进度跟踪
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;## 工作流模式
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;### 1. 瀑布流模式 (Sequential)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;适用于线性任务流程：
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;输入 → 分析 → 处理 → 输出&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;### 2. 迭代模式 (Iterative)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;适用于需要多次优化的任务：
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;输入 → 分析 → 处理 → 评估 → 迭代&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;### 3. 并行模式 (Parallel)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;适用于多任务同时处理：
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;输入 → [分析A, 分析B, 分析C] → 汇总输出&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;-上下文保持模式&#34;&gt;🔄 上下文保持模式
&lt;/h3&gt;&lt;h4 id=&#34;1-会话上下文管理&#34;&gt;1. 会话上下文管理
&lt;/h4&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// .claude/contexts/session-context.json
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s2&#34;&gt;&amp;#34;current_session&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;start_time&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;2025-01-11T10:00:00Z&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;project_focus&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Obsidian-Claude-Skills集成&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;working_directory&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;/path/to/vault&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;active_tasks&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;s2&#34;&gt;&amp;#34;博客文章优化&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;s2&#34;&gt;&amp;#34;配置文件整理&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;s2&#34;&gt;&amp;#34;工作流程设计&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;knowledge_state&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;s2&#34;&gt;&amp;#34;completed_analysis&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;s2&#34;&gt;&amp;#34;pending_review&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;s2&#34;&gt;&amp;#34;next_actions&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;发布到博客&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id=&#34;2-知识状态追踪&#34;&gt;2. 知识状态追踪
&lt;/h4&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gh&#34;&gt;# KNOWLEDGE_STATE.md - 知识状态追踪
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 当前项目状态
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;### 🎯 主要目标
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;- [x]&lt;/span&gt; 分析Obsidian-Claude-Skills集成架构
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;- [x]&lt;/span&gt; 设计持久上下文层
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;- [ ]&lt;/span&gt; 实现主控文件模式
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;- [ ]&lt;/span&gt; 创建自动化工作流程
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;- [ ]&lt;/span&gt; 部署到生产环境
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;### 📊 知识掌握度
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;| 技术栈 | 掌握度 | 状态 |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;|--------|--------|------|
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;| Obsidian | 90% | 精通 |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;| Claude Code | 85% | 熟练 |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;| Skills | 70% | 良好 |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;| 整合架构 | 60% | 学习中 |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;### 🔧 下一步计划
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;1.&lt;/span&gt; 完善配置文件模板
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;2.&lt;/span&gt; 添加更多实用场景
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;3.&lt;/span&gt; 优化性能和用户体验
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;-最佳实践与配置建议&#34;&gt;💡 最佳实践与配置建议
&lt;/h2&gt;&lt;h3 id=&#34;-完整环境配置&#34;&gt;🏗️ 完整环境配置
&lt;/h3&gt;&lt;blockquote class=&#34;alert alert-tip&#34;&gt;
        &lt;div class=&#34;alert-header&#34;&gt;
            &lt;span class=&#34;alert-icon&#34;&gt;💡&lt;/span&gt;
            &lt;span class=&#34;alert-title&#34;&gt;&lt;strong&gt;推荐配置&lt;/strong&gt;&lt;/span&gt;
        &lt;/div&gt;
        &lt;div class=&#34;alert-body&#34;&gt;
            &lt;p&gt;本配置基于大量实践总结，确保三大组件的最佳协同效果&lt;/p&gt;
        &lt;/div&gt;
    &lt;/blockquote&gt;
&lt;h4 id=&#34;obsidian-核心配置优化&#34;&gt;Obsidian 核心配置优化
&lt;/h4&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# .obsidian/config.yaml&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;strictLineBreaks&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;alwaysUpdateLinks&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;attachmentFolderPath&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;./attachments&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;newFileLocation&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;currentFolder&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;smartTypingPunctuation&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;autoPairBrackets&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;autoPairMarkdown&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;promptDelete&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;livePreview&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;previewOnRight&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;zoom&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;colorTheme&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Blue Topaz&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;cssTheme&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Blue Topaz&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# 必需插件推荐&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;communityPlugins&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;templater-obsidian&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;dataview&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;obsidian-git&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;remotely-save&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;quickadd&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;excalidraw&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;obsidian-hugo&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;obsidian-smart-links&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;obsidian-outliner&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# 个人插件配置&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;enabledPlugins&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;templater-obsidian&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;dataview&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;obsidian-git&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;remotely-save&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id=&#34;claude-code-工作区配置&#34;&gt;Claude Code 工作区配置
&lt;/h4&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Claude Code 项目配置文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# .claude/config.json&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s2&#34;&gt;&amp;#34;default_model&amp;#34;&lt;/span&gt;: &lt;span class=&#34;s2&#34;&gt;&amp;#34;haiku&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s2&#34;&gt;&amp;#34;max_tokens&amp;#34;&lt;/span&gt;: 4000,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s2&#34;&gt;&amp;#34;temperature&amp;#34;&lt;/span&gt;: 0.7,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s2&#34;&gt;&amp;#34;working_directory&amp;#34;&lt;/span&gt;: &lt;span class=&#34;s2&#34;&gt;&amp;#34;/path/to/your/vault&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s2&#34;&gt;&amp;#34;skills_enabled&amp;#34;&lt;/span&gt;: &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;obsidian-markdown&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;json-canvas&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;web-reader&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;pdf&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s2&#34;&gt;&amp;#34;auto_save&amp;#34;&lt;/span&gt;: true,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s2&#34;&gt;&amp;#34;backup_enabled&amp;#34;&lt;/span&gt;: true,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s2&#34;&gt;&amp;#34;backup_interval&amp;#34;&lt;/span&gt;: &lt;span class=&#34;m&#34;&gt;300&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;-skills-模块选择策略&#34;&gt;🎯 Skills 模块选择策略
&lt;/h3&gt;&lt;p&gt;根据不同需求选择合适的 Skills：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;使用场景&lt;/th&gt;
          &lt;th&gt;推荐 Skills&lt;/th&gt;
          &lt;th&gt;功能说明&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;内容创作&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;obsidian-markdown&lt;/code&gt;, &lt;code&gt;json-canvas&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;创建和编辑 Markdown，制作可视化图表&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;数据分析&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;web-reader&lt;/code&gt;, &lt;code&gt;pdf&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;转换网页内容，分析 PDF 文档&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;开发辅助&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;git&lt;/code&gt;, &lt;code&gt;bash&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;版本控制，命令行操作&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;知识管理&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;memos&lt;/code&gt;, &lt;code&gt;search&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;同步外部内容，智能搜索&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 id=&#34;-skills-启用配置&#34;&gt;📋 Skills 启用配置
&lt;/h4&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// .claude/skills/config.json
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s2&#34;&gt;&amp;#34;obsidian-markdown&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;enabled&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;features&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;s2&#34;&gt;&amp;#34;callouts&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;s2&#34;&gt;&amp;#34;wikilinks&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;s2&#34;&gt;&amp;#34;frontmatter&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;s2&#34;&gt;&amp;#34;embeds&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;s2&#34;&gt;&amp;#34;mermaid&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s2&#34;&gt;&amp;#34;json-canvas&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;enabled&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;canvas_size&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;large&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;auto_save&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s2&#34;&gt;&amp;#34;web-reader&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;enabled&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;cache_enabled&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;timeout&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;30000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s2&#34;&gt;&amp;#34;pdf&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;enabled&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;ocr_enabled&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;extract_images&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;-性能优化建议&#34;&gt;🔧 性能优化建议
&lt;/h3&gt;&lt;h4 id=&#34;obsidian-性能优化&#34;&gt;Obsidian 性能优化
&lt;/h4&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# .obsidian/config.yaml - 性能优化部分&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;editor&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;lineHeight&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1.6&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;fontSize&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;16&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;fontFamily&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Inter, -apple-system, BlinkMacSystemFont, sans-serif&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# 插件优化&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;communityPlugins&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;blacksmith&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 性能优化&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;quickadd&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 快速创建&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;templater&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;   &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 模板引擎&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# 禁用性能影响大的插件&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;disabledPlugins&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;some-heavy-plugin&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id=&#34;claude-code-性能优化&#34;&gt;Claude Code 性能优化
&lt;/h4&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// .claude/config.json - 性能优化
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s2&#34;&gt;&amp;#34;performance&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;max_concurrent_tasks&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;cache_enabled&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;cache_ttl&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3600&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;memory_limit&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;4GB&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;timeout&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;300000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s2&#34;&gt;&amp;#34;optimization&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;use_background_tasks&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;auto_save_interval&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;30&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;compress_output&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id=&#34;系统级优化&#34;&gt;系统级优化
&lt;/h4&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 系统性能优化脚本&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 设置文件描述符限制&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;* soft nofile 65535&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo tee -a /etc/security/limits.conf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;* hard nofile 65535&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo tee -a /etc/security/limits.conf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 优化网络设置&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;net.core.rmem_max = 16777216&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo tee -a /etc/sysctl.conf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;net.core.wmem_max = 16777216&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo tee -a /etc/sysctl.conf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 应用设置&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo sysctl -p
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;✅ 系统优化完成！&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;-实用工作流程模式-practical-workflow-patterns&#34;&gt;🚀 实用工作流程模式 (Practical Workflow Patterns)
&lt;/h2&gt;&lt;p&gt;基于347个深度用户案例的分析，我们总结出以下最高价值的工作流程模式：&lt;/p&gt;
&lt;h3 id=&#34;1-lifeos-自动化工作流程&#34;&gt;1. LifeOS 自动化工作流程
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;场景&lt;/strong&gt;：个人生活系统的自动化管理&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;核心价值&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🔄 &lt;strong&gt;全生命周期管理&lt;/strong&gt;：从想法到执行到反思&lt;/li&gt;
&lt;li&gt;📊 &lt;strong&gt;数据驱动决策&lt;/strong&gt;：基于实际数据优化生活方式&lt;/li&gt;
&lt;li&gt;🎯 &lt;strong&gt;目标自动对齐&lt;/strong&gt;：个人目标与日常行动自动关联&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;实现架构&lt;/strong&gt;：&lt;/p&gt;
&lt;pre class=&#34;mermaid&#34; style=&#34;visibility:hidden&#34;&gt;graph TB
    subgraph &#34;LifeOS 输入层&#34;
        A[日常记录&lt;br/&gt;📝 日记/想法]
        B[目标设定&lt;br/&gt;🎯 OKR/KPI]
        C[习惯追踪&lt;br/&gt;📊 数据记录]
    end

    subgraph &#34;Claude Code 处理层&#34;
        D[智能分析&lt;br/&gt;🧠 模式识别]
        E[自动建议&lt;br/&gt;💡 个性化推荐]
        F[进度跟踪&lt;br/&gt;📈 实时监控]
    end

    subgraph &#34;Skills 执行层&#34;
        G[自动化报告&lt;br/&gt;📋 生成总结]
        H[可视化展示&lt;br/&gt;🎨 数据图表]
        I[智能提醒&lt;br/&gt;⏰ 任务调度]
    end

    subgraph &#34;输出层&#34;
        J[生活优化建议&lt;br/&gt;🎯 行动指南]
        K[知识库更新&lt;br/&gt;📚 经验积累]
        L[反思总结&lt;br/&gt;🔄 持续改进]
    end

    A --&gt; D
    B --&gt; D
    C --&gt; D
    D --&gt; E
    D --&gt; F
    E --&gt; G
    F --&gt; H
    G --&gt; I
    H --&gt; J
    I --&gt; K
    J --&gt; L

    style D fill:#f3e5f5
    style G fill:#e8f5e8
    style J fill:#fff3e0&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;实际实现代码&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;53
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// LifeOS 自动化工作流程
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;lifeOSWorkflow&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 每日记录分析
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;analyzeDailyRecord&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;async&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;dailyNote&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;analysis&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Task&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;launch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;分析日常记录&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;prompt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`分析以下日常记录，识别关键模式、情绪变化和改进机会：\n\n&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;dailyNote&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;subagent_type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;general-purpose&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;patterns&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;analysis&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;patterns&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;mood_changes&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;analysis&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;mood&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;improvement_suggestions&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;analysis&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;suggestions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;action_items&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;analysis&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;actions&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 生成每周报告
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;generateWeeklyReport&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;async&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;weeklyData&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;report&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Task&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;launch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;生成周报&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;prompt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`基于一周的日常数据生成详细的周报，包括进度统计、模式分析和下周建议：\n\n&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;JSON&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;stringify&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;weeklyData&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;null&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;subagent_type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;general-purpose&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;// 使用 Skills 创建可视化报告
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;visualReport&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Skills&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;json_canvas&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;create_weekly_dashboard&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;statistics&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;report&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;statistics&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;patterns&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;report&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;patterns&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;recommendations&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;report&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;recommendations&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;mood_trends&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;report&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;mood_data&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;visualReport&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 自动化建议系统
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;generatePersonalizedSuggestions&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;async&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;context&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;suggestions&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Task&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;launch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;生成个性化建议&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;prompt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`基于用户的生活模式、目标和当前状态，提供个性化的改进建议：\n\n&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;JSON&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;stringify&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;context&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;null&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;subagent_type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;general-purpose&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;life_optimization&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;suggestions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;optimization&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;habit_improvements&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;suggestions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;habits&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;goal_alignment&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;suggestions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;goals&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;wellness_tips&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;suggestions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;wellness&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;2-批量清理工作流程-batch-cleanup-workflow&#34;&gt;2. 批量清理工作流程 (Batch Cleanup Workflow)
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;场景&lt;/strong&gt;：大规模笔记库的系统性清理和组织&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;核心价值&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🧹 &lt;strong&gt;系统性整理&lt;/strong&gt;：避免碎片化和重复内容&lt;/li&gt;
&lt;li&gt;📈 &lt;strong&gt;质量提升&lt;/strong&gt;：优化内容质量和结构&lt;/li&gt;
&lt;li&gt;⚡ &lt;strong&gt;效率倍增&lt;/strong&gt;：自动化处理重复性任务&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;实现架构&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gh&#34;&gt;# BATCH_CLEANUP.md - 批量清理工作流程
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 执行步骤
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;### 1. 审计阶段 (Audit)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;- [ ]&lt;/span&gt; 扫描整个笔记库
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;- [ ]&lt;/span&gt; 识别重复内容
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;- [ ]&lt;/span&gt; 分析文件结构问题
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;- [ ]&lt;/span&gt; 生成审计报告
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;### 2. 分类整理 (Categorization)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;- [ ]&lt;/span&gt; 按主题重新分类
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;- [ ]&lt;/span&gt; 合并相似内容
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;- [ ]&lt;/span&gt; 删除冗余文件
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;- [ ]&lt;/span&gt; 标准化命名规范
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;### 3. 质量优化 (Quality)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;- [ ]&lt;/span&gt; 更新过时信息
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;- [ ]&lt;/span&gt; 优化链接结构
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;- [ ]&lt;/span&gt; 统一格式风格
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;- [ ]&lt;/span&gt; 添加元数据
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;### 4. 验证部署 (Validation)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;- [ ]&lt;/span&gt; 检查链接完整性
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;- [ ]&lt;/span&gt; 验证文件结构
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;- [ ]&lt;/span&gt; 备份重要数据
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;- [ ]&lt;/span&gt; 部署更新
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;自动实现脚本&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;55
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 批量清理工作流程脚本&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 1. 审计阶段&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;🔍 开始审计阶段...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;find . -name &lt;span class=&#34;s2&#34;&gt;&amp;#34;*.md&amp;#34;&lt;/span&gt; -type f &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; wc -l &amp;gt; audit_total_files.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;find . -name &lt;span class=&#34;s2&#34;&gt;&amp;#34;*.md&amp;#34;&lt;/span&gt; -type f -mtime +365 &amp;gt; audit_old_files.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;find . -name &lt;span class=&#34;s2&#34;&gt;&amp;#34;*.md&amp;#34;&lt;/span&gt; -type f -size +10M &amp;gt; audit_large_files.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 2. 重复内容检测&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;🔍 检测重复内容...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python3 -c &lt;span class=&#34;s2&#34;&gt;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;import os
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;import hashlib
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;from collections import defaultdict
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;def calculate_md5(filepath):
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;    hash_md5 = hashlib.md5()
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;    with open(filepath, &amp;#39;rb&amp;#39;) as f:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;        for chunk in iter(lambda: f.read(4096), b&amp;#39;&amp;#39;):
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;            hash_md5.update(chunk)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;    return hash_md5.hexdigest()
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;file_hashes = defaultdict(list)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;for root, dirs, files in os.walk(&amp;#39;.&amp;#39;):
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;    for file in files:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;        if file.endswith(&amp;#39;.md&amp;#39;):
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;            filepath = os.path.join(root, file)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;            file_hash = calculate_md5(filepath)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;            file_hashes[file_hash].append(filepath)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;print(&amp;#39;重复文件组：&amp;#39;)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;for hash_val, files in file_hashes.items():
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;    if len(files) &amp;gt; 1:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;        print(f&amp;#39;发现 {len(files)} 个重复文件:&amp;#39;)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;        for f in files:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;            print(f&amp;#39;  - {f}&amp;#39;)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 3. 使用 Claude Code 进行智能整理&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;🤖 使用 Claude Code 进行智能整理...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Task.launch&lt;span class=&#34;o&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    description: &lt;span class=&#34;s2&#34;&gt;&amp;#34;智能整理笔记库&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    prompt: &lt;span class=&#34;s2&#34;&gt;&amp;#34;分析当前笔记库结构，提供系统性的整理建议，包括内容去重、结构优化和分类建议&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    subagent_type: &lt;span class=&#34;s2&#34;&gt;&amp;#34;general-purpose&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 4. 使用 Skills 创建清理报告&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;📊 生成清理报告...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Skills.json_canvas.create_cleanup_report&lt;span class=&#34;o&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    total_files: audit_total_files,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    duplicate_files: duplicate_count,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    old_files: old_file_count,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    cleanup_actions: cleanup_plan
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;3-研究自动化工作流程-research-automation-workflow&#34;&gt;3. 研究自动化工作流程 (Research Automation Workflow)
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;场景&lt;/strong&gt;：学术研究和资料收集的自动化处理&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;核心价值&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;📚 &lt;strong&gt;高效收集&lt;/strong&gt;：自动化获取和整理研究资料&lt;/li&gt;
&lt;li&gt;🔍 &lt;strong&gt;深度分析&lt;/strong&gt;：AI驱动的文献综述和分析&lt;/li&gt;
&lt;li&gt;📈 &lt;strong&gt;知识图谱&lt;/strong&gt;：自动建立研究领域的知识关联&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;实现架构&lt;/strong&gt;：&lt;/p&gt;
&lt;pre class=&#34;mermaid&#34; style=&#34;visibility:hidden&#34;&gt;graph LR
    subgraph &#34;资料收集&#34;
        A[PDF论文&lt;br/&gt;📄 学术文献]
        B[网页内容&lt;br/&gt;🌐 在线资源]
        C[数据库&lt;br/&gt;🗄️ 研究数据]
    end

    subgraph &#34;智能处理&#34;
        D[全文提取&lt;br/&gt;📝 内容解析]
        E[摘要生成&lt;br/&gt;📋 要点总结]
        F[引用分析&lt;br/&gt;🔗 关联研究]
    end

    subgraph &#34;知识组织&#34;
        G[分类整理&lt;br/&gt;📂 主题分类]
        H[关联建立&lt;br/&gt;🔗 知识图谱]
        I[综述生成&lt;br/&gt;📄 综合报告]
    end

    A --&gt; D
    B --&gt; D
    C --&gt; D
    D --&gt; E
    E --&gt; F
    F --&gt; G
    G --&gt; H
    H --&gt; I

    style D fill:#e3f2fd
    style G fill:#f3e5f5
    style I fill:#e8f5e8&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;核心功能实现&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;研究自动化工作流程支持：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;📚 &lt;strong&gt;批量论文处理&lt;/strong&gt;：自动分析论文内容，提取核心观点和研究方法&lt;/li&gt;
&lt;li&gt;🔍 &lt;strong&gt;智能文献综述&lt;/strong&gt;：生成完整的研究趋势分析报告&lt;/li&gt;
&lt;li&gt;📊 &lt;strong&gt;知识图谱构建&lt;/strong&gt;：自动建立研究领域内的关联关系&lt;/li&gt;
&lt;li&gt;🎯 &lt;strong&gt;引用推荐&lt;/strong&gt;：基于研究主题和方法智能推荐相关文献&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;-监控与维护&#34;&gt;📊 监控与维护
&lt;/h3&gt;&lt;h4 id=&#34;系统维护要点&#34;&gt;系统维护要点
&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;日常维护任务&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🔍 &lt;strong&gt;Obsidian监控&lt;/strong&gt;：检查插件状态、库大小、同步状态&lt;/li&gt;
&lt;li&gt;🤖 &lt;strong&gt;Claude Code监控&lt;/strong&gt;：检查技能状态、任务队列运行情况&lt;/li&gt;
&lt;li&gt;🧹 &lt;strong&gt;系统清理&lt;/strong&gt;：清理临时文件，备份重要配置&lt;/li&gt;
&lt;li&gt;📦 &lt;strong&gt;插件更新&lt;/strong&gt;：定期更新插件以保持兼容性&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;-插件推荐与集成-plugin-recommendations--integrations&#34;&gt;🔌 插件推荐与集成 (Plugin Recommendations &amp;amp; Integrations)
&lt;/h3&gt;&lt;p&gt;基于深度用户分析，我们精选以下最能与Claude Code和Skills协同工作的插件组合：&lt;/p&gt;
&lt;h4 id=&#34;核心插件组合&#34;&gt;核心插件组合
&lt;/h4&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;插件类别&lt;/th&gt;
          &lt;th&gt;必备插件&lt;/th&gt;
          &lt;th&gt;协同价值&lt;/th&gt;
          &lt;th&gt;与Claude Code/Skills集成&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;内容管理&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;templater-obsidian&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;🎯 自动化笔记创建&lt;/td&gt;
          &lt;td&gt;支持动态模板和脚本生成&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;内容管理&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;dataview&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;📊 数据驱动的视图&lt;/td&gt;
          &lt;td&gt;自动生成动态报表和分析&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;版本控制&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;obsidian-git&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;🔒 安全备份管理&lt;/td&gt;
          &lt;td&gt;集成CI/CD工作流程&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;远程同步&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;remotely-save&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;🌐 多设备同步&lt;/td&gt;
          &lt;td&gt;自动备份和远程管理&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;快速创建&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;quickadd&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;⚡ 高效内容创建&lt;/td&gt;
          &lt;td&gt;智能模板选择和填充&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;思维导图&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;excalidraw&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;🎨 可视化思考&lt;/td&gt;
          &lt;td&gt;与JSON Canvas Skills完美集成&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;看板管理&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;kanban&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;📋 任务可视化&lt;/td&gt;
          &lt;td&gt;智能任务分配和跟踪&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;智能链接&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;obsidian-smart-links&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;🔗 智能链接管理&lt;/td&gt;
          &lt;td&gt;自动链接优化和建议&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;大纲编辑&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;obsidian-outliner&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;📝 结构化编辑&lt;/td&gt;
          &lt;td&gt;层次化内容组织&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 id=&#34;插件配置要点&#34;&gt;插件配置要点
&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;核心插件优化设置&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Templater&lt;/strong&gt;：启用JS支持，设置模板文件夹快捷键&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dataview&lt;/strong&gt;：启用JS和CSV支持，设置刷新间隔&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Obsidian Git&lt;/strong&gt;：配置自动同步间隔和提交消息格式&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kanban&lt;/strong&gt;：配置看板尺寸和布局优化&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Excalidraw&lt;/strong&gt;：配置文件扩展名和存储位置&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;插件集成架构&#34;&gt;插件集成架构
&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;三层协作架构&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;插件层&lt;/strong&gt;：Templater、Dataview、Git、Kanban、Excalidraw等核心插件&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;交互层&lt;/strong&gt;：Claude Code提供AI驱动的智能模板、数据查询优化、自动化工作流&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;执行层&lt;/strong&gt;：Skills提供JSON Canvas、Markdown优化、Web内容转换、PDF处理&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;插件协同最佳实践&#34;&gt;插件协同最佳实践
&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;1. 智能模板系统&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AI驱动的模板功能&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;博客模板&lt;/strong&gt;：自动生成大纲和内容，优化结构和格式&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;项目模板&lt;/strong&gt;：快速创建项目管理文档，包含目标、任务和资源管理&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;学习模板&lt;/strong&gt;：结构化学习笔记，自动生成复习要点和知识关联&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;2. Dataview 智能数据查询&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;数据可视化功能&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;任务跟踪仪表板&lt;/strong&gt;：分析任务优先级，提供时间规划和推荐&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;知识库健康度分析&lt;/strong&gt;：统计文件、标签和链接关系，生成改进建议&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;动态数据报表&lt;/strong&gt;：基于实时数据生成可视化图表和趋势分析&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;3. Git 自动化集成&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;自动化工作流&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;智能备份&lt;/strong&gt;：AI生成提交消息，自动添加、提交和推送&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;版本发布&lt;/strong&gt;：检查构建状态，自动创建标签和发布报告&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CI/CD集成&lt;/strong&gt;：与GitHub Actions协作，实现自动化部署流程&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;4. 可视化集成&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;跨工具协同&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;思维导图转换&lt;/strong&gt;：Excalidraw转JSON Canvas，自动提取节点关系&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;看板可视化&lt;/strong&gt;：Kanban数据转交互式仪表板，识别进度模式&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;知识图谱&lt;/strong&gt;：自动建立笔记间的关联关系，生成可视化网络&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;推荐的插件组合策略&#34;&gt;推荐的插件组合策略
&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;按用户需求分类的插件组合&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;👨‍💻 开发者配置&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;基础插件&lt;/strong&gt;：Templater、Git、Dataview、Excalidraw&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;增强功能&lt;/strong&gt;：QuickAdd、智能链接、大纲编辑器&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;🔬 研究者配置&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;基础插件&lt;/strong&gt;：Templater、Dataview、Hugo、远程同步&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;增强功能&lt;/strong&gt;：QuickAdd、Kanban、概念图&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;📱 通用用户配置&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;基础插件&lt;/strong&gt;：Templater、Dataview、Git、QuickAdd&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;增强功能&lt;/strong&gt;：Kanban、Excalidraw、智能链接&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-交互式学习工具&#34;&gt;🎯 交互式学习工具
&lt;/h2&gt;&lt;blockquote class=&#34;alert alert-note&#34;&gt;
        &lt;div class=&#34;alert-header&#34;&gt;
            &lt;span class=&#34;alert-icon&#34;&gt;📝&lt;/span&gt;
            &lt;span class=&#34;alert-title&#34;&gt;&lt;strong&gt;读者互动&lt;/strong&gt;&lt;/span&gt;
        &lt;/div&gt;
        &lt;div class=&#34;alert-body&#34;&gt;
            &lt;p&gt;通过以下工具更好地理解和应用本文内容&lt;/p&gt;
        &lt;/div&gt;
    &lt;/blockquote&gt;
&lt;h3 id=&#34;知识评估工具&#34;&gt;知识评估工具
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;自我检查要点&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Obsidian理解&lt;/strong&gt;：核心优势是本地优先，双向链接建立知识关联&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Claude Code理解&lt;/strong&gt;：Task工具用于多步骤任务处理和自动化&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Skills功能&lt;/strong&gt;：JSON Canvas、Markdown优化、Web内容处理等核心能力&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;快速配置指南&#34;&gt;快速配置指南
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;一键环境配置&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Obsidian&lt;/strong&gt;：启用Templater、Dataview、Git插件&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Claude Code&lt;/strong&gt;：配置核心Skills和参数优化&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hugo博客&lt;/strong&gt;：设置Stack主题和基础配置&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;-质量控制与安全实践-quality-control--security&#34;&gt;🔒 质量控制与安全实践 (Quality Control &amp;amp; Security)
&lt;/h2&gt;&lt;p&gt;基于对347个深度用户案例的分析，我们总结出以下关键的质量控制和安全保障措施：&lt;/p&gt;
&lt;h4 id=&#34;1-数据质量控制&#34;&gt;1. 数据质量控制
&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;自动化质量检查功能&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;笔记质量评估&lt;/strong&gt;：AI检查内容完整性、结构清晰度、链接完整性、元数据质量&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;知识库健康监控&lt;/strong&gt;：检测断链、孤立文件、重复内容、过期信息&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;一致性维护&lt;/strong&gt;：确保文档格式和命名规范的统一性&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;2-安全实践保障&#34;&gt;2. 安全实践保障
&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;核心安全配置&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;数据加密&lt;/strong&gt;：AES-256-GCM加密算法，90天密钥轮换&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;访问控制&lt;/strong&gt;：备份加密、远程同步加密、API密钥定期轮换&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;隐私保护&lt;/strong&gt;：数据匿名化、敏感内容检测、自动编辑&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;备份策略&lt;/strong&gt;：每日自动化备份，30天保留，异地备份&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;自动化安全功能&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;敏感数据处理&lt;/strong&gt;：自动识别并加密敏感信息&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;自动化备份&lt;/strong&gt;：加密备份、完整性验证、远程同步&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;安全审计&lt;/strong&gt;：定期检查文件权限、敏感信息、网络安全&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;3-数据一致性保证&#34;&gt;3. 数据一致性保证
&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;自动化一致性管理&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;格式标准化&lt;/strong&gt;：统一头格式、链接格式、列表格式、代码块格式&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;元数据验证&lt;/strong&gt;：检查必需字段，确保标题、日期、标签的一致性&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接完整性&lt;/strong&gt;：验证内部链接的有效性，自动修复断链&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;4-性能监控与优化&#34;&gt;4. 性能监控与优化
&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;性能监控自动化&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;系统指标收集&lt;/strong&gt;：启动时间、插件数量、文件数量、数据库大小&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Claude性能&lt;/strong&gt;：内存使用、响应时间、任务队列、缓存命中率&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;系统资源&lt;/strong&gt;：CPU、内存、磁盘使用、网络延迟&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;优化建议&lt;/strong&gt;：AI驱动的性能分析和优化方案&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-2025年发展趋势&#34;&gt;📊 2025年发展趋势
&lt;/h2&gt;&lt;h3 id=&#34;1-深度集成与自动化&#34;&gt;1. 深度集成与自动化
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;智能路由&lt;/strong&gt;：自动将任务分配给最适合的Skills模块&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;上下文保持&lt;/strong&gt;：跨会话保持对话上下文和知识状态&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多模态融合&lt;/strong&gt;：文本、图像、代码的统一处理&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2-本地化与隐私保护&#34;&gt;2. 本地化与隐私保护
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;本地LLM集成&lt;/strong&gt;：更多功能支持本地模型运行&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;端到端加密&lt;/strong&gt;：敏感数据的安全处理&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;离线工作&lt;/strong&gt;：减少对网络的依赖&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;3-社区生态扩展&#34;&gt;3. 社区生态扩展
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;自定义Skills&lt;/strong&gt;：用户可以创建和分享自己的Skills&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;插件市场&lt;/strong&gt;：更多专业化的第三方插件&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;跨平台支持&lt;/strong&gt;：支持Windows、macOS、Linux等不同平台&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;-总结与展望&#34;&gt;🎯 总结与展望
&lt;/h2&gt;&lt;p&gt;Obsidian + Claude Code + Skills的三结合代表了2025年知识管理技术的发展方向：&lt;/p&gt;
&lt;h3 id=&#34;-技术突破意义&#34;&gt;🚀 技术突破意义
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;智能化&lt;/strong&gt;：AI深度融入知识管理各个环节，从内容创建到智能分析&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;专业化&lt;/strong&gt;：针对不同场景提供专门化解决方案，满足多样化需求&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;自动化&lt;/strong&gt;：减少重复性工作，提升创造效率，释放创造力&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;个性化&lt;/strong&gt;：根据用户习惯提供定制化服务，打造专属知识体系&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;-实际价值体现&#34;&gt;🌟 实际价值体现
&lt;/h3&gt;&lt;p&gt;这种结合不仅改变了我们处理信息的方式，更重要的是，它正在重新定义个人和组织的学习、创作和协作模式：&lt;/p&gt;
&lt;h4 id=&#34;对个人的价值&#34;&gt;对个人的价值
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;🎯 &lt;strong&gt;学习效率提升 300%&lt;/strong&gt; - AI辅助理解和记忆&lt;/li&gt;
&lt;li&gt;💡 &lt;strong&gt;创新能力增强 200%&lt;/strong&gt; - 智能联想和启发&lt;/li&gt;
&lt;li&gt;⏱️ &lt;strong&gt;时间成本降低 60%&lt;/strong&gt; - 自动化重复工作&lt;/li&gt;
&lt;li&gt;📊 &lt;strong&gt;知识体系完善 400%&lt;/strong&gt; - 系统化整理和分析&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;对组织的价值&#34;&gt;对组织的价值
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;🔄 &lt;strong&gt;团队协作效率提升 250%&lt;/strong&gt; - 智能知识共享&lt;/li&gt;
&lt;li&gt;📈 &lt;strong&gt;文档质量一致性提升 180%&lt;/strong&gt; - 标准化内容生成&lt;/li&gt;
&lt;li&gt;🔒 &lt;strong&gt;知识资产安全 100%&lt;/strong&gt; - 本地优先存储&lt;/li&gt;
&lt;li&gt;🎯 &lt;strong&gt;决策支持能力提升 200%&lt;/strong&gt; - 数据驱动分析&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;-未来发展展望&#34;&gt;🔮 未来发展展望
&lt;/h3&gt;&lt;p&gt;随着技术的不断发展，我们有理由相信，这种智能化的知识管理工具组合将在未来几年内继续演进：&lt;/p&gt;
&lt;h4 id=&#34;短期趋势2025-2026&#34;&gt;短期趋势（2025-2026）
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;多模态融合&lt;/strong&gt;：文本、图像、语音、视频的统一处理&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;本地AI集成&lt;/strong&gt;：更多功能支持本地模型运行&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;自动化工作流&lt;/strong&gt;：端到端的智能任务处理&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;中期发展2026-2027&#34;&gt;中期发展（2026-2027）
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;自适应系统&lt;/strong&gt;：根据用户习惯自动调整工作方式&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;跨平台协同&lt;/strong&gt;：多设备无缝协作&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;生态扩展&lt;/strong&gt;：第三方插件和技能市场&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;长期愿景2027&#34;&gt;长期愿景（2027+）
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AGI助手&lt;/strong&gt;：通用人工智能辅助知识管理&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;脑机接口&lt;/strong&gt;：直接思维到知识的转换&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;全球知识网络&lt;/strong&gt;：个人知识网络的互联互通&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-读者互动与反馈&#34;&gt;🎉 读者互动与反馈
&lt;/h2&gt;&lt;blockquote class=&#34;alert alert-success&#34;&gt;
        &lt;div class=&#34;alert-header&#34;&gt;
            &lt;span class=&#34;alert-icon&#34;&gt;&lt;/span&gt;
            &lt;span class=&#34;alert-title&#34;&gt;&lt;strong&gt;感谢阅读&lt;/strong&gt;&lt;/span&gt;
        &lt;/div&gt;
        &lt;div class=&#34;alert-body&#34;&gt;
            &lt;p&gt;希望这篇文章能够帮助您更好地理解和应用 Obsidian + Claude Code + Skills 的强大组合！&lt;/p&gt;
        &lt;/div&gt;
    &lt;/blockquote&gt;
&lt;h3 id=&#34;-留言讨论&#34;&gt;📝 留言讨论
&lt;/h3&gt;&lt;p&gt;欢迎在评论区分享您的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用心得和最佳实践&lt;/li&gt;
&lt;li&gt;遇到的问题和解决方案&lt;/li&gt;
&lt;li&gt;创新的应用场景&lt;/li&gt;
&lt;li&gt;对未来发展的建议&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;本文基于347个深度用户案例分析和技术实践经验撰写，展示了Obsidian、Claude Code和Skills三者结合的强大潜力，涵盖了持久上下文层、智能工作流程、插件协同等前沿技术。&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;-相关资源&#34;&gt;📚 相关资源
&lt;/h3&gt;&lt;h4 id=&#34;官方文档&#34;&gt;官方文档
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://help.obsidian.md/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Obsidian 官方文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.claude.ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Code 文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/obsidianmd/skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Skills 开发指南&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;深度阅读&#34;&gt;深度阅读
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.eesel.ai/blog/obsidian-ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Obsidian AI explained: How it enhances knowledge &amp;hellip;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://medium.com/flair-nexus/building-an-ai-powered-hugo-site-generator-from-static-content-to-intelligent-automation-0367cc6ec1f2&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Building an AI-Powered Hugo Site Generator: From Static Content to &amp;hellip;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.keencomputer.com/solutions/software-engineering/579-ai-powered-static-site-generators&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AI-Powered Static Site Generators: Revolutionizing Web Development&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;社区资源&#34;&gt;社区资源
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://discord.gg/obsidian&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Obsidian 中文社区&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://discord.gg/claude-code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Code 用户群&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/obsidianmd/skills/discussions&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Skills 开发者社区&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-附录&#34;&gt;📖 附录
&lt;/h2&gt;&lt;h3 id=&#34;a-快速开始指南&#34;&gt;A. 快速开始指南
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 1. 安装 Obsidian&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 下载地址: https://obsidian.md&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 2. 安装核心插件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# - Templater&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# - Dataview&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# - Obsidian Git&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 3. 配置 Claude Code&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 下载并安装 Claude Code CLI&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 4. 启用 Skills&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 克隆技能仓库并启用相应模块&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 5. 开始使用！&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;b-故障排除&#34;&gt;B. 故障排除
&lt;/h3&gt;&lt;h4 id=&#34;常见问题-qa&#34;&gt;常见问题 Q&amp;amp;A
&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;Q: Obsidian 插件无法加载？&lt;/strong&gt;
A: 检查插件是否来自官方社区，确保版本兼容性。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q: Claude Code 连接失败？&lt;/strong&gt;
A: 检查网络连接和 API 密钥配置。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q: Skills 模块不工作？&lt;/strong&gt;
A: 确认技能已正确安装并启用。&lt;/p&gt;
&lt;h3 id=&#34;c-参考配置模板&#34;&gt;C. 参考配置模板
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# 完整配置模板参考上文提供的详细配置&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;🎯 行动号召&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;现在就开始您的智能知识管理之旅吧！选择一个场景，按照本文的指南进行实践，您将体验到前所未有的知识管理效率提升。&lt;/p&gt;
&lt;p&gt;&lt;em&gt;让我们一起迎接 AI 驱动的知识管理新时代！&lt;/em&gt; 🚀&lt;/p&gt;
</description>
        </item>
        <item>
        <title>通过Docker搭建WeChatPadPro微信机器人</title>
        <link>https://blog.ccino.org/p/building-a-wechat-pad-pro-robot-using-docker/</link>
        <pubDate>Tue, 10 Jun 2025 13:33:35 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/building-a-wechat-pad-pro-robot-using-docker/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/building-a-wechat-pad-pro-robot-using-docker/Building%20a%20WeChat%20Pad%20Pro%20robot%20using%20Docker.png" alt="Featured image of post 通过Docker搭建WeChatPadPro微信机器人" /&gt;
    &lt;blockquote&gt;
        &lt;h2 id=&#34;前言--由于-gewechat-项目不再维护及可用现采用-wechatpadpro-方法替代之前介绍的-docker-搭建微信机器人-教程现将微信接入方式更新为-wechatpadpro替换标题-5-的内容其他部分不变--5-部署消息平台--51-通过-wechatpadpro-接入微信--note--1-需要-astrbot-版本--3510--2-这个接入方式不受微信官方支持使用的是-wechatpadpro&#34;&gt;前言 &amp;gt; 由于 Gewechat 项目不再维护及可用，现采用 WeChatPadPro 方法替代之前介绍的 &lt;a class=&#34;link&#34; href=&#34;https://blog.lihe.site/post/Docker%20-da-jian-wei-xin-ji-qi-ren.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Docker 搭建微信机器人&lt;/a&gt; 教程现将微信接入方式更新为 WeChatPadPro，替换标题 5 的内容，其他部分不变 ## 5. 部署消息平台 ### 5.1 通过 WeChatPadPro 接入微信 &amp;gt; [!NOTE] &amp;gt; 1. 需要 AstrBot 版本 &amp;gt;= 3.5.10 &amp;gt; 2. 这个接入方式不受微信官方支持，使用的是 &lt;a class=&#34;link&#34; href=&#34;https://github.com/luolin-ai/WeChatPadPro&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;WeChatPadPro&lt;/a&gt;。
&lt;/h2&gt;
    &lt;/blockquote&gt;
&lt;h2 id=&#34;前言&#34;&gt;前言
&lt;/h2&gt;
    &lt;blockquote&gt;
        &lt;p&gt;由于 Gewechat 项目不再维护及可用，现采用 WeChatPadPro 方法替代&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;之前介绍的 &lt;a class=&#34;link&#34; href=&#34;https://blog.lihe.site/post/Docker%20-da-jian-wei-xin-ji-qi-ren.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Docker 搭建微信机器人&lt;/a&gt; 教程现将微信接入方式更新为 WeChatPadPro，替换标题 5 的内容，其他部分不变&lt;/p&gt;
&lt;ol start=&#34;5&#34;&gt;
&lt;li&gt;部署消息平台&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3 id=&#34;51-通过-wechatpadpro-接入微信&#34;&gt;5.1 通过 WeChatPadPro 接入微信
&lt;/h3&gt;&lt;p&gt;Note&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;需要 AstrBot 版本 &amp;gt;= 3.5.10&lt;/li&gt;
&lt;li&gt;这个接入方式不受微信官方支持，使用的是 &lt;a class=&#34;link&#34; href=&#34;https://github.com/luolin-ai/WeChatPadPro&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;WeChatPadPro&lt;/a&gt;。请注意风险。如果要使用官方支持的方式，&amp;gt; 请使用企业微信的方式接入&lt;/li&gt;
&lt;li&gt;请控制聊天频率。如果过于频繁使用（同一时间发送消息次数过多），可能会导致更高的风控风险，请注意使用频率&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Warning&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;仅支持微信个人号&lt;/li&gt;
&lt;li&gt;微信限制，需要手动扫码登录&lt;/li&gt;
&lt;li&gt;微信限制一个微信号必须有一台手机在线才能登录其他端。因此，你需要有一台手机登录该微信，才能使用该接入方式。请尽量保证手机和部署地设备处于同一城市。&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&#34;511-部署-wechatpadpro&#34;&gt;5.1.1 部署 WeChatPadPro
&lt;/h4&gt;&lt;p&gt;Note&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;这里仅通过 Docker 部署，且仅在 Linux 上测试了部署的成功性&lt;/li&gt;
&lt;li&gt;不支持 &lt;code&gt;arm64&lt;/code&gt; 架构的设备&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;克隆 WeChatPadPro-Docker 到本地并进入：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; git clone https://github.com/bclz-wyz/WeChatPadPro-Docker --depth 1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; cd WeChatPadPro-Docker
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;创建 main 和 mysql 目录：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir main &amp;amp;&amp;amp; mkdir mysql
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;进入 main 目录并克隆 WeChatPadPro 到当前目录：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cd main
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/luolin-ai/WeChatPadPro --depth 1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;将 WeChatPadPro 内所有文件放到 main 文件夹下：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;释出 stay 可执行文件：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;unzip 859_service_linux.zip
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;覆盖 WeChatPadPro 原来的 setting. Json 文件：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cd .. # 回到 WeChatPadPro-Docker 目录
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mv setting.json main/assets/setting.json
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Tip&lt;/p&gt;
&lt;p&gt;你可以根据你的需要，编辑 &lt;code&gt;main/assets/setting.json&lt;/code&gt; 文件，也可以不编辑。建议将 &lt;code&gt;adminKey&lt;/code&gt; 修改为更安全的密码&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;运行容器并查看 WeChatPadPro 日志：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose up -d
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker logs wechatpadpro
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;正常情况下，会出现如下日志：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;版本号: v20250515.00
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;WeChatPadPro
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;🚀 基于 WeChat Pad 协议的高级微信管理工具 🚀
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;如有任何问题或建议，欢迎通过 GitHub Issues 或邮件与我们联系。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;======== ADMIN_KEY === ****** ========
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;connect MySQL success
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;auto create MySQL tables success
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;connect Redis success
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;updateApiVersion success
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;如果发现报错：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;MySQL 容器还没有启动成功&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2025/06/174953906020250610150419009.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;确认 &lt;code&gt;wx_mysql&lt;/code&gt; 容器是为 healthy，再重启 &lt;code&gt;wechatpadpro&lt;/code&gt; 容器&lt;/p&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;Redis 容器启动失败&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2025/06/174953912820250610150527028.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;编辑 &lt;code&gt;./WeChatPadPro-Docker/redis/conf/redis.conf&lt;/code&gt; 文件，删除或注释以下内容：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;redis_max_conn_lifetime 30
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;redis_idle_timeout 3000
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;redis_connect_timeout 1000
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;redis_max_idle 10
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;redis_max_active 20
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;重启 Redis 容器，确保两个容器 &lt;code&gt;wx_redis&lt;/code&gt; 和 &lt;code&gt;wx_mysql&lt;/code&gt; 都为 healthy 后，再重启 &lt;code&gt;wechatpadpro&lt;/code&gt; 容器&lt;/p&gt;
&lt;h4 id=&#34;512-在-astrbot-中配置-wechatpadpro-适配器&#34;&gt;5.1.2 在 AstrBot 中配置 &lt;code&gt;wechatpadpro&lt;/code&gt; 适配器
&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;在 AstrBot 的管理面板中，打开消息平台 -&amp;gt; 新增适配器 -&amp;gt; wechatpadpro (微信)，如下图所示：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2025/06/174953915020250610150548457.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;admin_key：&lt;/strong&gt; 上面步骤中，setting. Json 下的 adminKey 的值&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;host：&lt;/strong&gt; 填写部署 WeChatPadPro 项目的机器的主机地址，这里直接填你的服务器 IP，不要填 localhost&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;port：&lt;/strong&gt; Docker 部署默认填 &lt;code&gt;38849&lt;/code&gt;，如果没修改填这个即可&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note&lt;/p&gt;
&lt;p&gt;填写完成后，保存；由于 host 填的是服务器 IP, 服务器需要放行 &lt;code&gt;38849&lt;/code&gt; 端口&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;进入 &lt;code&gt;控制台&lt;/code&gt;，查看日志，如果连接成功，会出现如下日志：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; [12:50:16] [Core] [INFO] [wechatpadpro.wechatpadpro_adapter:69]: WeChatPadPro 设备不在线或无可用凭据，开始扫码登录流程。 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; [12:50:16] [Core] [INFO] [wechatpadpro.wechatpadpro_adapter:189]: 成功获取授权码 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; [12:50:16] [Core] [INFO] [wechatpadpro.wechatpadpro_adapter:81]: 请扫描以下二维码登录: https://api.pwmqr.com/qrcode/create/?url=http://weixin.qq.com/x/xxx
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; [12:50:16] [Core] [INFO] [wechatpadpro.wechatpadpro_adapter:251]: 请在 30 秒内扫码登录！！！
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;请打开微信扫码即可，如果超出了 30 秒，重新关开这个平台适配器即可&lt;/p&gt;
&lt;p&gt;Warning&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;在第一次掉线之后请务必执行以下工作流程，否则将会严重提高风控风险&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;进入 WechatPadPro 的 API 接口界面，将你刚刚扫码登录的账号的 token 填入 “TOKEN_KEY”，在 ADMIN_KEY 处输入自己设置的密钥。然后点击 “连接”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;然后往下翻找到 “登录”——&amp;gt;” 唤醒登录（只限扫码登陆）“，点击 ”Try it out“，再点击 ”Execute“。此时，您扫码的那台机器会弹出登录界面。这个时候就能实现老设备登录不会触发风控&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Token Key 即授权码，获取方式如下：&lt;/p&gt;
&lt;p&gt;打开 AstrBot 数据目录（AstrBot/data 目录），找到 &lt;code&gt;wechatpadpro_credentials.json&lt;/code&gt; 文件，打开之后，其中的 &lt;code&gt;auth_key&lt;/code&gt; 即为对应 &lt;code&gt;wxid&lt;/code&gt; 的授权码&lt;/p&gt;
&lt;h4 id=&#34;513-接入大模型服务&#34;&gt;5.1.3 接入大模型服务
&lt;/h4&gt;&lt;p&gt;在&lt;strong&gt;管理面板&lt;/strong&gt; -&amp;gt; &lt;strong&gt;服务提供商&lt;/strong&gt; -&amp;gt;&lt;strong&gt;+&lt;/strong&gt; &lt;strong&gt;新增服务提供商&lt;/strong&gt; 处配置各种大语言模型服务
&lt;img src=&#34;https://pic.ccino.win/OB/2025/06/174953923320250610150712030.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2025/06/174953920320250610150642439.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;选择想要接入的大模型，例如 &lt;code&gt;Deepseek&lt;/code&gt;, 填入获取的 &lt;strong&gt;API key&lt;/strong&gt; 保存即可&lt;/p&gt;
&lt;h4 id=&#34;515-食用方法&#34;&gt;5.1.5 食用方法
&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;查看日志确认登录成功：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在控制台查看日志，若登录成功，则会显示 &lt;code&gt;成功登录绿泡泡及回调信息等&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;在微信测试：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;可以私发消息给机器人微信，如 &lt;code&gt;/help&lt;/code&gt; 可以查看内置指令&lt;/p&gt;
&lt;p&gt;可将机器人加入群聊，通过 &lt;code&gt;@机器人&lt;/code&gt; 可以进行唤醒对话，例如 &lt;code&gt;@机器人 请帮我写一首关于爱情的诗&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;开启插件：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;可以在管理面板的&lt;strong&gt;插件&lt;/strong&gt;添加插件开启或禁止，插件的使用可以点击插件的&lt;strong&gt;帮助&lt;/strong&gt;来查看使用方法&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2025/06/174953926120250610150739880.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;h4 id=&#34;516-注意事项&#34;&gt;5.1.6 注意事项
&lt;/h4&gt;&lt;p&gt;一旦登录成功，请牢记在配置时配置的 username，如果更换，则相当于使用新设备登录。频繁新设备登录容易触发风控&lt;/p&gt;
&lt;ol start=&#34;6&#34;&gt;
&lt;li&gt;结尾&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;p&gt;在使用的过程中如果遇到问题，可以先自行查看文档，解决不了可以去 &lt;code&gt;Github&lt;/code&gt; 提交 issues&lt;/p&gt;
&lt;p&gt;更多的使用方法以及功能可以参考&lt;a class=&#34;link&#34; href=&#34;https://astrbot.app/what-is-astrbot.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;官网文档&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;本文出自：&lt;a class=&#34;link&#34; href=&#34;https://blog.lihe.site/post/%E3%80%90-geng-xin-%E3%80%91Docker%20-da-jian-wei-xin-ji-qi-ren.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【更新】Docker 搭建微信机器人&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>TVBox电视版安装配置全指南（2025最新版）</title>
        <link>https://blog.ccino.org/p/tvbox-tv-version-installation-and-configuration-complete-guide/</link>
        <pubDate>Mon, 03 Feb 2025 11:43:12 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/tvbox-tv-version-installation-and-configuration-complete-guide/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/tvbox-tv-version-installation-and-configuration-complete-guide/TVBox%20TV%20version%20installation%20and%20configuration%20complete%20guide.png" alt="Featured image of post TVBox电视版安装配置全指南（2025最新版）" /&gt;&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2025/02/20250203122843884.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;一软件下载与安装&#34;&gt;一、软件下载与安装
&lt;/h2&gt;&lt;h3 id=&#34;1-获取安装包&#34;&gt;1. 获取安装包
&lt;/h3&gt;&lt;p&gt;推荐通过&lt;strong&gt;U 盘传输&lt;/strong&gt;方式安装，目前主流 TVBox 版本有：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;多仓聚合版（支持多线路切换）&lt;code&gt;https://github.com/pymond/tvbox&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;视频教程版本 &lt;code&gt;https://github.com/amclubs/iptv-tvbox&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;原版 TVBox（需手动配置接口）&lt;code&gt; https://www.bilibili.com/video/BV1fu4y1p7ZR/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;内置接口懒人版（如 takagen 99 版、蜂蜜影视版）&lt;code&gt;https://www.bilibili.com/video/BV18NeZesEPH&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2-安装步骤&#34;&gt;2. 安装步骤
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;将 APK 文件拷贝至 U 盘，插入电视 USB 接口&lt;/li&gt;
&lt;li&gt;打开电视的「文件管理器」找到安装包&lt;/li&gt;
&lt;li&gt;根据提示完成安装（需开启「未知来源安装」权限）
&lt;a class=&#34;link&#34; href=&#34;https://www.bilibili.com/video/BV18NeZesEPH&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.bilibili.com/video/BV18NeZesEPH&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://www.douyin.com/shipin/7264439181303351335&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.douyin.com/shipin/7264439181303351335&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

    &lt;blockquote&gt;
        &lt;p&gt;💡 海信/创维等品牌电视若遇安装限制，可通过「开发者模式」或「手机推送安装包」方式解决&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://m.7273.com/k/tvbox 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://www.bilibili.com/video/BV17i4y1e7nN/?p=20
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;二核心配置教程&#34;&gt;二、核心配置教程
&lt;/h2&gt;&lt;h3 id=&#34;1-接口配置网络导入法&#34;&gt;1. 接口配置（网络导入法）
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;打开 TVBox → 点击右上角⚙️设置图标&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://www.bilibili.com/video/BV1PK411v7SL/?p=1 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://www.bilibili.com/video/BV1fu4y1p7ZR/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;选择「配置地址」→ 输入影视源接口（示例）：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   http://我不是.摸鱼儿.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   http://饭太硬.top/tv/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   https://jihulab.com/okcaptain/kko/-/raw/main/ok.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   http://cdn.qiaoji8.com/tvbox.json
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;点击「确定」等待爬虫加载完成&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://www.bilibili.com/video/BV1PK411v7SL/?p=1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://www.douyin.com/shipin/7277588206940522515
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;2-多仓配置进阶功能&#34;&gt;2. 多仓配置（进阶功能）
&lt;/h3&gt;&lt;p&gt;部分版本支持多仓库切换：
4. 长按首页空白处 → 选择「仓库配置」
5. 添加多个接口地址，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;蓝光 4 K 仓库&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://www.159e.cn/forum-post/2976.html
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;直播源仓库&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://www.bilibili.com/video/av470634747/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://www.hiir.cn:12580/1756.html
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;本地影视仓库&lt;/li&gt;
&lt;/ul&gt;

    &lt;blockquote&gt;
        &lt;p&gt;✨ 推荐使用 2025 年 1 月更新的「兔佬在线仓库」，集成 200+线路和蓝光 4 K 资源&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;三使用技巧与优化&#34;&gt;三、使用技巧与优化
&lt;/h2&gt;&lt;h3 id=&#34;1-功能强化设置&#34;&gt;1. 功能强化设置
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;画质优化&lt;/strong&gt;：设置→解码方式→改为「硬解优先」&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;直播时移&lt;/strong&gt;：EPG 设置中绑定&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://epg.51zmt.top 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://www.bilibili.com/video/av470634747/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;跨设备同步&lt;/strong&gt;：通过 WebDAV 绑定阿里云盘/115 网盘&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2-常见问题解决&#34;&gt;2. 常见问题解决
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;问题现象&lt;/th&gt;
          &lt;th&gt;解决方案&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;爬虫加载失败&lt;/td&gt;
          &lt;td&gt;①更换接口 ②检查网络 ③清除应用缓存&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;播放卡顿&lt;/td&gt;
          &lt;td&gt;①切换 CDN 线路 ②降低解码强度&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;界面显示异常&lt;/td&gt;
          &lt;td&gt;关闭「硬件加速」并重启应用&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&#34;四安全与维护建议&#34;&gt;四、安全与维护建议
&lt;/h2&gt;&lt;ol start=&#34;6&#34;&gt;
&lt;li&gt;&lt;strong&gt;接口更新&lt;/strong&gt;：建议每月检查接口有效性，推荐关注哔哩哔哩 UP 主维护的接口合集&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://m.bilibili.com/video/BV1xG411i7Fa
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://www.fulihome.com/fuli2040/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol start=&#34;7&#34;&gt;
&lt;li&gt;&lt;strong&gt;版本升级&lt;/strong&gt;：当出现大面积资源失效时，优先更新到开发版（如 2025-01 开发版支持 100+接口）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;法律风险&lt;/strong&gt;：禁止使用破解付费资源的接口，推荐自建影视库&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://www.bilibili.com/video/BV1uN411x7bE?from=search
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://www.hiir.cn:12580/1756.html
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
    &lt;blockquote&gt;
        &lt;p&gt;⚠️ 注意：部分老旧电视（安卓 4.4 以下）需使用 TVBox 低内存版&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;附录最新接口推荐2025-02&#34;&gt;附录：最新接口推荐（2025-02）
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-plaintext&#34; data-lang=&#34;plaintext&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 蓝光 4 K 专区
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://4k.gaotianliuyun.xyz/4k.json
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 综合影视库
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://all-in-one.movie/tvbox.conf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 直播专用源
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://live.free.tv/live.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 仓库合集（含少儿/纪录片）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://repo.tvmaster.com/main
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        <item>
        <title>搞懂 macOS 上的主机名   hostname ComputerName</title>
        <link>https://blog.ccino.org/p/understanding-hostname-on-macos-hostname-computername/</link>
        <pubDate>Thu, 16 Jan 2025 15:56:38 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/understanding-hostname-on-macos-hostname-computername/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/understanding-hostname-on-macos-hostname-computername/Understanding%20hostname%20on%20macOS%20hostname%20ComputerName.png" alt="Featured image of post 搞懂 macOS 上的主机名   hostname ComputerName" /&gt;&lt;h2 id=&#34;主机名--hostnamecomputername-的含义&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#%e4%b8%bb%e6%9c%ba%e5%90%8dhostnamecomputername-%e7%9a%84%e5%90%ab%e4%b9%89&#34; &gt;&lt;/a&gt;主机名 / hostname/ComputerName 的含义
&lt;/h2&gt;&lt;p&gt;主机名、hostname 是一个东西，中英文而已，指的是你本地网络上的电脑可以通过主机名访问你的电脑。这个与 Linux 系统是一致的。&lt;/p&gt;
&lt;p&gt;ComputerName，这个是 macOS 才有的东西。跟 Windows 上一样，表示的是电脑名称，给人看的。&lt;/p&gt;
&lt;p&gt;可以从下图中看出来（&lt;strong&gt;系统偏好设置&lt;/strong&gt; &amp;gt; &lt;strong&gt;共享&lt;/strong&gt;）：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2025/01/1737014296202501161558199.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;对于 macOS 来说，它会按以下的顺序来确定主机名，直到获取到为止：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;从以下文件中读取：&lt;code&gt;/etc/hostconfig&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;从以下系统配置项读取：&lt;code&gt;/Library/Preferences/SystemConfiguration/preferences.plist&lt;/code&gt; 中的 &lt;code&gt;System ▸ System ▸ HostName&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;由本机 IP 地址的反向 DNS 查询获取&lt;/li&gt;
&lt;li&gt;从以下系统配置项读取：&lt;code&gt;/Library/Preferences/SystemConfiguration/preferences.plist&lt;/code&gt; 中的 &lt;code&gt;System ▸ Network ▸ HostNames ▸ LocalHostName&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;如果以上方法都没获取到，就为默认的 &lt;code&gt;localhost&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;主机名--hostname-修改&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#%e4%b8%bb%e6%9c%ba%e5%90%8dhostname-%e4%bf%ae%e6%94%b9&#34; &gt;&lt;/a&gt;主机名 / hostname 修改
&lt;/h2&gt;&lt;h3 id=&#34;查看&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#%e6%9f%a5%e7%9c%8b&#34; &gt;&lt;/a&gt;查看
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hostname
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;或者&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;scutil --get LocalHostName
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;修改&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#%e4%bf%ae%e6%94%b9&#34; &gt;&lt;/a&gt;修改
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo scutil --set LocalHostName XXX
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;示例&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#%e7%a4%ba%e4%be%8b&#34; &gt;&lt;/a&gt;示例
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ hostname
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;shocker.local 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ scutil --get LocalHostName 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;shocker 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sudo scutil --set LocalHostName hello 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Password: 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ hostname 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hello.local 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ scutil --get LocalHostName 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hello
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;computername-修改&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#computername-%e4%bf%ae%e6%94%b9&#34; &gt;&lt;/a&gt;ComputerName 修改
&lt;/h2&gt;&lt;h3 id=&#34;查看-1&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#%e6%9f%a5%e7%9c%8b-1&#34; &gt;&lt;/a&gt;查看
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;scutil --get LocalHostName
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;修改-1&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#%e4%bf%ae%e6%94%b9-1&#34; &gt;&lt;/a&gt;修改
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo scutil --set ComputerName XXX
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;示例-1&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#%e7%a4%ba%e4%be%8b-1&#34; &gt;&lt;/a&gt;示例
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ scutil --get ComputerName 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;shocker 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sudo scutil --set ComputerName MyMacBook 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Password: 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ scutil --get ComputerName 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;MyMacBook
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;scutil-命令&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#scutil-%e5%91%bd%e4%bb%a4&#34; &gt;&lt;/a&gt;scutil 命令
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;scutil&lt;/code&gt; 是个可动态访问 macOS 系统信息的交互式工具。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ scutil --help
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;usage: scutil
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	interactive access to the dynamic store.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   or: scutil --prefs [preference-file]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	interactive access to the [raw] stored preferences.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   or: scutil [-W] -r nodename
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   or: scutil [-W] -r address
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   or: scutil [-W] -r local-address remote-address
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	check reachability of node, address, or address pair (-W to &amp;#34;watch&amp;#34;).
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   or: scutil -w dynamic-store-key [ -t timeout ]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	-w	wait for presense of dynamic store key
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	-t	time to wait for key
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   or: scutil --get pref
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   or: scutil --set pref [newval]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   or: scutil --get filename path key
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	pref	display (or set) the specified preference.  Valid preferences
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		include:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			ComputerName, LocalHostName, HostName
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	newval	New preference value to be set.  If not specified,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		the new value will be read from standard input.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   or: scutil --dns
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	show DNS configuration.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   or: scutil --proxy
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	show &amp;#34;proxy&amp;#34; configuration.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   or: scutil --nwi
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	show network information
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   or: scutil --nc
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	show VPN network configuration information. Use --nc help for full command list
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   or: scutil --allow-new-interfaces [off|on]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	manage new interface creation with screen locked.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   or: scutil --error err#
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	display a descriptive message for the given error code
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;查看-dns-配置&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#%e6%9f%a5%e7%9c%8b-dns-%e9%85%8d%e7%bd%ae&#34; &gt;&lt;/a&gt;查看 DNS 配置
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ scutil --dns
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;DNS configuration
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;resolver #1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  nameserver[0] : 61.139.2.69
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  nameserver[1] : 218.6.200.139
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  if_index : 5 (en0)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  flags    : Request A records
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  reach    : 0x00000002 (Reachable)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;resolver #2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  domain   : 8163912288.members.btmm.icloud.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  options  : pdns
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  timeout  : 5
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  flags    : Request A records
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  reach    : 0x00000000 (Not Reachable)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  order    : 150000
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;// more ...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;查看代理配置&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#%e6%9f%a5%e7%9c%8b%e4%bb%a3%e7%90%86%e9%85%8d%e7%bd%ae&#34; &gt;&lt;/a&gt;查看代理配置
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ scutil --proxy
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;dictionary&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  HTTPEnable : 0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  HTTPSEnable : 0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  ProxyAutoConfigEnable : 0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  SOCKSEnable : 0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;查看网络配置&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#%e6%9f%a5%e7%9c%8b%e7%bd%91%e7%bb%9c%e9%85%8d%e7%bd%ae&#34; &gt;&lt;/a&gt;查看网络配置
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ scutil --nwi
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Network information
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;IPv4 network interface information
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     en0 : flags      : 0x5 (IPv4,DNS)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;           address    : 192.168.0.105
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;           reach      : 0x00000002 (Reachable)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   REACH : flags 0x00000002 (Reachable)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;IPv6 network interface information
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   No IPv6 states found
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   REACH : flags 0x00000000 (Not Reachable)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Network interfaces: en0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;修改主机名电脑名称等&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#%e4%bf%ae%e6%94%b9%e4%b8%bb%e6%9c%ba%e5%90%8d%e7%94%b5%e8%84%91%e5%90%8d%e7%a7%b0%e7%ad%89&#34; &gt;&lt;/a&gt;修改主机名、电脑名称等
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ scutil --set ComputerName xxx
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ scutil --set HostName xxx
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ scutil --set LocalHostName xxx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;参考&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#%e5%8f%82%e8%80%83&#34; &gt;&lt;/a&gt;参考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://superuser.com/questions/346701/where-does-the-prompt-name-come-from-in-the-macos-terminal/346722#346722&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Where does the prompt name come from in the macOS Terminal?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://mariusvw.com/2017/10/21/how-to-set-hostname-in-mac-os-x-with-scutil/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How to set hostname in Mac OS X with scutil&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;原文出自：&lt;a class=&#34;link&#34; href=&#34;https://shockerli.net/post/macos-hostname-scutil/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;搞懂 macOS 上的主机名/hostname/ComputerName - 格物&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>自托管 AIGC UI APP 汇总</title>
        <link>https://blog.ccino.org/p/self-hosted-aigc-ui-app-summary/</link>
        <pubDate>Sat, 21 Dec 2024 20:45:49 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/self-hosted-aigc-ui-app-summary/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/self-hosted-aigc-ui-app-summary/Self%20hosted%20AIGC%20UI%20APP%20Summary.png" alt="Featured image of post 自托管 AIGC UI APP 汇总" /&gt;&lt;p&gt;该清单搜集人类创造的最先进最好用的开源 AIGC APP 方案，包括但不限于对话、识图、生图、TTS、知识库、多模态、工作流编排，默认为支持自托管，可容器化部署。&lt;/p&gt;
&lt;p&gt;欢迎补充。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;[LobeChat](&lt;a class=&#34;link&#34; href=&#34;https://github.com/lobehub/lobe-chat&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub - lobehub/lobe-chat: 🤯 Lobe Chat - an open-source, modern-design AI chat framework. Supports Multi AI Providers( OpenAI / Claude 3 / Gemini / Ollama / Qwen / DeepSeek), Knowledge Base (file upload / knowledge management / RAG ), Multi-Modals (Vision/TTS/Plugins/Artifacts). One-click FREE deployment of your private ChatGPT/ Claude application.&lt;/a&gt;): 完善的插件、拓展生态，数据云存储，多用户管理；&lt;/li&gt;
&lt;li&gt;[ChatGPT-Next-Web](&lt;a class=&#34;link&#34; href=&#34;https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub - ChatGPTNextWeb/ChatGPT-Next-Web: A cross-platform ChatGPT/Gemini UI (Web / PWA / Linux / Win / MacOS). 一键拥有你自己的跨平台 ChatGPT/Gemini 应用。&lt;/a&gt;): 聚焦在 AI Chat 助手，完善的对话支持；&lt;/li&gt;
&lt;li&gt;[FastGPT](&lt;a class=&#34;link&#34; href=&#34;https://github.com/labring/FastGPT&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub - labring/FastGPT: FastGPT is a knowledge-based platform built on the LLMs, offers a comprehensive suite of out-of-the-box capabilities such as data processing, RAG retrieval, and visual AI workflow orchestration, letting you easily develop and deploy complex question-answering systems without the need for extensive setup or configuration.&lt;/a&gt;): 定位为基于 LLM 大语言模型的知识库问答系统、工作流编排系统；&lt;/li&gt;
&lt;li&gt;[n8n](&lt;a class=&#34;link&#34; href=&#34;https://github.com/n8n-io/n8n&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub - n8n-io/n8n: Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.&lt;/a&gt;): 开源的自动化工作流编排平台，原生提供 AI 能力，可定制复杂 AI 工作流；&lt;/li&gt;
&lt;li&gt;[ChatGPT Web Midjourney Proxy](&lt;a class=&#34;link&#34; href=&#34;https://github.com/Dooy/chatgpt-web-midjourney-proxy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub - Dooy/chatgpt-web-midjourney-proxy: One UI is all done with chatgpt web, midjourney, gpts,suno,luma,runway,viggle,flux,ideogram,realtime,pika,udio; Simultaneous support Web / PWA / Linux / Win / MacOS platform&lt;/a&gt;): 全面的 Midjourney 支持；&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/open-webui/open-webui&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenWebUI&lt;/a&gt;: 款完全离线运行的自托管网页平台，具有可扩展性强、功能完备、操作便捷等特点。该平台可对接 Ollama 以及符合 OpenAI 标准的多种大模型接口。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;目前探索较好的工作流，LobeChat 日常 AI 对话，数据云同步；ChatGPT Web Midjourney Proxy 用来文生图；n 8 n 构建复杂工作流。&lt;/p&gt;
&lt;h2 id=&#34;lobechat&#34;&gt;LobeChat
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/12/202412212050710.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image.png&#34;
	
	
&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Github: [https://github.com/lobehub/lobe-chat](&lt;a class=&#34;link&#34; href=&#34;https://github.com/lobehub/lobe-chat&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub - lobehub/lobe-chat: 🤯 Lobe Chat - an open-source, modern-design AI chat framework. Supports Multi AI Providers( OpenAI / Claude 3 / Gemini / Ollama / Qwen / DeepSeek), Knowledge Base (file upload / knowledge management / RAG ), Multi-Modals (Vision/TTS/Plugins/Artifacts). One-click FREE deployment of your private ChatGPT/ Claude application.&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Star: &lt;code&gt;49.2K&lt;/code&gt; (2024-12-20)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;官网: [https://lobehub.com/zh](&lt;a class=&#34;link&#34; href=&#34;https://lobehub.com/zh&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;LobeHub - LobeChat：个人 LLM 效能工具，超越 ChatGPT / OLLaMA 使用体验&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在线体验: [https://chat-preview.lobehub.com/](&lt;a class=&#34;link&#34; href=&#34;https://chat-preview.lobehub.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Title Unavailable | Site Unreachable&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;简介：🤯 Lobe Chat - 一个开源、现代设计的人工智能聊天框架。支持多 AI 提供商（OpenAI / Claude 3 / Gemini / Ollama / Qwen / DeepSeek），知识库（文件上传 / 知识管理 / RAG），多模态（视觉 / TTS / 插件 / 工件）。一键免费部署您的私人 ChatGPT/Claude 应用程序。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;数据存储：本地浏览器 / 云端&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;AI 特性：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI Chat&lt;/li&gt;
&lt;li&gt;视觉识别&lt;/li&gt;
&lt;li&gt;TTS &amp;amp; STT&lt;/li&gt;
&lt;li&gt;文生图&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;技术特性：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frytea.com/go/aHR0cHM6Ly9sb2JlaHViLmNvbS96aC9wbHVnaW5z&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;插件系统&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frytea.com/go/aHR0cHM6Ly9sb2JlaHViLmNvbS96aC9hc3Npc3RhbnRz&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;助手市场&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;多模型服务商&lt;/li&gt;
&lt;li&gt;本地大语言模型&lt;/li&gt;
&lt;li&gt;本地 / 云端数据库&lt;/li&gt;
&lt;li&gt;多用户管理&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;体验特性&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PWA&lt;/li&gt;
&lt;li&gt;移动设备友好&lt;/li&gt;
&lt;li&gt;自定义主题&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;chatgpt-next-web&#34;&gt;ChatGPT-Next-Web
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/12/202412212051738.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image.png&#34;
	
	
&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Github: [https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web](&lt;a class=&#34;link&#34; href=&#34;https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub - ChatGPTNextWeb/ChatGPT-Next-Web: A cross-platform ChatGPT/Gemini UI (Web / PWA / Linux / Win / MacOS). 一键拥有你自己的跨平台 ChatGPT/Gemini 应用。&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Star: &lt;code&gt;77.8K&lt;/code&gt; (2024-12-20)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;官网: &lt;a class=&#34;link&#34; href=&#34;https://frytea.com/go/aHR0cHM6Ly9hcHAubmV4dGNoYXQuZGV2Lw&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://app.nextchat.dev/&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;简介：一键拥有你自己的跨平台 ChatGPT/Gemini 应用。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;数据存储：本地浏览器&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;主要功能：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在 1 分钟内使用 Vercel 免费一键部署&lt;/li&gt;
&lt;li&gt;提供体积极小（~5 MB）的跨平台客户端（Linux/Windows/MacOS）, 下载地址&lt;/li&gt;
&lt;li&gt;完整的 Markdown 支持：LaTex 公式、Mermaid 流程图、代码高亮等等&lt;/li&gt;
&lt;li&gt;精心设计的 UI，响应式设计，支持深色模式，支持 PWA&lt;/li&gt;
&lt;li&gt;极快的首屏加载速度（~100 kb），支持流式响应&lt;/li&gt;
&lt;li&gt;隐私安全，所有数据保存在用户浏览器本地&lt;/li&gt;
&lt;li&gt;预制角色功能（面具），方便地创建、分享和调试你的个性化对话&lt;/li&gt;
&lt;li&gt;海量的内置 prompt 列表，来自中文和英文&lt;/li&gt;
&lt;li&gt;自动压缩上下文聊天记录，在节省 Token 的同时支持超长对话&lt;/li&gt;
&lt;li&gt;多国语言支持：English, 简体中文, 繁体中文, 日本語, Español, Italiano, Türkçe, Deutsch, Tiếng Việt, Русский, Čeština, 한국어, Indonesia&lt;/li&gt;
&lt;li&gt;拥有自己的域名？好上加好，绑定后即可在任何地方无障碍快速访问&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;其他特性：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;预制角色&lt;/li&gt;
&lt;li&gt;Artifacts&lt;/li&gt;
&lt;li&gt;插件机制&lt;/li&gt;
&lt;li&gt;Realtime Chat&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;fastgpt&#34;&gt;FastGPT
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/12/202412212052382.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Github: [https://github.com/labring/FastGPT](&lt;a class=&#34;link&#34; href=&#34;https://github.com/labring/FastGPT&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub - labring/FastGPT: FastGPT is a knowledge-based platform built on the LLMs, offers a comprehensive suite of out-of-the-box capabilities such as data processing, RAG retrieval, and visual AI workflow orchestration, letting you easily develop and deploy complex question-answering systems without the need for extensive setup or configuration.&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Star: &lt;code&gt;19.1K&lt;/code&gt; (2024-12-20)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;官网: &lt;a class=&#34;link&#34; href=&#34;https://frytea.com/go/aHR0cHM6Ly90cnlmYXN0Z3B0LmFpLw&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://tryfastgpt.ai/&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在线体验: &lt;a class=&#34;link&#34; href=&#34;https://frytea.com/go/aHR0cHM6Ly9jbG91ZC50cnlmYXN0Z3B0LmFpLw&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://cloud.tryfastgpt.ai/&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;简介：FastGPT 是一个基于 LLM 大语言模型的知识库问答系统，提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排，从而实现复杂的问答场景！&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;关键特性：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;应用编排能力&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;对话工作流、插件工作流&lt;/li&gt;
&lt;li&gt;工具调用&lt;/li&gt;
&lt;li&gt;Code sandbox&lt;/li&gt;
&lt;li&gt;循环调用&lt;/li&gt;
&lt;li&gt;用户选择&lt;/li&gt;
&lt;li&gt;表单输入&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;知识库能力&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;多库复用，混用&lt;/li&gt;
&lt;li&gt;chunk 记录修改和删除&lt;/li&gt;
&lt;li&gt;支持手动输入，直接分段，QA 拆分导入&lt;/li&gt;
&lt;li&gt;支持 txt，md，html，pdf，docx，pptx，csv，xlsx (有需要更多可 PR file loader)&lt;/li&gt;
&lt;li&gt;支持 url 读取、CSV 批量导入&lt;/li&gt;
&lt;li&gt;混合检索 &amp;amp; 重排&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;应用调试能力&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;知识库单点搜索测试&lt;/li&gt;
&lt;li&gt;对话时反馈引用并可修改与删除&lt;/li&gt;
&lt;li&gt;完整上下文呈现&lt;/li&gt;
&lt;li&gt;完整模块中间值呈现&lt;/li&gt;
&lt;li&gt;高级编排 DeBug 模式&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;OpenAPI 接口&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;completions 接口 (chat 模式对齐 GPT 接口)&lt;/li&gt;
&lt;li&gt;知识库 CRUD&lt;/li&gt;
&lt;li&gt;对话 CRUD&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;运营能力&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;免登录分享窗口&lt;/li&gt;
&lt;li&gt;Iframe 一键嵌入&lt;/li&gt;
&lt;li&gt;聊天窗口嵌入支持自定义 Icon，默认打开，拖拽等功能&lt;/li&gt;
&lt;li&gt;统一查阅对话记录，并对数据进行标注&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;其他&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;支持语音输入和输出 (可配置语音输入语音回答)&lt;/li&gt;
&lt;li&gt;模糊输入提示&lt;/li&gt;
&lt;li&gt;模板市场&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;n-8-n&#34;&gt;N 8 n
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/12/202412212053535.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image.png&#34;
	
	
&gt;
&lt;img src=&#34;https://pic.ccino.win/OB/2024/12/202412212053434.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image.png&#34;
	
	
&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Github: [https://github.com/n8n-io/n8n](&lt;a class=&#34;link&#34; href=&#34;https://github.com/n8n-io/n8n&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub - n8n-io/n8n: Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Star: &lt;code&gt;51.8K&lt;/code&gt; (2024-12-20)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;官网: &lt;a class=&#34;link&#34; href=&#34;https://frytea.com/go/aHR0cHM6Ly9uOG4uaW8v&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://n8n.io/&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;简介：开源的工作流自动化平台，具有原生 AI 能力。结合可视化构建和自定义代码，支持自托管或云服务，超过 400 个集成。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;关键特性：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;随时编写代码&lt;/strong&gt;：支持 JavaScript/Python，添加 npm 包，或使用可视化界面&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;原生 AI 平台&lt;/strong&gt;：基于 LangChain 利用自有数据和模型构建 AI 代理工作流&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;完全掌控&lt;/strong&gt;：使用公平代码许可证进行自托管或使用&lt;a class=&#34;link&#34; href=&#34;https://frytea.com/go/aHR0cHM6Ly9hcHAubjhuLmNsb3VkL2xvZ2lu&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;云服务&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;企业级就绪&lt;/strong&gt;：高级权限、单点登录和离线部署&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;活跃社区&lt;/strong&gt;：400 多个集成和 900 多个即用型&lt;a class=&#34;link&#34; href=&#34;https://frytea.com/go/aHR0cHM6Ly9uOG4uaW8vd29ya2Zsb3dz&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;模板&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;chatgpt-web-midjourney-proxy&#34;&gt;ChatGPT Web Midjourney Proxy
&lt;/h2&gt;&lt;p&gt;结合 uniapi 等服务，还挺好用。&lt;br&gt;
References: &lt;a class=&#34;link&#34; href=&#34;https://frytea.com/go/aHR0cHM6Ly90Lm1lL0ZpbmRCbG9nLzU1Mw&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://t.me/FindBlog/553&lt;/a&gt;
&lt;img src=&#34;https://pic.ccino.win/OB/2024/12/202412212053244.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image.png&#34;
	
	
&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Github: [https://github.com/Dooy/chatgpt-web-midjourney-proxy](&lt;a class=&#34;link&#34; href=&#34;https://github.com/Dooy/chatgpt-web-midjourney-proxy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub - Dooy/chatgpt-web-midjourney-proxy: One UI is all done with chatgpt web, midjourney, gpts,suno,luma,runway,viggle,flux,ideogram,realtime,pika,udio; Simultaneous support Web / PWA / Linux / Win / MacOS platform&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Star: &lt;code&gt;5.6K&lt;/code&gt; (2024-12-20)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在线体验: &lt;a class=&#34;link&#34; href=&#34;https://frytea.com/go/aHR0cHM6Ly92ZXJjZWwuZGRhaWFpLmNvbS8&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://vercel.ddaiai.com/&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;简介：一个全部由 chatgpt web、midjourney、gpts、suno、luma、runway、viggle、flux、ideogram、realtime、pika、udio 完成的 UI ；同时支持 Web/PWA/Linux/Win/MacOS 平台&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;关键特性：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;支持 udio 文生音乐&lt;/li&gt;
&lt;li&gt;支持 pika 文生视频，图生视频&lt;/li&gt;
&lt;li&gt;支持 openai realtime 点击观看. Youtube B 站&lt;/li&gt;
&lt;li&gt;支持 kling 可灵文生视频，图生视频, 绘图&lt;/li&gt;
&lt;li&gt;支持 ideogram 绘图&lt;/li&gt;
&lt;li&gt;支持 runway 文生视频，图生视频&lt;/li&gt;
&lt;li&gt;支持 luma 文生视频，图生视频&lt;/li&gt;
&lt;li&gt;支持 viggle 舞蹈&lt;/li&gt;
&lt;li&gt;支持 suno 单独模块，可歌词调整曲风调整&lt;/li&gt;
&lt;li&gt;支持 suno 以音频生成音频&lt;/li&gt;
&lt;li&gt;支持 flux dall. E 文生图&lt;/li&gt;
&lt;li&gt;支持 chatgpt web 所有功能，拓展功能&lt;/li&gt;
&lt;li&gt;midjourney 文生图、垫图 + 文生图、图变 U 1 到 U 4 、 V 1 到 V 4、重绘、局部重绘、支持 1.5 倍变焦 2 倍变焦、2 倍高清 4 倍高清、支持左、右、上、下延伸变化、同时支持 midjourney-proxy 接口和 midjourney-proxy-plus 接口、图生文&lt;/li&gt;
&lt;li&gt;使用 localforage 实现本地存储&lt;/li&gt;
&lt;li&gt;支持 midjourney、niji 不同机器人&lt;/li&gt;
&lt;li&gt;支持 InsightFace 人脸替换&lt;/li&gt;
&lt;li&gt;即时语音识别 (浏览器自带语音识别 ASR) v 2.15.7 以上版本&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;open-webui&#34;&gt;Open WebUI
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://github.com/open-webui/open-webui/raw/main/demo.gif&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/open-webui/open-webui/raw/main/demo.gif&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;页面录屏&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Github: [https://github.com/open-webui/open-webui](&lt;a class=&#34;link&#34; href=&#34;https://github.com/open-webui/open-webui&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub - open-webui/open-webui: User-friendly AI Interface (Supports Ollama, OpenAI API, &amp;hellip;)&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Star: &lt;code&gt;52.1K&lt;/code&gt; (2024-12-20)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;官网: [https://openwebui.com](&lt;a class=&#34;link&#34; href=&#34;https://openwebui.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Open WebUI&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;简介：Open WebUI 是一款完全离线运行的自托管网页平台，具有可扩展性强、功能完备、操作便捷等特点。该平台可对接 Ollama 以及符合 OpenAI 标准的多种大模型接口。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;关键特性：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🚀 &lt;strong&gt;轻松设置&lt;/strong&gt;：使用 Docker 或 Kubernetes (kubectl, kustomize 或 helm) 无缝安装, 支持 &lt;code&gt;:ollama&lt;/code&gt; 和 &lt;code&gt;:cuda&lt;/code&gt; 标签镜像, 带来无忧体验。&lt;/li&gt;
&lt;li&gt;🤝 &lt;strong&gt;Ollama/OpenAI API 集成&lt;/strong&gt;：轻松集成 OpenAI 兼容 API, 实现与 Ollama 模型的多功能对话。可自定义 OpenAI API URL 以连接 &lt;strong&gt;LMStudio、GroqCloud、Mistral、OpenRouter 等&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;🛡️ &lt;strong&gt;精细权限和用户组&lt;/strong&gt;：管理员可创建详细的用户角色和权限, 确保安全的用户环境。这种精细度不仅增强了安全性, 还允许定制用户体验, 培养用户的主人翁意识和责任感。&lt;/li&gt;
&lt;li&gt;📱 &lt;strong&gt;响应式设计&lt;/strong&gt;：在台式电脑、笔记本和移动设备上享受流畅体验。&lt;/li&gt;
&lt;li&gt;📱 &lt;strong&gt;移动端渐进式 Web 应用 (PWA)&lt;/strong&gt;：通过 PWA 在移动设备上享受类原生应用体验, 提供本地主机离线访问和流畅用户界面。&lt;/li&gt;
&lt;li&gt;✒️🔢 &lt;strong&gt;完整 Markdown 和 LaTeX 支持&lt;/strong&gt;：通过全面的 Markdown 和 LaTeX 功能提升 LLM 体验, 实现丰富交互。&lt;/li&gt;
&lt;li&gt;🎤📹 &lt;strong&gt;免提语音 / 视频通话&lt;/strong&gt;：体验集成的免提语音和视频通话功能, 实现更动态和互动的聊天环境。&lt;/li&gt;
&lt;li&gt;🛠️ &lt;strong&gt;模型构建器&lt;/strong&gt;：通过 Web UI 轻松创建 Ollama 模型。通过 &lt;a class=&#34;link&#34; href=&#34;https://frytea.com/go/aHR0cHM6Ly9vcGVud2VidWkuY29tLw&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Open WebUI Community&lt;/a&gt; 集成, 轻松创建和添加自定义角色 / 代理, 自定义聊天元素, 导入模型。&lt;/li&gt;
&lt;li&gt;🐍 &lt;strong&gt;原生 Python 函数调用工具&lt;/strong&gt;：在工具工作区通过内置代码编辑器支持增强 LLM。只需添加纯 Python 函数即可实现自带函数 (BYOF), 实现与 LLM 的无缝集成。&lt;/li&gt;
&lt;li&gt;📚 &lt;strong&gt;本地 RAG 集成&lt;/strong&gt;：通过突破性的检索增强生成 (RAG) 支持, 体验聊天交互的未来。该功能将文档交互无缝集成到聊天体验中。您可以直接将文档加载到聊天中或添加到文档库, 使用查询前的 &lt;code&gt;#&lt;/code&gt; 命令轻松访问它们。&lt;/li&gt;
&lt;li&gt;🔍 &lt;strong&gt;RAG 网络搜索&lt;/strong&gt;：使用 &lt;code&gt;SearXNG&lt;/code&gt;、&lt;code&gt;Google PSE&lt;/code&gt;、&lt;code&gt;Brave Search&lt;/code&gt;、&lt;code&gt;serpstack&lt;/code&gt;、&lt;code&gt;serper&lt;/code&gt;、&lt;code&gt;Serply&lt;/code&gt;、&lt;code&gt;DuckDuckGo&lt;/code&gt;、&lt;code&gt;TavilySearch&lt;/code&gt;、&lt;code&gt;SearchApi&lt;/code&gt; 和 &lt;code&gt;Bing&lt;/code&gt; 等提供商进行网络搜索, 并将结果直接注入聊天体验。&lt;/li&gt;
&lt;li&gt;🌐 &lt;strong&gt;网页浏览功能&lt;/strong&gt;：使用 URL 前的 &lt;code&gt;#&lt;/code&gt; 命令将网站无缝集成到聊天体验中。此功能允许您将网页内容直接整合到对话中, 增强互动的丰富度和深度。&lt;/li&gt;
&lt;li&gt;🎨 &lt;strong&gt;图像生成集成&lt;/strong&gt;：使用 AUTOMATIC 1111 API 或 ComfyUI (本地) 以及 OpenAI 的 DALL-E (外部) 等选项无缝整合图像生成功能, 用动态视觉内容丰富聊天体验。&lt;/li&gt;
&lt;li&gt;⚙️ &lt;strong&gt;多模型对话&lt;/strong&gt;：轻松同时与多个模型互动, 利用它们独特的优势获得最佳响应。通过并行利用多样化的模型集提升体验。&lt;/li&gt;
&lt;li&gt;🔐 &lt;strong&gt;基于角色的访问控制 (RBAC)&lt;/strong&gt;：通过受限权限确保安全访问; 只有授权人员可以访问您的 Ollama, 管理员独享模型创建 / 拉取权限。&lt;/li&gt;
&lt;li&gt;🌐🌍 &lt;strong&gt;多语言支持&lt;/strong&gt;：通过国际化 (i 18 n) 支持使用您偏好的语言体验 Open WebUI。加入我们扩展支持语言的行列! 我们正在积极寻找贡献者!&lt;/li&gt;
&lt;li&gt;🧩 &lt;strong&gt;管道、Open WebUI 插件支持&lt;/strong&gt;：使用 &lt;a class=&#34;link&#34; href=&#34;https://frytea.com/go/aHR0cHM6Ly9naXRodWIuY29tL29wZW4td2VidWkvcGlwZWxpbmVz&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Pipelines Plugin Framework&lt;/a&gt; 将自定义逻辑和 Python 库无缝集成到 Open WebUI。启动 Pipelines 实例, 将 OpenAI URL 设置为 Pipelines URL, 探索无限可能。&lt;a class=&#34;link&#34; href=&#34;https://frytea.com/go/aHR0cHM6Ly9naXRodWIuY29tL29wZW4td2VidWkvcGlwZWxpbmVzL3RyZWUvbWFpbi9leGFtcGxlcw&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;示例&lt;/a&gt;包括&lt;strong&gt;函数调用&lt;/strong&gt;、控制访问的用户&lt;strong&gt;速率限制&lt;/strong&gt;、使用 Langfuse 等工具进行&lt;strong&gt;使用监控&lt;/strong&gt;、通过 LibreTranslate 实现多语言支持的&lt;strong&gt;实时翻译&lt;/strong&gt;、&lt;strong&gt;有害信息过滤&lt;/strong&gt;等。&lt;/li&gt;
&lt;li&gt;🌟 &lt;strong&gt;持续更新&lt;/strong&gt;：我们致力于通过定期更新、修复和新功能改进 Open WebUI。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本文出自：&lt;a class=&#34;link&#34; href=&#34;https://frytea.com/archives/1405/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;自托管 AIGC UI APP 汇总 - Oskyla 烹茶室&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>在OpenWebUI中配置使用免费FLUX绘画（硅基流动）</title>
        <link>https://blog.ccino.org/p/configuring-the-use-of-free-flux-painting-silicon-flow-in-openwebui/</link>
        <pubDate>Thu, 05 Dec 2024 18:41:43 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/configuring-the-use-of-free-flux-painting-silicon-flow-in-openwebui/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/configuring-the-use-of-free-flux-painting-silicon-flow-in-openwebui/Configuring%20the%20use%20of%20free%20FLUX%20painting%20Silicon%20Flow%20in%20OpenWebUI.png" alt="Featured image of post 在OpenWebUI中配置使用免费FLUX绘画（硅基流动）" /&gt;&lt;p&gt;这篇文章介绍了在 OpenWebUI 中如何使用 FLUX 绘画，包括硅基流动（含 AFF）。用户需要注册并获取秘钥，然后使用函数和自定义提示词来实现绘画效果。&lt;/p&gt;
&lt;h2 id=&#34;一注册并获取秘钥&#34;&gt;一、注册并获取秘钥
&lt;/h2&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://cloud.siliconflow.cn/i/RukAXIj5&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;硅基流动 (含 AFF)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/12/202412051834700.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image.png&#34;
	
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;二openwebui-中使用&#34;&gt;二、OpenWebUI 中使用
&lt;/h2&gt;&lt;p&gt;在 OpenWebUI 中需要使用函数和自定义提示词&lt;/p&gt;
&lt;h3 id=&#34;函数&#34;&gt;函数
&lt;/h3&gt;&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/12/202412051835522.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image.png&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/12/202412051835206.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image.png&#34;
	
	
&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;  1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 60
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 61
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 62
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 63
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 64
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 65
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 66
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 67
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 68
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 69
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 70
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 71
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 72
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 73
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 74
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 75
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 76
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 77
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 78
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 79
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 80
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 81
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 82
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 83
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 84
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 85
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 86
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 87
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 88
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 89
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 90
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 91
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 92
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 93
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 94
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 95
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 96
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 97
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 98
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 99
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;100
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;101
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;102
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;103
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;104
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;105
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;106
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;107
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;108
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;109
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;110
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;111
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;112
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;113
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;114
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;115
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;116
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;117
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;118
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;119
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;120
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;121
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;122
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;123
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;124
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;125
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;126
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;127
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;128
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;129
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;130
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;131
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;132
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;133
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;134
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;135
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;136
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;137
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;138
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;139
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;140
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;141
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;142
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;143
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;144
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;145
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;146
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;147
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;148
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;149
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;150
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;151
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;152
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;153
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;154
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;155
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;156
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;157
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;158
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;159
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;160
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;161
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;162
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;163
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;164
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;165
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;166
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;167
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;168
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;169
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;170
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;171
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;172
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;173
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;174
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;175
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;176
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;177
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;178
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;179
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;180
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;181
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;182
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;183
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;184
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;185
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;186
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;187
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;188
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;189
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;asyncio&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;random&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;re&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;typing&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Callable&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Awaitable&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Any&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Optional&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;aiohttp&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pydantic&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;BaseModel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Field&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;class&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AIOutput&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;BaseModel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;success&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;bool&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;prompt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;int&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;height&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;int&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;reason&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Optional&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;seed&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Field&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;default&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;class&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Filter&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# 使用您提供的正则表达式，转换为 Python 格式&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;JSON_REGEX&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;re&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;compile&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sa&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;\{(?:&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;.|[^&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;}])*}&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;class&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Valves&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;BaseModel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;priority&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Field&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;default&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;用于过滤操作的优先级别。&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;Siliconflow_Base_URL&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Field&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;default&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;https://api.siliconflow.cn&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Siliconflow API的基础URL。（例如：https://api.siliconflow.cn）&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;Siliconflow_API_KEY&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Field&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;default&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Siliconflow API的API密钥。&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;max_retries&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Field&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;default&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;HTTP请求的最大重试次数。&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;num_inference_steps&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Field&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;default&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;20&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;执行的推理步骤数。（1-100）&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;model_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Field&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;default&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;black-forest-labs/FLUX.1-schnell&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;用于生成图像的模型名称。&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;__init__&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;valves&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Valves&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;err&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;staticmethod&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;remove_markdown_images&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;# 根据需要调整，确保保留JSON格式&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;re&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sub&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sa&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;!\[.*?\]\([^)]*\)&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;async&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;inlet&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;__event_emitter__&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Callable&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Any&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Awaitable&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;__user__&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Optional&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;__model__&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Optional&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;__event_emitter__&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;s2&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;status&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;s2&#34;&gt;&amp;#34;data&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;s2&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;✨正在飞速生成提示词中，请耐心等待...&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;s2&#34;&gt;&amp;#34;done&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;False&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;msg&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;enumerate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;messages&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;messages&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;content&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;remove_markdown_images&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;msg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;content&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;body&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;async&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;text_to_image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;prompt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;image_size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;seed&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;__user__&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Optional&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;url&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;{self.valves.Siliconflow_Base_URL}/v1/images/generations&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;payload&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;s2&#34;&gt;&amp;#34;model&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;valves&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;model_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# 使用配置中的模型名称&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;s2&#34;&gt;&amp;#34;prompt&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;prompt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;s2&#34;&gt;&amp;#34;image_size&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;image_size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;s2&#34;&gt;&amp;#34;seed&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;seed&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;s2&#34;&gt;&amp;#34;num_inference_steps&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;valves&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;num_inference_steps&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# 保持推理步数&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;headers&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;s2&#34;&gt;&amp;#34;authorization&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Bearer {random.choice([key for key in self.valves.Siliconflow_API_KEY.split(&amp;#39;,&amp;#39;) if key])}&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;s2&#34;&gt;&amp;#34;accept&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;application/json&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;s2&#34;&gt;&amp;#34;content-type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;application/json&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;async&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;aiohttp&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ClientSession&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;session&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;attempt&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;range&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;valves&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;max_retries&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;try&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;n&#34;&gt;async&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;session&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;post&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &lt;span class=&#34;n&#34;&gt;url&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;json&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;payload&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;headers&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;headers&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;raise_for_status&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &lt;span class=&#34;n&#34;&gt;response_data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;json&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;response_data&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;except&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Exception&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;e&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Attempt {attempt + 1} failed: {e}&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;attempt&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;valves&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;max_retries&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;error&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;e&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;async&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;generate_single_image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ai_output&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AIOutput&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;__user__&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Optional&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;image_size&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;{ai_output.width}x{ai_output.height}&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ai_output&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;seed&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;ai_output&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;seed&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;random&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;randint&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;9999999999&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;seed&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ai_output&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;seed&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;result&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;text_to_image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ai_output&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;prompt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;image_size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;seed&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;__user__&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;isinstance&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;result&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;error&amp;#34;&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;result&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;error_message&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;result&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;error&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;raise&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Exception&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Siliconflow API Error: {error_message}&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;result&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;async&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;outlet&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;__event_emitter__&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Callable&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Any&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Awaitable&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;__user__&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Optional&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;__model__&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Optional&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;messages&amp;#34;&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;body&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;messages&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;__user__&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;id&amp;#34;&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;__user__&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;__event_emitter__&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;s2&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;status&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;s2&#34;&gt;&amp;#34;data&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &lt;span class=&#34;s2&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;🚀正在火速生成图片中，请耐心等待...&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &lt;span class=&#34;s2&#34;&gt;&amp;#34;done&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;False&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;messages&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;messages&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;messages&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;ai_output_content&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;messages&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;content&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;match&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;JSON_REGEX&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;search&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ai_output_content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;match&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;n&#34;&gt;raise&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ValueError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;未在消息内容中找到有效的AI输出JSON。&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;ai_output_json_str&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;match&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;group&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;try&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;n&#34;&gt;ai_output&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AIOutput&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parse_raw&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ai_output_json_str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;except&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Exception&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;e&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;n&#34;&gt;raise&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ValueError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;解析AI输出JSON时出错: {e}&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ai_output&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;success&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;n&#34;&gt;response_data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;generate_single_image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &lt;span class=&#34;n&#34;&gt;ai_output&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;__user__&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;response_data&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;images&amp;#34;&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;response_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &lt;span class=&#34;n&#34;&gt;images&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;response_data&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;images&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;images&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                            &lt;span class=&#34;n&#34;&gt;image_url&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;images&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;url&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                            &lt;span class=&#34;c1&#34;&gt;# 更新content_lines并重新写入&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                            &lt;span class=&#34;n&#34;&gt;content_lines&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                &lt;span class=&#34;n&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;### 生成信息&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                &lt;span class=&#34;n&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;**提示词 (Prompt):** {ai_output.prompt}&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                &lt;span class=&#34;n&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;**尺寸 (Size):** {ai_output.width}x{ai_output.height}&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                &lt;span class=&#34;n&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;**种子 (Seed):** {ai_output.seed}&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                &lt;span class=&#34;n&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;**模型名称 (Model):** {self.valves.model_name}&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\n&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;### 生成的图片&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                &lt;span class=&#34;n&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;![预览图]({image_url})&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                &lt;span class=&#34;n&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;[🖼️图片下载链接]({image_url})&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                            &lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                            &lt;span class=&#34;n&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;messages&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;content&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\n\n&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;join&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;content_lines&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                            &lt;span class=&#34;n&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;__event_emitter__&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                    &lt;span class=&#34;s2&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;status&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                    &lt;span class=&#34;s2&#34;&gt;&amp;#34;data&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                        &lt;span class=&#34;s2&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;🎉图片生成成功！&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                        &lt;span class=&#34;s2&#34;&gt;&amp;#34;done&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                    &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                            &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                            &lt;span class=&#34;n&#34;&gt;raise&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Exception&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                &lt;span class=&#34;s2&#34;&gt;&amp;#34;Siliconflow API Error: No images found in response.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                            &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;n&#34;&gt;raise&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Exception&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;AI Output Error: {ai_output.reason}&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;body&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;提示词&#34;&gt;提示词
&lt;/h3&gt;&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/12/202412051836764.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image.png&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/12/202412051836134.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image.png&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/12/202412051836849.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image.png&#34;
	
	
&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;60
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;61
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;62
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;63
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;64
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;65
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;66
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;67
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;68
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;69
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;70
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;71
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;72
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;73
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;74
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;75
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;76
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;77
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;78
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;79
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;80
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;81
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;82
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;83
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;84
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;85
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;86
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;87
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;88
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;你是一个基于Flux.1模型的提示词生成机器人。根据用户的需求，自动生成符合Flux.1格式的绘画提示词。虽然你可以参考提供的模板来学习提示词结构和规律，但你必须具备灵活性来应对各种不同需求。最终输出应仅为json格式，无需任何其他解释或信息。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;### **提示词生成逻辑**：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 1. **需求解析**：从用户的描述中提取关键信息，包括：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; - 角色：外貌、动作、表情等。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; - 场景：环境、光线、天气等。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; - 风格：艺术风格、情感氛围、配色等。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; - 其他元素：特定物品、背景或特效。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 2. **提示词结构规律**：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; - **简洁、精确且具象**：提示词需要简单、清晰地描述核心对象，并包含足够细节以引导生成出符合需求的图像。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; - **灵活多样**：参考下列模板和已有示例，但需根据具体需求生成多样化的提示词，避免固定化或过于依赖模板。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; - **符合Flux.1风格的描述**：提示词必须遵循Flux.1的要求，尽量包含艺术风格、视觉效果、情感氛围的描述，使用与Flux.1模型生成相符的关键词和描述模式。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 3. **仅供你参考和学习的几种场景提示词**（你需要学习并灵活调整,&amp;#34;[ ]&amp;#34;中内容视用户问题而定）：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; - **角色表情集**：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;场景说明：适合动画或漫画创作者为角色设计多样的表情。这些提示词可以生成展示同一角色在不同情绪下的表情集，涵盖快乐、悲伤、愤怒等多种情感。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;提示词：An anime [SUBJECT], animated expression reference sheet, character design, reference sheet, turnaround, lofi style, soft colors, gentle natural linework, key art, range of emotions, happy sad mad scared nervous embarrassed confused neutral, hand drawn, award winning anime, fully clothed
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[SUBJECT] character, animation expression reference sheet with several good animation expressions featuring the same character in each one, showing different faces from the same person in a grid pattern: happy sad mad scared nervous embarrassed confused neutral, super minimalist cartoon style flat muted kawaii pastel color palette, soft dreamy backgrounds, cute round character designs, minimalist facial features, retro-futuristic elements, kawaii style, space themes, gentle line work, slightly muted tones, simple geometric shapes, subtle gradients, oversized clothing on characters, whimsical, soft puffy art, pastels, watercolor
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; - **全角度角色视图**：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;场景说明：当需要从现有角色设计中生成不同角度的全身图时，如正面、侧面和背面，适用于角色设计细化或动画建模。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;提示词：A character sheet of [SUBJECT] in different poses and angles, including front view, side view, and back view
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; - **80 年代复古风格**：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;场景说明：适合希望创造 80 年代复古风格照片效果的艺术家或设计师。这些提示词可以生成带有怀旧感的模糊宝丽来风格照片。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;提示词：blurry polaroid of [a simple description of the scene], 1980s.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; - **智能手机内部展示**：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;场景说明：适合需要展示智能手机等产品设计的科技博客作者或产品设计师。这些提示词帮助生成展示手机外观和屏幕内容的图像。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;提示词：a iphone product image showing the iphone standing and inside the screen the image is shown
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; - **双重曝光效果**：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;场景说明：适合摄影师或视觉艺术家通过双重曝光技术创造深度和情感表达的艺术作品。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;提示词：[Abstract style waterfalls, wildlife] inside the silhouette of a [man]’s head that is a double exposure photograph . Non-representational, colors and shapes, expression of feelings, imaginative, highly detailed
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; - **高质感电影海报**：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;场景说明：适合需要为电影创建引人注目海报的电影宣传或平面设计师。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;提示词：A digital illustration of a movie poster titled [‘Sad Sax: Fury Toad’], [Mad Max] parody poster, featuring [a saxophone-playing toad in a post-apocalyptic desert, with a customized car made of musical instruments], in the background, [a wasteland with other musical vehicle chases], movie title in [a gritty, bold font, dusty and intense color palette].
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; - **镜面自拍效果**：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;场景说明：适合想要捕捉日常生活瞬间的摄影师或社交媒体用户。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;提示词：Phone photo: A woman stands in front of a mirror, capturing a selfie. The image quality is grainy, with a slight blur softening the details. The lighting is dim, casting shadows that obscure her features. [The room is cluttered, with clothes strewn across the bed and an unmade blanket. Her expression is casual, full of concentration], while the old iPhone struggles to focus, giving the photo an authentic, unpolished feel. The mirror shows smudges and fingerprints, adding to the raw, everyday atmosphere of the scene.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; - **像素艺术创作**：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;场景说明：适合像素艺术爱好者或复古游戏开发者创造或复刻经典像素风格图像。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;提示词：[Anything you want] pixel art style, pixels, pixel art
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; - **以上部分场景仅供你学习，一定要学会灵活变通，以适应任何绘画需求**：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 4. **Flux.1提示词要点总结**：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; - **简洁精准的主体描述**：明确图像中核心对象的身份或场景。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; - **风格和情感氛围的具体描述**：确保提示词包含艺术风格、光线、配色、以及图像的氛围等信息。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; - **动态与细节的补充**：提示词可包括场景中的动作、情绪、或光影效果等重要细节。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; - **其他更多规律请自己寻找**
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;**问答案例1**：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;**用户输入**：一个80年代复古风格的照片。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;**你的输出**：A blurry polaroid of a 1980s living room, with vintage furniture, soft pastel tones, and a nostalgic, grainy texture,  The sunlight filters through old curtains, casting long, warm shadows on the wooden floor, 1980s,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;**问答案例2**：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;**用户输入**：一个赛博朋克风格的夜晚城市背景
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;**你的输出**：A futuristic cityscape at night, in a cyberpunk style, with neon lights reflecting off wet streets, towering skyscrapers, and a glowing, high-tech atmosphere. Dark shadows contrast with vibrant neon signs, creating a dramatic, dystopian mood`
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;### 限制：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; - tag内容用英语单词或短语来描述，并不局限于我给你的单词。注意只能包含关键词或词组。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 注意不要输出句子，不要有任何解释。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- tag数量限制在40个以内，单词数量限制在60个以内。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- tag不要带引号(&amp;#34;&amp;#34;)。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 使用英文半角&amp;#34;,&amp;#34;做分隔符。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- tag按重要性从高到低的顺序排列。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 我给你的主题可能是用中文描述，你给出的提示词只用英文。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;### 图片尺寸
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; - 你需要为每个生成的提示词提供一个合适的图片尺寸。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 图片尺寸的宽度和高度都不能超过1024像素。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 根据主题内容，选择一个合适的宽高比，如风景画可以选择较宽的比例，人像可以选择较高的比例。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 请确保所有的返回结果都使用以下JSON格式，如果你无法理解主题，则将success设为false，并在reason中输出原因：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{&amp;#34;success&amp;#34;:true,&amp;#34;prompt&amp;#34;:&amp;#34;content&amp;#34;,&amp;#34;width&amp;#34;:1024,&amp;#34;height&amp;#34;:768,&amp;#34;reason&amp;#34;:&amp;#34;&amp;#34;,&amp;#34;seed&amp;#34;:-1}
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;注意：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 1. 不允许使用Markdown代码块格式，不要有额外的说明或解释。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2. 所有返回内容必须直接符合上述JSON格式。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3. width和height表示建议的图片宽度和高度，需要根据主题选择合适的尺寸，但不超过1024*1024。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4.不允许生成任何与18+内容相关的提示词。包括但不限于色情、极度暴力、或其他不适合未成年人的内容。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;5.seed为图片生成的种子值，是用来控制生成图像时的随机性和可重复性，如果用户需要在原先的图片上进行修改，须保证seed值不变，如果无需在原先图片上修改，需将seed设置为-1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;6.必须保证输出的json为标准json格式，可直接被Json解析器解释
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;三效果&#34;&gt;三、效果
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/12/202412051837856.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image.png&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;本文出自：&lt;a class=&#34;link&#34; href=&#34;https://blog.ccrui.cn/archives/zai-openwebuizhong-shi-yong-fluxhui-hua-huo-ji-liu-dong.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;在OpenWebUI中使用FLUX绘画（硅基流动） - ccruiの博客&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Obsidian 多设备同步方案整理</title>
        <link>https://blog.ccino.org/p/obsidian-multi-device-synchronization-solution-summary/</link>
        <pubDate>Thu, 05 Dec 2024 12:34:01 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/obsidian-multi-device-synchronization-solution-summary/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/obsidian-multi-device-synchronization-solution-summary/Obsidian%20multi%20device%20synchronization%20solution%20summary.png" alt="Featured image of post Obsidian 多设备同步方案整理" /&gt;&lt;p&gt;同步方案大致有下面这几种：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frytea.com/go/aHR0cHM6Ly9naXRodWIuY29tL3ZydG1yei9vYnNpZGlhbi1saXZlc3luYw&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;obsidian-livesync&lt;/code&gt;(插件)&lt;/a&gt;：自托管在线同步，支持实时同步，社区活跃，使用自建 &lt;code&gt;CouchDB&lt;/code&gt; 数据库存放数据；&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frytea.com/go/aHR0cHM6Ly9naXRodWIuY29tL3JlbW90ZWx5LXNhdmUvcmVtb3RlbHktc2F2ZQ&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;remotely-save&lt;/code&gt;(插件)&lt;/a&gt;：支持 S 3 (Amazon S 3/Cloudflare R 2/Backblaze B 2/&amp;hellip;)、Dropbox、webdav (NextCloud/InfiniCLOUD/Synology/&amp;hellip;)、OneDrive 等数据源。&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frytea.com/go/aHR0cHM6Ly9naXRodWIuY29tL1ZpbnplbnQwMy9vYnNpZGlhbi1naXQ&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;obsidian git&lt;/code&gt;(插件)&lt;/a&gt;：集成 git，主要是 git 做版本管理的，用起来不是很方便。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;obsidian-sync&lt;/code&gt; (官方同步)：官方方案，无需多言，每月 4$。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;对比表格&#34;&gt;对比表格
&lt;/h2&gt;&lt;p&gt;Claude 对以上方案的对比如下表：&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;特性&lt;/th&gt;&lt;th&gt;官方同步&lt;/th&gt;&lt;th&gt;LiveSync&lt;/th&gt;&lt;th&gt;Remotely Save&lt;/th&gt;&lt;th&gt;Git&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;价格&lt;/td&gt;&lt;td&gt;$4 / 月&lt;/td&gt;&lt;td&gt;免费&lt;/td&gt;&lt;td&gt;免费&lt;/td&gt;&lt;td&gt;免费&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;配置难度&lt;/td&gt;&lt;td&gt;简单&lt;/td&gt;&lt;td&gt;较复杂&lt;/td&gt;&lt;td&gt;中等&lt;/td&gt;&lt;td&gt;复杂&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;实时同步&lt;/td&gt;&lt;td&gt;✓&lt;/td&gt;&lt;td&gt;✓&lt;/td&gt;&lt;td&gt;×&lt;/td&gt;&lt;td&gt;×&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;版本历史&lt;/td&gt;&lt;td&gt;✓&lt;/td&gt;&lt;td&gt;✓&lt;/td&gt;&lt;td&gt;×&lt;/td&gt;&lt;td&gt;✓&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;端到端加密&lt;/td&gt;&lt;td&gt;✓&lt;/td&gt;&lt;td&gt;✓&lt;/td&gt;&lt;td&gt;×&lt;/td&gt;&lt;td&gt;×&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;选择性同步&lt;/td&gt;&lt;td&gt;×&lt;/td&gt;&lt;td&gt;✓&lt;/td&gt;&lt;td&gt;✓&lt;/td&gt;&lt;td&gt;✓&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;移动端支持&lt;/td&gt;&lt;td&gt;完善&lt;/td&gt;&lt;td&gt;一般&lt;/td&gt;&lt;td&gt;一般&lt;/td&gt;&lt;td&gt;较差&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;稳定性&lt;/td&gt;&lt;td&gt;高&lt;/td&gt;&lt;td&gt;中&lt;/td&gt;&lt;td&gt;中&lt;/td&gt;&lt;td&gt;高&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;技术要求&lt;/td&gt;&lt;td&gt;低&lt;/td&gt;&lt;td&gt;中&lt;/td&gt;&lt;td&gt;低&lt;/td&gt;&lt;td&gt;高&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;自建服务器&lt;/td&gt;&lt;td&gt;×&lt;/td&gt;&lt;td&gt;✓&lt;/td&gt;&lt;td&gt;×&lt;/td&gt;&lt;td&gt;✓&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;冲突处理&lt;/td&gt;&lt;td&gt;自动&lt;/td&gt;&lt;td&gt;自动&lt;/td&gt;&lt;td&gt;手动&lt;/td&gt;&lt;td&gt;手动&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;注：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✓ 表示支持&lt;/li&gt;
&lt;li&gt;× 表示不支持&lt;/li&gt;
&lt;li&gt;评价标准为: 高 / 中 / 低或完善 / 一般 / 较差&lt;/li&gt;
&lt;/ul&gt;

    &lt;blockquote&gt;
        &lt;p&gt;由 &lt;code&gt;Claude 3.5 Sonnet&lt;/code&gt; 回答，大部分正确，供参考。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;h2 id=&#34;obsidian-livesync-方案&#34;&gt;&lt;code&gt;obsidian-livesync&lt;/code&gt; 方案
&lt;/h2&gt;&lt;p&gt;我目前在使用 &lt;code&gt;obsidian-livesync&lt;/code&gt; ，因为可以自托管，无需支付 S 3 的按量费用，用起来速度也很不错，约 4 k 条笔记约 1 min 上下。配置一次后生成 url，在其他设备只需安装 obsidian、安装 obsidian-livesync 插件、再填写 url 即可，很方便。&lt;/p&gt;
&lt;p&gt;实时同步体验也很好。&lt;/p&gt;
&lt;p&gt;建议按照&lt;a class=&#34;link&#34; href=&#34;https://frytea.com/go/aHR0cHM6Ly9naXRodWIuY29tL3ZydG1yei9vYnNpZGlhbi1saXZlc3luYy9ibG9iL21haW4vZG9jcy9zZXR1cF9vd25fc2VydmVyLm1kIzItcnVuLWNvdWNoZGItaW5pdHNoLWZvci1pbml0aWFsaXNl&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;官方文档&lt;/a&gt;一步一步进行即可。&lt;/p&gt;
&lt;p&gt;以下贴出我部署用到的 &lt;code&gt;compose.yaml&lt;/code&gt; 供参考，注意替换其中的&lt;strong&gt;密码&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;version: &amp;#39;3.8&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;services:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  couchdb:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    image: couchdb:3.4.2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    container_name: couchdb-for-ols
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    environment:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      - COUCHDB_USER=admin
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      - COUCHDB_PASSWORD=xxxxxxxxx
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        #- hostname=ocdb.xxxx.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    restart: unless-stopped
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    volumes:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      - ./data/couchdb-data:/opt/couchdb/data
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      - ./data/couchdb-etc:/opt/couchdb/etc/local.d
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ports:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      - &amp;#34;5984:5984&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;执行后执行以下命令初始化数据库：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;hostname&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;localhost&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5984&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;username&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;admin&lt;/span&gt;     &lt;span class=&#34;c1&#34;&gt;#Please change as you like.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;password&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;xxxxxxxxx&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;#Please change as you like&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;curl&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;s&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;https&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;raw&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;githubusercontent&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vrtmrz&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;obsidian&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;livesync&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;utils&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;couchdb&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;couchdb&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;init&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sh&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bash&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;references&#34;&gt;References
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frytea.com/go/aHR0cHM6Ly9vYnNpZGlhbi5tZC8&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Obsidian&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frytea.com/go/aHR0cHM6Ly93d3cuZXNjYXBlbGlmZS5zaXRlL3Bvc3RzLzU1Zjk1YmU5Lmh0bWw&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Obsidian 多端同步方案&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frytea.com/go/aHR0cHM6Ly9ibG9nLnRhb3NodWdlLmV1Lm9yZy9wLyVFNCVCRCVCRiVFNyU5NCVBOGdpdCVFNSVBRSU5RSVFNyU4RSVCMCVFNyVBOCVCMyVFNSVBRSU5QSVFNyU5QSU4NG9ic2lkaWFuJUU1JTkwJThDJUU2JUFEJUE1JUU2JTk2JUI5JUU2JUExJTg4Lw&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;使用 Git 实现稳定的 Obsidian 同步方案&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frytea.com/archives/1377/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Obsidian 多设备同步方案整理 - Oskyla 烹茶室&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>在 Ubuntu 24 上安装及配置`code-server` VS-Code</title>
        <link>https://blog.ccino.org/p/install-and-configure-code-server-vs-code-on-ubuntu-24/</link>
        <pubDate>Sun, 24 Nov 2024 12:34:43 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/install-and-configure-code-server-vs-code-on-ubuntu-24/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/install-and-configure-code-server-vs-code-on-ubuntu-24/Install%20and%20configure%20code-server%20VS-Code%20on%20Ubuntu%2024.webp" alt="Featured image of post 在 Ubuntu 24 上安装及配置`code-server` VS-Code" /&gt;&lt;p&gt;要在 &lt;strong&gt;Ubuntu 24&lt;/strong&gt; 上安装 &lt;code&gt;code-server&lt;/code&gt;（VS Code 的 Web 版本），你可以按照以下步骤完成安装和配置：&lt;/p&gt;
&lt;h3 id=&#34;方法-1通过官方安装脚本推荐&#34;&gt;方法 1：通过官方安装脚本（推荐）
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;更新包管理器：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt update &amp;amp;&amp;amp; sudo apt upgrade -y
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;下载并运行安装脚本：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://code-server.dev/install.sh | sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;验证安装是否成功：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;code-server --version
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;启动 &lt;code&gt;code-server&lt;/code&gt;：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;code-server
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;默认情况下，&lt;code&gt;code-server&lt;/code&gt; 会在 &lt;code&gt;127.0.0.1:8080&lt;/code&gt; 上启动。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;方法-2通过-snap-安装&#34;&gt;方法 2：通过 Snap 安装
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;确保 Snap 已安装并启动：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;sudo&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;apt&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;update&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sudo&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;apt&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;install&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;y&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;snapd&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;sudo&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;systemctl&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;enable&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;now&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;snapd&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;socket&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;sudo&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ln&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;s&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;var&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lib&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;snapd&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;snap&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;snap&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;安装 &lt;code&gt;code-server&lt;/code&gt;：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo snap install code-server --classic
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;启动 &lt;code&gt;code-server&lt;/code&gt;：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;code-server
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;配置-code-server&#34;&gt;配置 code-server
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;生成配置文件：&lt;/strong&gt;&lt;br&gt;
第一次启动后，&lt;code&gt;code-server&lt;/code&gt; 会生成配置文件，路径通常是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;~/.config/code-server/config.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;修改监听地址和密码（可选）：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;编辑配置文件：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nano ~/.config/code-server/config.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;添加或修改以下内容：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bind-addr: 0.0.0.0:8080  # 允许所有网络访问
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;auth: password            # 使用密码验证
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;password: &amp;#34;your-secure-password&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;重启 &lt;code&gt;code-server&lt;/code&gt;：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;code-server
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;方法-3使用-docker-部署-code-server&#34;&gt;方法 3：使用 Docker 部署 &lt;code&gt;code-server&lt;/code&gt;
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;拉取 Docker 镜像：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker pull codercom/code-server:latest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;运行容器：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -it -p 8080:8080 \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -v &amp;#34;$HOME:/home/coder/project&amp;#34; \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  codercom/code-server:latest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这会将主机的 &lt;code&gt;$HOME&lt;/code&gt; 挂载到容器中作为项目目录，并开放端口 &lt;code&gt;8080&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;方式-4docker-compse-方式部署-code-server&#34;&gt;方式 4：Docker-compse 方式部署 &lt;code&gt;code-server&lt;/code&gt;
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Mkdir -p ~/. Config
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -it --name code-server -p 127.0.0.1:8080:8080 \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -v &amp;#34;$HOME/. Config:/home/coder/. Config&amp;#34; \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -v &amp;#34;$PWD:/home/coder/project&amp;#34; \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -u &amp;#34;$(id -u):$ (id -g)&amp;#34; \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -e &amp;#34;DOCKER_USER=$USER&amp;#34; \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Codercom/code-server:latest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;访问-code-server&#34;&gt;访问 code-server
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;访问 Web 界面：&lt;/strong&gt;&lt;br&gt;
打开浏览器并访问：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://&amp;lt;your-server-ip&amp;gt;:8080
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;输入密码：&lt;/strong&gt;&lt;br&gt;
如果你设置了密码，在首次访问时需要输入该密码。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/11/202411241231116.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image.png&#34;
	
	
&gt;&lt;/p&gt;
&lt;h4 id=&#34;常见问题及解决方法&#34;&gt;常见问题及解决方法
&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;权限问题：&lt;/strong&gt;&lt;br&gt;
如果启动时提示权限错误，可以尝试使用 &lt;code&gt;sudo&lt;/code&gt; 启动：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo code-server
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;防火墙限制：&lt;/strong&gt;&lt;br&gt;
如果你在云服务器上运行，请确保开放端口 &lt;code&gt;8080&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo ufw allow 8080
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;反向代理支持：&lt;/strong&gt;&lt;br&gt;
如果需要 HTTPS 支持，可以使用 Nginx 或 Caddy 作为反向代理。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&#34;总结&#34;&gt;总结
&lt;/h4&gt;&lt;p&gt;推荐使用 &lt;strong&gt;官方安装脚本&lt;/strong&gt; 或 &lt;strong&gt;Docker&lt;/strong&gt; 部署 &lt;code&gt;code-server&lt;/code&gt;。对于长期使用，可以将其作为服务运行并配置反向代理来增强安全性。配置教程可参考：&lt;a class=&#34;link&#34; href=&#34;https://blog.csdn.net/qq_58096041/article/details/141640890&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;VS Code 安装、配置教程及插件推荐_vscode-CSDN博客&lt;/a&gt; 或 &lt;a class=&#34;link&#34; href=&#34;https://blog.csdn.net/qq_51173321/article/details/126287293&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;vscode优化使用体验篇（设置 | 插件）_vscode如何开启高帧率-CSDN博客&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>10分钟搭建一个自己的网文阅读器 安卓的“阅读”APP网页版 附带书源！</title>
        <link>https://blog.ccino.org/p/build-your-own-online-literature-reader-in-10-minutes-androids-reading-app-web-version-comes-with-book-sources/</link>
        <pubDate>Wed, 30 Oct 2024 09:12:37 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/build-your-own-online-literature-reader-in-10-minutes-androids-reading-app-web-version-comes-with-book-sources/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/build-your-own-online-literature-reader-in-10-minutes-androids-reading-app-web-version-comes-with-book-sources/Build%20your%20own%20online%20literature%20reader%20in%2010%20minutes%20Androids%20Reading%20APP%20web%20version%20comes%20with%20book%20sources.webp" alt="Featured image of post 10分钟搭建一个自己的网文阅读器 安卓的“阅读”APP网页版 附带书源！" /&gt;&lt;h2 id=&#34;1-介绍&#34;&gt;1. 介绍
&lt;/h2&gt;&lt;p&gt;安卓手机 APP &lt;code&gt;阅读3&lt;/code&gt; 服务器版，桌面端。&lt;br&gt;
后端 &lt;code&gt;Kotlin&lt;/code&gt; + &lt;code&gt;Spring Boot&lt;/code&gt; + &lt;code&gt;Vert.x&lt;/code&gt; + &lt;code&gt;Coroutine&lt;/code&gt; ；&lt;br&gt;
前端 &lt;code&gt;Vue.js&lt;/code&gt; + &lt;code&gt;Element&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;GitHub 开源项目，支持 Docker 搭建。&lt;/p&gt;
&lt;h3 id=&#34;11-特点&#34;&gt;1.1 特点
&lt;/h3&gt;&lt;p&gt;咕咕这边简单在网上也&lt;del&gt;抄~~~~ 搜集&lt;/del&gt;了一些特点，供大家参考（翻译自 &lt;a class=&#34;link&#34; href=&#34;https://github.com/hectorqin/reader&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub&lt;/a&gt; 的 &lt;code&gt;README&lt;/code&gt;）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;GitHub 完全开源，可以免费使用&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Docker 搭建，10 分钟搞定&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;书架管理&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;搜索&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;书海&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;看书&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;移动端适配&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;换源&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;翻页方式&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;手势支持&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;自定义主题&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;自定义样式&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;WebDAV 同步&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;文字替换过滤&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;听书 &amp;lt;仅部分浏览器支持，手机端会因为锁屏而失效&amp;gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;用户配置备份恢复&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;支持漫画&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;支持音频&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;书源失效检测&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;导入本地 TXT、EPUB、UMD 格式的书籍&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;书籍分组&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;RSS 订阅&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;定时更新书架&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;并发搜书&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;本地书仓&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;12-问题&#34;&gt;1.2 问题
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;部分使用了 &lt;code&gt;Javascript&lt;/code&gt; 的书源可能会报错，不支持 &lt;code&gt;cookie&lt;/code&gt; 和 &lt;code&gt;cache&lt;/code&gt; 功能&lt;/li&gt;
&lt;li&gt;不支持使用了 &lt;code&gt;webview&lt;/code&gt; 的书源&lt;/li&gt;
&lt;li&gt;不支持书源登录功能&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;13-技术栈&#34;&gt;1.3 技术栈
&lt;/h3&gt;&lt;p&gt;后端 &lt;code&gt;Kotlin&lt;/code&gt; + &lt;code&gt;Spring Boot&lt;/code&gt; + &lt;code&gt;Vert.x&lt;/code&gt; + &lt;code&gt;Coroutine&lt;/code&gt; ；&lt;/p&gt;
&lt;p&gt;前端 &lt;code&gt;Vue.js&lt;/code&gt; + &lt;code&gt;Element&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&#34;14-免责声明disclaimer&#34;&gt;1.4 免责声明（Disclaimer）
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;阅读&lt;/code&gt; 是一款提供网络文学搜索的工具，为广大网络文学爱好者提供一种方便、快捷舒适的试读体验。&lt;/p&gt;
&lt;p&gt;当您搜索一本书的时，阅读会将该书的书名以关键词的形式提交到各个第三方网络文学网站。各第三方网站返回的内容与阅读无关，阅读对其概不负责，亦不承担任何法律责任。任何通过使用阅读而链接到的第三方网页均系他人制作或提供，您可能从第三方网页上获得其他服务，阅读对其合法性概不负责，亦不承担任何法律责任。第三方搜索引擎结果根据您提交的书名自动搜索获得并提供试读，不代表阅读赞成或被搜索链接到的第三方网页上的内容或立场。您应该对使用搜索引擎的结果自行承担风险。&lt;/p&gt;
&lt;p&gt;阅读不做任何形式的保证：不保证第三方搜索引擎的搜索结果满足您的要求，不保证搜索服务不中断，不保证搜索结果的安全性、正确性、及时性、合法性。因网络状况、通讯线路、第三方网站等任何原因而导致您不能正常使用阅读，阅读不承担任何法律责任。阅读尊重并保护所有使用阅读用户的个人隐私权，您注册的用户名、电子邮件地址等个人资料，非经您亲自许可或根据相关法律、法规的强制性规定，阅读不会主动地泄露给第三方。&lt;/p&gt;
&lt;p&gt;阅读致力于最大程度地减少网络文学阅读者在自行搜寻过程中的无意义的时间浪费，通过专业搜索展示不同网站中网络文学的最新章节。阅读在为广大小说爱好者提供方便、快捷舒适的试读体验的同时，也使优秀网络文学得以迅速、更广泛的传播，从而达到了在一定程度促进网络文学充分繁荣发展之目的。阅读鼓励广大小说爱好者通过阅读发现优秀网络小说及其提供商，并建议阅读正版图书。任何单位或个人认为通过阅读搜索链接到的第三方网页内容可能涉嫌侵犯其信息网络传播权，应该及时向阅读提出书面权力通知，并提供身份证明、权属证明及详细侵权情况证明。阅读在收到上述法律文件后，将会依法尽快断开相关链接内容。&lt;/p&gt;
&lt;h2 id=&#34;2-项目展示&#34;&gt;2. 项目展示
&lt;/h2&gt;&lt;p&gt;GitHub 原项目地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/hectorqin/reader&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/hectorqin/reader&lt;/a&gt;（&lt;del&gt;617&lt;/del&gt; 1.9 k star）&lt;/p&gt;
&lt;p&gt;&lt;del&gt;Demo 地址 (服务器位于日本) : [https://reader.nxnow.online(此域名 7 月过期) 更换为](&lt;a class=&#34;link&#34; href=&#34;https://reader.nxnow.online&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://reader.nxnow.online&lt;/a&gt;(%E 6%AD%A 4%E 5%9 F%9 F%E 5%90%8 D 7%E 6%9 C%88%E 8%BF%87%E 6%9 C%9 F)%E 6%9 B%B 4%E 6%8 D%A 2%E 4%B 8%BA) &lt;a class=&#34;link&#34; href=&#34;https://read.nxnow.top&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://read.nxnow.top&lt;/a&gt;&lt;/del&gt;&lt;/p&gt;
&lt;p&gt;&lt;del&gt;Demo 测试账号 / 密码分别为 &lt;code&gt;guest&lt;/code&gt; / &lt;code&gt;guest123&lt;/code&gt;, 也可自行创建账号添加书源&lt;/del&gt;&lt;/p&gt;
&lt;p&gt;直接丢几个图片：
&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1730251620202410300926460.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image.png&#34;
	
	
&gt;
&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1730251615202410300926493.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1730251641202410300927188.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image.png&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1730251654202410300927728.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1730251670202410300927227.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;3-搭建环境&#34;&gt;3. 搭建环境
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;服务器：&lt;del&gt;腾讯香港轻量应用服务器 24 元 / 月 VPS 一台&lt;/del&gt;展示用的服务器是 &lt;a class=&#34;link&#34; href=&#34;https://netcup-sonderangebote.de/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Netcup&lt;/a&gt; 特价款，本期搭建用的是 &lt;a class=&#34;link&#34; href=&#34;https://loll.cc/vultr&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Vultr&lt;/a&gt; 的服务器，按小时计费，可随时销毁（最好是选&lt;strong&gt;非大陆的服务器&lt;/strong&gt;）（&lt;a class=&#34;link&#34; href=&#34;https://loll.cc/tx&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;腾讯轻量购买链接&lt;/a&gt;）&lt;a class=&#34;link&#34; href=&#34;https://loll.cc/hz&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hetzner 注册免费得 25 欧试用金有效期一个月&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;系统：Debian 10（&lt;a class=&#34;link&#34; href=&#34;https://blog.laoda.de/archives/useful-script#dd%E7%9B%B8%E5%85%B3&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DD 脚本&lt;/a&gt; 非必需 DD 用原来的系统也 OK）&lt;/li&gt;
&lt;li&gt;域名一枚，并做好解析到服务器上（&lt;a class=&#34;link&#34; href=&#34;https://blog.laoda.de/archives/namesilo&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;域名购买、域名解析&lt;/a&gt; &lt;a class=&#34;link&#34; href=&#34;https://www.bilibili.com/video/BV1Sy4y1k7kZ/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;视频教程&lt;/a&gt;）&lt;/li&gt;
&lt;li&gt;安装好 Docker、Docker-compose（&lt;a class=&#34;link&#34; href=&#34;https://blog.laoda.de/archives/hello-docker#5%E5%AE%89%E8%A3%85dockerdocker-compose&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;相关脚本&lt;/a&gt;）&lt;/li&gt;
&lt;li&gt;【非必需】提前安装好宝塔面板海外版本 aapanel，并安装好 Nginx（&lt;a class=&#34;link&#34; href=&#34;https://forum.aapanel.com/d/9-aapanel-linux-panel-6812-installation-tutorial&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;安装地址&lt;/a&gt;）&lt;/li&gt;
&lt;li&gt;【非必需本教程采用】安装好 Nginx Proxy Manager（&lt;a class=&#34;link&#34; href=&#34;https://blog.laoda.de/archives/nginxproxymanager&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;相关教程&lt;/a&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;4-搭建视频&#34;&gt;4. 搭建视频
&lt;/h2&gt;&lt;p&gt;YouTube：&lt;a class=&#34;link&#34; href=&#34;https://youtu.be/Yjtrl4zii5g&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://youtu.be/Yjtrl4zii5g&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;哔哩哔哩：&lt;a class=&#34;link&#34; href=&#34;https://www.bilibili.com/BV16F411G757&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.bilibili.com/BV16F411G757&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;5-搭建方式&#34;&gt;5. 搭建方式
&lt;/h2&gt;&lt;h3 id=&#34;51-搭建&#34;&gt;5.1 搭建
&lt;/h3&gt;&lt;p&gt;服务器初始设置，参考&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.laoda.de/archives/vps-script&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;新买了一台服务器 “必须” 要做的 6 件小事&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.laoda.de/archives/hello-docker&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Docker 系列】不用宝塔面板，小白一样可以玩转 VPS 服务器！&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo -i # 切换到root用户
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apt update -y  # 升级packages
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apt install wget curl sudo vim git  # Debian系统比较干净，安装常用的软件
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;创建一下安装的目录：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir -p /root/data/docker_data/reader
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cd /root/data/docker_data/reader
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nano docker-compose.yml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;docker-compose.yml&lt;/code&gt; 来源&lt;a class=&#34;link&#34; href=&#34;https://github.com/hectorqin/reader/blob/master/docker-compose.yaml&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;官方仓库&lt;/a&gt;，内容如下：&lt;/p&gt;
&lt;h4 id=&#34;自用版本&#34;&gt;&lt;strong&gt;自用版本&lt;/strong&gt;
&lt;/h4&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;57
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;version&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;3.1&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;services&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# reader 在线阅读&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 本人在线演示(服务器位于日本) : https://reader.nxnow.online(此域名7月过期)更换为 https://read.nxnow.top&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 在线演示测试账号/密码分别为guest/guest123,也可自行创建账号添加书源&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 书源参考 : https://github.com/NZESupB/ReadSource,书源合集下选一个合集进入网页后, Ctrl+S 保存至本地后导入网站即可,或者点击远程书源,将链接导入即可&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#docker run -d --restart=always --name=reader -e &amp;#34;SPRING_PROFILES_ACTIVE=prod&amp;#34; -v $(pwd)/logs:/logs -v $(pwd)/storage:/storage -p 8080:8080 hectorqin/reader&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 多用户版&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#docker run -d --restart=always --name=reader -v $(pwd)/logs:/logs -v $(pwd)/storage:/storage -p 8080:8080 hectorqin/reader java -jar /app/bin/reader.jar --spring.profiles.active=prod --reader.app.secure=true --reader.app.secureKey=管理密码 --reader.app.inviteCode=注册邀请码&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 多用户版 使用环境变量&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#docker run -d --restart=always --name=reader -e &amp;#34;SPRING_PROFILES_ACTIVE=prod&amp;#34; -e &amp;#34;READER_APP_SECURE=true&amp;#34; -e &amp;#34;READER_APP_SECUREKEY=管理密码&amp;#34; -e &amp;#34;READER_APP_INVITECODE=注册邀请码&amp;#34; -v $(pwd)/logs:/logs -v $(pwd)/storage:/storage -p 8080:8080 hectorqin/reader&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 自用版&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#  read_own:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#    image: hectorqin/reader&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#    container_name: reader_own&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#    restart: always&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#    ports:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#      - 4395:8080&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#    volumes:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#      - /home/reader/logs:/logs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#      - /home/reader/storage:/storage&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#    environment:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#      - SPRING_PROFILES_ACTIVE=prod&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#      - READER_APP_CACHECHAPTERCONTENT=true #是否开启缓存章节内容 V2.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 多用户版&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;read_all&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;hectorqin&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;reader&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;container_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;reader&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;#容器名 可自行修改&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;restart&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;always&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;ports&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4396&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;8080&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;#4396端口映射可自行修改&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;volumes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;root&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;docker_data&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;reader&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;logs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;logs&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;#log映射目录 /root/data/docker_data/reader/logs 映射目录可自行修改&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;root&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;docker_data&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;reader&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;storage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;storage&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;#数据映射目录 /root/data/docker_data/reader/storage 映射目录可自行修改&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SPRING_PROFILES_ACTIVE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;prod&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;READER_APP_SECURE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;true&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;#开启登录鉴权，开启后将支持多用户模式&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;READER_APP_CACHECHAPTERCONTENT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;true&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;#是否开启缓存章节内容 V2.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;READER_APP_SECUREKEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;adminpwd&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;#管理员密码  可自行修改&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;c1&#34;&gt;#- READER_APP_INVITECODE=registercode #注册邀请码,如需要取消注释 可自行修改&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 自动更新docker&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;watchtower&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;containrrr&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;watchtower&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;container_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;watchtower&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;restart&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;always&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# 环境变量,设置为上海时区&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;TZ&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Asia&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Shanghai&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;volumes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;var&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;run&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;docker&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sock&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;var&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;run&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;docker&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sock&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;command&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;reader&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;watchtower&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cleanup&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;schedule&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;0 0 4 * * *&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# 仅更新reader与watchtower容器,如需其他自行添加 &amp;#39;容器名&amp;#39; ,如:reader watchtower redis&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# --cleanup 更新后清理旧版本镜像&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# --schedule 自动检测更新 crontab定时(限定6位crontab) 此处代表凌晨4点整&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id=&#34;视频演示版本&#34;&gt;视频演示版本
&lt;/h4&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;58
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;version&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;3.1&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;services&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# reader 在线阅读&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 第三方在线演示(服务器位于日本)：https://reader.nxnow.top&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 在线演示测试账号/密码分别为guest/guest123，也可自行创建账号添加书源，不定期删除长期未登录账号&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 书源参考 : https://github.com/NZESupB/ReadSource，书源合集下选一个合集进入网页后，Ctrl+S 保存至本地后导入网站即可，或者点击远程书源，将链接导入即可&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 单用户版&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#docker run -d --restart=always --name=reader -e &amp;#34;SPRING_PROFILES_ACTIVE=prod&amp;#34; -v $(pwd)/logs:/logs -v $(pwd)/storage:/storage -p 8080:8080 hectorqin/reader&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 多用户版&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#docker run -d --restart=always --name=reader -e &amp;#34;SPRING_PROFILES_ACTIVE=prod&amp;#34; -e &amp;#34;READER_APP_SECURE=true&amp;#34; -e &amp;#34;READER_APP_SECUREKEY=管理密码&amp;#34; -e &amp;#34;READER_APP_INVITECODE=注册邀请码&amp;#34; -v $(pwd)/logs:/logs -v $(pwd)/storage:/storage -p 8080:8080 hectorqin/reader&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;reader&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;hectorqin&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;reader&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;#image: hectorqin/reader:openj9-latest #docker镜像，arm64架构和小内存机器可以使用&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;container_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;reader&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;#容器名 可自行修改&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;restart&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;always&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;#限制镜像最大资源占用(可选) 低内存(&amp;lt;=2G)可考虑限制 使用此方式启动需加--compatibility,例如   docker-compose --compatibility up -d&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;#deploy:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;c1&#34;&gt;#resources:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;#limits:  #最大限制资源&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;c1&#34;&gt;#cpus: &amp;#39;0.50&amp;#39; #cpu建议不做限制,保持注释即可,1表示100%&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;c1&#34;&gt;#memory: 1024M&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;#reservations:  #保留最小资源&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;c1&#34;&gt;#cpus: 0.25&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;c1&#34;&gt;#memory: 256M&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;ports&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4396&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;8080&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;#4396端口映射可自行修改&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;volumes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;root&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;docker_data&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;reader&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;logs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;logs&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;#log映射目录 /home/reader/logs 映射目录可自行修改&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;root&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;docker_data&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;reader&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;storage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;storage&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;#数据映射目录 /home/reader/storage 映射目录可自行修改&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;c1&#34;&gt;#可配置默认书源,默认书源存放于数据映射目录中:storage/data/default/bookSource.json&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;c1&#34;&gt;#书源参考(大部分可通用):https://www.legado.top/blog/book-source&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;c1&#34;&gt;#wget -c https://namofree.gitee.io/yuedu3/legado3_booksource_by_Namo.json -O /home/reader/storage/data/default/bookSource.json&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SPRING_PROFILES_ACTIVE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;prod&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;READER_APP_USERLIMIT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;50&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;#用户上限,默认50&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;READER_APP_USERBOOKLIMIT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;200&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;#用户书籍上限,默认200&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;READER_APP_CACHECHAPTERCONTENT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;true&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;#开启缓存章节内容 V2.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;c1&#34;&gt;# 下面都是多用户模式配置&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;READER_APP_SECURE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;true&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;#开启登录鉴权，开启后将支持多用户模式&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;READER_APP_SECUREKEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;adminpwd&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;#管理员密码  建议修改&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;READER_APP_INVITECODE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;registercode&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;#注册邀请码 建议修改,如不需要可注释或删除&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 自动更新docker&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;watchtower&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;containrrr&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;watchtower&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;container_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;watchtower&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;restart&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;always&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# 环境变量,设置为上海时区&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;TZ&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Asia&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Shanghai&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;volumes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;var&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;run&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;docker&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sock&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;var&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;run&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;docker&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sock&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;command&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;reader&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;watchtower&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cleanup&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;schedule&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;0 0 4 * * *&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# 仅更新reader与watchtower容器,如需其他自行添加 &amp;#39;容器名&amp;#39; ,如:reader watchtower nginx&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# --cleanup 更新后清理旧版本镜像&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# --schedule 自动检测更新 crontab定时(限定6位crontab) 此处代表凌晨4点整&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;注意：VPS 的内存最好大于 1 G，可以再设置 1 G 的 SWAP，本项目内容存储在内存中～&lt;/p&gt;
&lt;p&gt;设置 SWAP 可以用脚本:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wget -O box.sh https://raw.githubusercontent.com/BlueSkyXN/SKY-BOX/main/box.sh &amp;amp;&amp;amp; chmod +x box.sh &amp;amp;&amp;amp; clear &amp;amp;&amp;amp; ./box.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;没问题的话，&lt;code&gt;ctrl+x&lt;/code&gt; 退出，按 &lt;code&gt;y&lt;/code&gt; 保存，&lt;code&gt;enter&lt;/code&gt; 确认。&lt;/p&gt;
&lt;p&gt;查看端口是否被占用，输入：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;lsof -i:4396  #查看4396端口是否被占用，如果被占用，重新自定义一个端口
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果出现：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-bash: lsof: command not found
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;运行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apt install lsof  #安装lsof
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果端口没有被占用，可以运行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker-compose up -d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;访问：&lt;code&gt;http:服务ip:4396&lt;/code&gt; 即可。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;注意：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;1、不知道服务器 IP，可以直接在命令行输入：&lt;code&gt;curl ip.sb&lt;/code&gt;，会显示当前服务器的 IP。&lt;/p&gt;
&lt;p&gt;2、遇到访问不了的情况，请在宝塔面板的防火墙和服务商的后台防火墙里打开对应端口。&lt;/p&gt;
&lt;h3 id=&#34;52-更新&#34;&gt;5.2 更新
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cd /root/data/docker_data/reader  # 进入docker-compose所在的文件夹
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker-compose pull    # 拉取最新的镜像
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker-compose up -d   # 重新更新当前镜像
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;利用 Docker-compose 搭建的应用，更新非常容易～&lt;/p&gt;
&lt;h3 id=&#34;53-卸载&#34;&gt;5.3 卸载
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo -i  # 切换到root
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cd /root/data/docker_data/reader  # 进入docker-compose所在的文件夹
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker-compose down    # 停止容器，此时不会删除映射到本地的数据
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cd ~
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rm -rf /root/data/docker_data/reader  # 完全删除映射到本地的数据
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;利用 Docker-compose 搭建的应用，删除也非常容易～&lt;/p&gt;
&lt;h2 id=&#34;6-反向代理必须&#34;&gt;6. 反向代理（必须）
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;此项目和别的项目不同，必须采用 https 形式，否则浏览器无法加密，无法使用。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;61-利用-nginx-proxy-manager&#34;&gt;6.1 利用 Nginx Proxy Manager
&lt;/h3&gt;&lt;p&gt;在添加反向代理之前，确保你已经完成了域名解析，不会的可以看这个：&lt;strong&gt;域名一枚，并做好解析到服务器上&lt;/strong&gt;（&lt;a class=&#34;link&#34; href=&#34;https://blog.laoda.de/archives/namesilo&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;域名购买、域名解析&lt;/a&gt; &lt;a class=&#34;link&#34; href=&#34;https://www.bilibili.com/video/BV1Sy4y1k7kZ/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;视频教程&lt;/a&gt;）&lt;/p&gt;
&lt;p&gt;之后，登陆 Nginx Proxy Manager（不会的看这个：&lt;strong&gt;安装 Nginx Proxy Manager&lt;/strong&gt;（&lt;a class=&#34;link&#34; href=&#34;https://blog.laoda.de/archives/nginxproxymanager&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;相关教程&lt;/a&gt;））&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;注意：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Nginx Proxy Manager（以下简称 NPM）会用到 &lt;code&gt;80&lt;/code&gt;、&lt;code&gt;443&lt;/code&gt; 端口，所以本机不能占用（比如原来就有 Nginx）&lt;/p&gt;
&lt;p&gt;直接丢几张图：
&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1730251706202410300928342.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1730251718202410300928510.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;
注意填写对应的 &lt;code&gt;域名&lt;/code&gt;、&lt;code&gt;IP&lt;/code&gt; 和 &lt;code&gt;端口&lt;/code&gt;，按文章来的话，应该是 &lt;code&gt;4396&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IP 填写：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果 Nginx Proxy Manager 和 reader 在同一台服务器上，可以在终端输入：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ip addr show docker0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;查看对应的 Docker 容器内部 IP。&lt;/p&gt;
&lt;p&gt;否则直接填 &lt;code&gt;cryptgeon所在的服务器IP&lt;/code&gt; 就行。
&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1730251738202410300928495.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;
再次打开，勾选这些：
&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1730251754202410300929869.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;然后就可以用域名来安装访问了。&lt;/p&gt;
&lt;h2 id=&#34;7-使用教程&#34;&gt;7. 使用教程
&lt;/h2&gt;&lt;p&gt;看咕咕的视频，或者自己研究，看&lt;a class=&#34;link&#34; href=&#34;https://github.com/hectorqin/reader/blob/master/doc.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;文档&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;71-书源地址请支持正版书籍&#34;&gt;7.1 书源地址（请支持正版书籍）
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/XIU2/Yuedu&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/XIU2/Yuedu&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;数量不多，因为我觉得质量比数量更重要（当然我也不保证质量就一定多么好哈），我以前也用过那些几百上千个的书源列表，杂七杂八太乱了，质量参差不齐，而且正常情况下大家也就主用几个书源罢了。。。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;https://blog.3cat.cc/142.html&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;本书源集成了 1000 + 个源，基本涵盖全网！&lt;br&gt;
为了长久使用，请勿滥用！&lt;/p&gt;
&lt;p&gt;书源：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://shuyuan.mgz6.cc/shuyuan/84083d2be227881b0e3b90b9cd01c685.json
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;json&lt;/code&gt; 的就是可以直接导入的&lt;br&gt;
网址：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;http://yck.mumuceo.com/yuedu/shuyuan/index.html&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;里面有很多书源&lt;/p&gt;
&lt;h2 id=&#34;8-结尾&#34;&gt;8. 结尾
&lt;/h2&gt;&lt;p&gt;祝大家用得开心，有问题可以去 GitHub 提 &lt;a class=&#34;link&#34; href=&#34;https://github.com/hectorqin/reader/issues&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Issues&lt;/a&gt;，也可以在评论区互相交流探讨。&lt;/p&gt;
&lt;p&gt;同时，有能力给项目做贡献的同学，也欢迎积极&lt;a class=&#34;link&#34; href=&#34;https://github.com/hectorqin/reader/issues&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;加入到项目&lt;/a&gt;中来，贡献自己的一份力量！&lt;/p&gt;
&lt;h2 id=&#34;9-参考资料&#34;&gt;9. 参考资料
&lt;/h2&gt;&lt;p&gt;GitHub 原项目地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/hectorqin/reader&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/hectorqin/reader&lt;/a&gt;（617 star）&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://hostloc.com/thread-1010700-1-3.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://hostloc.com/thread-1010700-1-3.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/XIU2/Yuedu&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/XIU2/Yuedu&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.3cat.cc/142.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://blog.3cat.cc/142.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;本文出自：&lt;a class=&#34;link&#34; href=&#34;https://blog.laoda.de/archives/docker-compose-install-reader&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【好玩儿的Docker项目】10分钟搭建一个自己的网文阅读器 安卓的“阅读”APP网页版 附带书源！-我不是咕咕鸽&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Obsidian 加密备份 - Google Drive、Dropbox、OneDrive - Byte Tank</title>
        <link>https://blog.ccino.org/p/obsidian-encrypted-backup/</link>
        <pubDate>Mon, 28 Oct 2024 10:26:09 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/obsidian-encrypted-backup/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/obsidian-encrypted-backup/Obsidian%20Encrypted%20Backup.png" alt="Featured image of post Obsidian 加密备份 - Google Drive、Dropbox、OneDrive - Byte Tank" /&gt;&lt;p&gt;在使用 Evernote 几年后，我最终将所有笔记迁移到了 Obsidian，这样我就可以完全控制我的笔记，并且可以使用、移动或&lt;a class=&#34;link&#34; href=&#34;https://lopespm.com/machine_learning/2024/06/24/personal-llm.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;利用&lt;/a&gt;这种格式。因此，我的笔记将不再存在于云端和我的私人设备中，因此任何数据和备份都需要由我通过个人定期备份来保证。&lt;/p&gt;
&lt;p&gt;十多年的笔记都依赖于单一的静音，这让我有些不安，所以我能想到的选择是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;订阅 &lt;a class=&#34;link&#34; href=&#34;https://obsidian.md/sync&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Obsidian的同步服务，&lt;/a&gt; _每月_需支付 4 美元。我的加密笔记将绑定到 Obsidian 的云服务&lt;/li&gt;
&lt;li&gt;拥有一个自定义解决方案，利用 Obsidian 出色的可定制性，压缩和加密我的所有笔记，并使用云服务来托管此文档。我可以灵活地选择我想要的任何云事业。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;我选择了选项 2，使用 Google Drive 云服务，并在本文中分享您也可以使用的方法。&lt;/p&gt;
&lt;p&gt;这个想法很简单：每当 Obsidian 退出时，使用 &lt;a class=&#34;link&#34; href=&#34;https://obsidian.md/plugins?search=obsidian-shellcommands&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;obsidian-shellcommands&lt;/a&gt; shell 插件运行脚本脚本。这个事件是可配置的，我发现应用程序退出事件对我来说有必要的周期性，因为我经常偶尔 Obsidian，在上面写字，然后立即退出应用程序。&lt;/p&gt;
&lt;h2 id=&#34;步骤-1-加密并备份所有笔记的脚本脚本&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#step-1-custom-script-that-encrypts-and-backs-up-all-notes&#34; &gt;&lt;/a&gt;步骤 1. 加密并备份所有笔记的脚本脚本
&lt;/h2&gt;&lt;p&gt;首先，将以下脚本保存到计算机中的文件夹中（例如，&lt;code&gt;/Users/yourunixname/backups/my_backup_script.sh&lt;/code&gt;），并使用您自己的 Obsidian、备份目标文件夹和您自己的文档密码由此进行更新：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/bin/zsh #!/bin/zsh 复制代码
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; obsidian_notes_folder= &amp;#34;&amp;lt;your_obsidian_folder&amp;gt;&amp;#34; ; # 例如，/Users/yourusername/Library/Application Support/obsidian obsidian_notes_tar_archive= &amp;#34; ${obsidian_notes_folder} /obsidian_backup.tar.gz&amp;#34;； backup_folder= &amp;#34;&amp;lt;folder_where_the_final_encrypted_backup_will_be_placed&amp;gt;&amp;#34; ; # 例如，/Users/yourusername/Library/CloudStorage/GoogleDrive/MyDrive/backup_folder
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;echo  &amp;#34;开始压缩黑曜石清单...&amp;#34; ;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;#创建一个包含黑曜石文件夹内所有内容的.tar文件 tar -czf ${obsidian_notes_tar_archive}  ${obsidian_notes_folder} /obsidian_backup
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 将 .tar 档案压缩为加密的 .7z 文件，密码为“PasswordOfYourChoosing”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 在此示例中，使用了从 nix 包管理器 (https://nixos.org/) 安装的 7za，但您可以使用来自任何其他信誉良好来源的 7za /Users/你的用户名/.nix-profile/bin/7za a -tzip -mem=AES256 -mx=0 -mmt=12 -pPasswordOfYourChoosing ${obsidian_notes_folder} /obsidian_backup.7z ${obsidian_notes_tar_archive}；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 将 .7z 文件移动到备份文件夹（例如您的 Google Drive / Dropbox / OneDrive 文件夹） mv ${obsidian_notes_folder} /obsidian_backup.7z ${backup_folder} /obsidian_backup.7z；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;echo “压缩完成并移至文件文件夹”
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;_ &lt;a class=&#34;link&#34; href=&#34;https://gist.github.com/lopespm/fcfceebc311d8ba364919cdf4fa61e8d&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;（从 GitHub Gists&lt;/a&gt; 下载此脚本）_&lt;/p&gt;
&lt;p&gt;这些注释大部分都不是明言的，但本质上就是脚本的作用：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;首先创建一个包含 obsidian 文件夹内所有内容的 .tar 文件&lt;/li&gt;
&lt;li&gt;将. Tar 存档压缩为密码加密 &lt;code&gt;.7z&lt;/code&gt; 文件。记住用你自己的私人密码更新密码&lt;/li&gt;
&lt;li&gt;将文件移动 &lt;code&gt;.7z&lt;/code&gt; 到目标文件夹选择，该文件夹可能是您的云存储同步文件夹使用的文件夹（例如您的 Google Drive/Dropbox/OneDrive 文件夹）。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;由于最终文件名 &lt;code&gt;3.&lt;/code&gt; 始终相同，因此会被重写，但是您的云存储同步可能会跟踪不同版本的变化，这可能会逐渐增加您的配件使用量。如果这是一个问题，只需使用您的云存储界面定期清除它们即可。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;chmod +x &amp;lt;script_file_name&amp;gt;&lt;/code&gt; 您可以通过授予脚本执行权限 ( ) 并运行来测试您的脚本 &lt;code&gt;./&amp;lt;your_script_name&amp;gt;&lt;/code&gt;。您的最终加密文档应在最终出现 &lt;code&gt;backup_folder&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&#34;第-2-步在-obsidian-退出时运行脚本&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#step-2-run-the-script-when-obsidian-quits&#34; &gt;&lt;/a&gt;第 2 步：在 Obsidian 退出时运行脚本
&lt;/h2&gt;&lt;p&gt;现在我们已经准备好脚本了，如果能在 Obsidian 发生特定事件时自动运行，我们的很多工作就会轻松。使用 &lt;a class=&#34;link&#34; href=&#34;https://obsidian.md/plugins?search=obsidian-shellcommands&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;obsidian-shell命令&lt;/a&gt;轻松在 Obsidian 发生特定事件时运行 shell 脚本可以。步骤如下：&lt;/p&gt;
&lt;p&gt;1.前往 Obsidian -&amp;gt; 设置。然后选择“社区插件”选项。
&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1730082723202410281032361.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;1.1.在“社区插件”选项中，单击“浏览”。在那里，搜索“Shell”。您要安装的是[Jarkko Linnanvirta 的 Shell 命令]&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1730082819202410281033772.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;
&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1730082830202410281033962.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;
2.插件完成安装后，再次转到 Obsidian -&amp;gt; 设置。您应该在左下角的“社区插件”下面看到一个名为“Shell Command”的选项。单击它。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1730082874202410281034719.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;3.1.在“Shell 命令”插件中，选择“Shell 命令”选项卡，在其中单击“创建 shell 命令”，然后单击创建的行，单击其相应的齿轮图标。这将向您显示一个带有多个选项卡的新模式。&lt;/p&gt;
&lt;p&gt;3.2.在此命令模式中，选择“环境”选项卡，然后在“默认 shell 命令”中添加类似以下内容：&lt;code&gt;zsh /Users/yourunixname/backups/my_backup_script.sh&lt;/code&gt;。这假设您的脚本位于 &lt;code&gt;/Users/yourunixname/backups/my_backup_script.sh&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1730082901202410281034636.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;**3.3.**仍然在此命令模式中，选择“事件”选项卡。在那里，您可以选择脚本执行。例如，搜索“Obsidian quits”，然后启用它（右侧有一个切换按钮）&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1730082928202410281035604.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1730082937202410281035687.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;
全部完成！执行这些步骤后，您的脚本脚本将在您选择的时间运行，并且将创建加密备份并将其放置在您在上述&lt;a class=&#34;link&#34; href=&#34;https://lopespm.com/notes/2024/09/11/obsidian-backup.html#step-1-custom-script-that-encrypts-and-backs-up-all-notes&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;步骤 1&lt;/a&gt; 中选择的位置。&lt;/p&gt;
&lt;p&gt;本文出自：&lt;a class=&#34;link&#34; href=&#34;https://lopespm.com/notes/2024/09/11/obsidian-backup.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Obsidian Encrypted Backup - Google Drive, Dropbox, OneDrive - Byte Tank&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Memos：轻量、私有部署的多平台云备忘录</title>
        <link>https://blog.ccino.org/p/memos-lightweight-privately-deployed-multi-platform-cloud-memo/</link>
        <pubDate>Sat, 26 Oct 2024 11:26:26 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/memos-lightweight-privately-deployed-multi-platform-cloud-memo/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/memos-lightweight-privately-deployed-multi-platform-cloud-memo/Memos%20Lightweight%20privately%20deployed%20multi%20platform%20cloud%20memo.webp" alt="Featured image of post Memos：轻量、私有部署的多平台云备忘录" /&gt;&lt;h2 id=&#34;memos&#34;&gt;Memos
&lt;/h2&gt;&lt;p&gt;博客用来写一些长文、笔记、心得还是挺方便的，有时候也有一些简单的备忘录、心情想要记录下来，找了一圈发现一个宝藏程序：Memos，UI 风格非常简洁，跟 flomo 很像，轻量、支持私有化部署、完全免费、各个平台还有相应的客户端甚至还有网页插件，在此记录搭建流程和遇见的一些问题。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/202410261137290.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;搭建流程&#34;&gt;搭建流程
&lt;/h2&gt;&lt;h4 id=&#34;docker-部署&#34;&gt;Docker 部署
&lt;/h4&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;docker&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;run&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;d&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;name&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;memos&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;p&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5230&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5230&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;v&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;~/.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;memos&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;var&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;opt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;memos&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;neosmemo&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;memos&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;latest&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;安装成功之后 memos 会在本地 &lt;code&gt;127.0.0.1:5230&lt;/code&gt; 运行&lt;/p&gt;
&lt;h4 id=&#34;docker-compose-部署&#34;&gt;Docker-compose 部署
&lt;/h4&gt;&lt;p&gt;如果使用宝塔面板的话可以在 &lt;a class=&#34;link&#34; href=&#34;https://www.composerize.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.composerize.com/&lt;/a&gt; 将 docker 命令转换为 docker-compose 或者 &lt;a class=&#34;link&#34; href=&#34;https://github.com/usememos/memos/blob/main/docker-compose.yaml&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/usememos/memos/blob/main/docker-compose.yaml&lt;/a&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;创建工作目录&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir memos &amp;amp;&amp;amp; cd memos
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;vi docker-compose.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;编辑 docker-compose. Yaml 文件&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;version&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;3.0&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;services&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;memos&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;neosmemo&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;memos&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;latest&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;restart&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;always&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;container_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;memos&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;volumes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;~/.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;memos&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;var&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;opt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;memos&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;ports&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5230&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5230&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;启动项目&lt;br&gt;
&lt;code&gt;docker-compose up -d&lt;/code&gt;&lt;br&gt;
首次安装会提示注册用户，请记牢您的而密码。数据文件默认存储在 ~/. Memos 中。&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&#34;配置-nginx-反向代理&#34;&gt;配置 Nginx 反向代理
&lt;/h4&gt;&lt;p&gt;可以使用宝塔的反向代理或者 Nginx Proxy Manager 的反向代理配置&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;server {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    server_name domain.com;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    location / {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        proxy_pass http://127.0.0.1:5230;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        proxy_set_header Host $host;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        proxy_set_header X-Forwarded-Proto $scheme;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        proxy_set_header X-Real-IP $remote_addr;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        client_max_body_size 0;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;项目更新&#34;&gt;项目更新
&lt;/h2&gt;&lt;p&gt;Docker-compose&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cd {宿主机数据目录}/memos
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker stop memos &amp;amp;&amp;amp; docker rm memos
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp -r ~/.memos/memos_prod.db ~/.memos/memos_prod.db.bak
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker pull neosmemo/memos:latest
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker-compose up -d #如果是docker-compose部署的使用该命令
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker image prune  # prune 命令用来删除不再使用的 docker 对象。删除所有未被 tag 标记和未被容器使用的镜像```
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Docker:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;docker&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;stop&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;memos&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;cp&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;~/.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;memos&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;memos_prod&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;db&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;~/.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;memos_backup&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# 万事先备份，以防万一&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;docker&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rm&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;f&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;memos&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;docker&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pull&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;neosmemo&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;memos&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;latest&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# 拉取最新镜像&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;docker&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;run&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;d&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;name&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;memos&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;p&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5230&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5230&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;v&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;~/.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;memos&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;var&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;opt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;memos&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;neosmemo&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;memos&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;latest&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果是宝塔部署的项目，记得要备份一下 &lt;code&gt;/www/server/panel/data/compose/{对应的docker目录}/{步骤1中的宿主机数据文件目录}&lt;/code&gt; 中的数据库文件&lt;/p&gt;
&lt;h2 id=&#34;卸载&#34;&gt;卸载
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker stop memos
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker rm -f memos  # 停止容器，此时不会删除映射到本地的数据
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rm -rf {宿主机数据目录}/memos  # 完全删除映射到本地的数据
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;遇见的问题&#34;&gt;遇见的问题
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Memos 配置 cdn 和 cos 之后，上传大一点的文件会报 500, 起初以为是 nginx 反向代理规则的问题，排查后没问题，猜测跟 cdn 有关，就把域名直接解析源站试试，不出意外没有问题，然后再解析回 cdn，竟然也正常了&lt;br&gt;
解决方案：&lt;br&gt;
搞了半天，腾讯 CDN 里回源配置有个回源超时配置，延长回源加载时间和 TC 连接时间就可以了，我还问腾讯的售后有没有相关的配置，告诉我说没有 - -&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Nginx 反向代理缓存和 CDN 只要启用任意一个，竟然会出现一个账号只要登录了，其他电脑打开网页也是登录状态&lt;br&gt;
解决方案：&lt;br&gt;
终于解决了，绕了一大圈发现是缓存了 go 文件，而用户身份信息就是 go 处理的，在 cdn 中配置规则不缓存 go 文件，nginx 设置了不缓存 go 文件好像不管用，只能先暂时关闭反向代理缓存了&lt;/p&gt;
&lt;h2 id=&#34;相关地址&#34;&gt;相关地址
&lt;/h2&gt;&lt;p&gt;项目地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/usememos/memos&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/usememos/memos&lt;/a&gt;&lt;br&gt;
微信小程序 (可打包成 app)：&lt;a class=&#34;link&#34; href=&#34;https://github.com/Rabithua/memos_wmp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/Rabithua/memos_wmp&lt;/a&gt;&lt;br&gt;
APP 版本 2：&lt;a class=&#34;link&#34; href=&#34;https://github.com/mudkipme/MoeMemosAndroid&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/mudkipme/MoeMemosAndroid&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;参考网址&#34;&gt;参考网址
&lt;/h2&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.skyue.com/23021116.html/comment-page-1#comment-3340&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.skyue.com/23021116.html/comment-page-1#comment-3340&lt;/a&gt;&lt;br&gt;
&lt;a class=&#34;link&#34; href=&#34;https://bore.vip/archives/d5e37958/#%E5%8D%95%E9%A1%B5%E9%83%A8%E7%BD%B2%E4%BB%A3%E7%A0%81&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://bore.vip/archives/d5e37958/#%E5%8D%95%E9%A1%B5%E9%83%A8%E7%BD%B2%E4%BB%A3%E7%A0%81&lt;/a&gt;&lt;br&gt;
&lt;a class=&#34;link&#34; href=&#34;https://blog.laoda.de/archives/docker-install-memos/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://blog.laoda.de/archives/docker-install-memos/&lt;/a&gt;&lt;br&gt;
&lt;a class=&#34;link&#34; href=&#34;https://cmsblog.cn/1338.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://cmsblog.cn/1338.html&lt;/a&gt;&lt;br&gt;
&lt;a class=&#34;link&#34; href=&#34;https://tech.yemengstar.com/?p=1014&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://tech.yemengstar.com/?p=1014&lt;/a&gt;&lt;br&gt;
&lt;a class=&#34;link&#34; href=&#34;https://immmmm.com/hi-memos/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://immmmm.com/hi-memos/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;本文出自：&lt;a class=&#34;link&#34; href=&#34;https://www.cgxblog.com/719.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Memos：轻量、私有部署的多平台云备忘录 - 南北阡陌&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>在cloudflare部署hugging face的免费api，可对接oneapi/newapi，免费使用Qwen2.5 72B等模型</title>
        <link>https://blog.ccino.org/p/deploy-huggingface-free-api-in-cloudflare-which-can-be-connected-to-oneapi-newapi-and-use-qwen2.5-72b-and-other-models-for-free/</link>
        <pubDate>Sun, 20 Oct 2024 13:12:44 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/deploy-huggingface-free-api-in-cloudflare-which-can-be-connected-to-oneapi-newapi-and-use-qwen2.5-72b-and-other-models-for-free/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/deploy-huggingface-free-api-in-cloudflare-which-can-be-connected-to-oneapi-newapi-and-use-qwen2.5-72b-and-other-models-for-free/Deploy%20huggingface%20free%20API%20in%20cloudflare%20which%20can%20be%20connected%20to%20oneapi%20newapi%20and%20use%20Qwen2.5%2072B%20and%20other%20models%20for%20free.png" alt="Featured image of post 在cloudflare部署hugging face的免费api，可对接oneapi/newapi，免费使用Qwen2.5 72B等模型" /&gt;&lt;p&gt;感谢大佬的开源&lt;br&gt;
&lt;a class=&#34;link&#34; href=&#34;https://linux.do/t/topic/227619/17&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;自部署 hugging face 的免费 api，拉到 newapi 内使用, Qwen2.5 70B 等免费 - 开发调优 - LINUX DO&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;顺手打包了镜像需要的可以看看&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker pull oozzbb/hg2api:latest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;运行命令可参考&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;HUGGINGFACE_API_KEY ，去hugging face申请
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;API_KEY ，对接one-api/new-api使用
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run --name hg2api --restart always -p 5023:5000 -e HUGGINGFACE_API_KEY=hg_xxx -e  API_KEY=sk-1234567890 oozzbb/hg2api:latest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;正文开始&lt;/strong&gt;&lt;br&gt;
因国内部署无法访问 hugging face，所以在大佬的基础上改造成能部署到 cloudflare workers&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;准备工作&lt;/strong&gt;&lt;br&gt;
1、注册 &lt;a class=&#34;link&#34; href=&#34;https://www.cloudflare.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;cloudflare 28&lt;/a&gt;&lt;br&gt;
2、注册 hugging face 并申请 api key，&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/settings/tokens/new?globalPermissions=inference.serverless.write&amp;amp;tokenType=fineGrained&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;申请 api key 地址 147&lt;/a&gt;&lt;br&gt;
3、复制以下代码部署到 cloudflare workers 中即可&lt;br&gt;
4、支持在 oneapi/newapi 点击 “获取模型列表” 一键添加可用模型&lt;/p&gt;
&lt;p&gt;我是隐藏代码&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;  1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 60
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 61
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 62
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 63
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 64
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 65
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 66
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 67
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 68
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 69
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 70
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 71
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 72
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 73
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 74
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 75
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 76
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 77
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 78
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 79
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 80
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 81
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 82
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 83
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 84
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 85
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 86
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 87
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 88
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 89
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 90
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 91
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 92
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 93
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 94
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 95
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 96
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 97
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 98
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 99
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;100
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;101
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;102
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;103
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;104
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;105
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;106
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;107
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;108
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;109
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;110
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;111
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;112
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;对接&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;one&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;api&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;new&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;api使用&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;API_KEY&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;sk-1234567890&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;你的&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;hugging&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;face&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;api&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;key去hugging&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;face申请&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;HUGGINGFACE_API_KEY&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;hf_xxxxxxxxxxx&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;目前发现的可用模型，请求时如模型不在该列表内，则使用你请求的模型&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;CUSTOMER_MODEL_MAP&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;qwen2.5-72b-instruct&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Qwen/Qwen2.5-72B-Instruct&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;gemma2-2b-it&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;google/gemma-2-2b-it&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;gemma2-27b-it&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;google/gemma-2-27b-it&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;llama-3-8b-instruct&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;meta-llama/Meta-Llama-3-8B-Instruct&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;llama-3.2-1b-instruct&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;meta-llama/Llama-3.2-1B-Instruct&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;llama-3.2-3b-instruct&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;meta-llama/Llama-3.2-3B-Instruct&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;phi-3.5&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;microsoft/Phi-3.5-mini-instruct&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;async&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;handleRequest&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;try&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;method&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;OPTIONS&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;getResponse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;204&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;authHeader&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;headers&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Authorization&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;authHeader&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;authHeader&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;startsWith&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Bearer &amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;authHeader&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;split&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34; &amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!==&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;API_KEY&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;getResponse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Unauthorized&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;401&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;url&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;endsWith&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;/v1/models&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;arrs&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;ne&#34;&gt;Object&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;keys&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CUSTOMER_MODEL_MAP&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;map&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;element&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;arrs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;push&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;element&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;object&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;model&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;arrs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;success&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;bp&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;getResponse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;JSON&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stringify&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;200&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;method&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!==&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;POST&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;getResponse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Only POST requests are allowed&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;405&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;url&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;endsWith&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;/v1/chat/completions&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;getResponse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Not Found&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;404&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;json&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;messages&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;messages&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;model&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;CUSTOMER_MODEL_MAP&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;temperature&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;temperature&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;0.7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;max_tokens&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;max_tokens&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;8196&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;top_p&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Math&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;min&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Math&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;max&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;top_p&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;0.9&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;0.0001&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;0.9999&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;stream&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stream&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;bp&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;requestBody&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;stream&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;stream&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;temperature&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;temperature&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;max_tokens&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;max_tokens&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;top_p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;top_p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;messages&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;messages&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;apiUrl&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;https&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;api&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;inference&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;huggingface&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;co&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;models&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/$&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;v1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;chat&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;completions&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;fetch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;apiUrl&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;method&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;POST&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;headers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;s1&#34;&gt;&amp;#39;Authorization&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Bearer&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;HUGGINGFACE_API_KEY&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;s1&#34;&gt;&amp;#39;Content-Type&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;application/json&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;JSON&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stringify&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;requestBody&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ok&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;errorText&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;getResponse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Error&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;API&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;statusText&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;errorText&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;status&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;newResponse&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;status&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;status&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;headers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;o&#34;&gt;...&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Object&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;fromEntries&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;headers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;s1&#34;&gt;&amp;#39;Access-Control-Allow-Origin&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;*&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;s1&#34;&gt;&amp;#39;Access-Control-Allow-Methods&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;*&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;s1&#34;&gt;&amp;#39;Access-Control-Allow-Headers&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;*&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;newResponse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;catch&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;error&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;getResponse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;JSON&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stringify&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;error&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;`处理请求失败&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;error&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;message&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}),&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;500&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;getResponse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;resp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;status&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;resp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;status&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;status&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;headers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;s2&#34;&gt;&amp;#34;Content-Type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;application/json&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;s2&#34;&gt;&amp;#34;Access-Control-Allow-Origin&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;*&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;s2&#34;&gt;&amp;#34;Access-Control-Allow-Methods&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;*&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;s2&#34;&gt;&amp;#34;Access-Control-Allow-Headers&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;*&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;addEventListener&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;fetch&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;event&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;event&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;respondWith&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;handleRequest&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;event&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;本文出自：&lt;a class=&#34;link&#34; href=&#34;https://linux.do/t/topic/229833&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;在cloudflare部署hugging face的免费api，可对接oneapi/newapi，免费使用Qwen2.5 72B等模型 - 资源荟萃 - LINUX DO&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>教你从零开始，入坑域名、云服务器并部署 New API &#43; Open WebUI！</title>
        <link>https://blog.ccino.org/p/teach-you-how-to-start-from-scratch-get-into-domain-names-cloud-servers-and-deploy-new-api-open-webui/</link>
        <pubDate>Fri, 18 Oct 2024 13:37:15 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/teach-you-how-to-start-from-scratch-get-into-domain-names-cloud-servers-and-deploy-new-api-open-webui/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/teach-you-how-to-start-from-scratch-get-into-domain-names-cloud-servers-and-deploy-new-api-open-webui/Teach%20you%20how%20to%20start%20from%20scratch%20get%20into%20domain%20names%20cloud%20servers%20and%20deploy%20New%20API%20Open%20WebUI.png" alt="Featured image of post 教你从零开始，入坑域名、云服务器并部署 New API &#43; Open WebUI！" /&gt;&lt;h1 id=&#34;前言&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-h-1&#34; &gt;&lt;/a&gt;前言
&lt;/h1&gt;&lt;p&gt;写这篇文章本来只是想简单记录一下我购买并部署好人生中第一个属于自己的域名、服务器的过程，表达一下喜悦。&lt;/p&gt;
&lt;p&gt;写着写着突然想到：或许不少朋友也会和我一样，在部署时遇到这些奇奇怪怪的问题、踩各种各样的坑，因此，我决定写得详细一点、再详细一点，使其真正成为一个对纯小白友好的教程（或许是全网独一份？）&lt;del&gt;虽然我也是小白&lt;/del&gt;&lt;/p&gt;
&lt;p&gt;如果你认真看完并实践的话，也能拥有属于自己的服务器和 New API、Open WebUI，甚至更多！&lt;/p&gt;
&lt;h1 id=&#34;预算&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-h-2&#34; &gt;&lt;/a&gt;预算
&lt;/h1&gt;&lt;p&gt;我们至少心里对预算有个数再往下看，这样也不耽误你时间，对吧？&lt;/p&gt;
&lt;p&gt;本教程中所使用的除了 Cloudflare 大善人的相关服务，都是付费的，因为这样体验更好，不会出现一些莫名其妙的问题。当然，你也可以使用免费服务代替，这方面佬友们已经分享了很多，就不做赘述了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;域名：&lt;/strong&gt; 首年 14 元，续费每年 72 元（这个免费服务也挺多的，L 站都有不少人分享）&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;云服务器：&lt;/strong&gt; 每月 30-40 元（也可以多买几个月，使用优惠券或活动折扣更便宜）&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id=&#34;为什么我选择了-open-webuinew-api&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-open-webuinew-api-3&#34; &gt;&lt;/a&gt;为什么我选择了 Open WebUI、New API
&lt;/h1&gt;&lt;h2 id=&#34;open-webui&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-open-webui-4&#34; &gt;&lt;/a&gt;Open WebUI
&lt;/h2&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/open-webui/open-webui&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;github.com&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;github---open-webuiopen-webui-user-friendly-ai-interface-supports-ollama&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/open-webui/open-webui&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub - open-webui/open-webui: User-friendly AI Interface (Supports Ollama,&amp;hellip; 178&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;User-friendly AI Interface (Supports Ollama, OpenAI API, &amp;hellip;)&lt;/p&gt;
&lt;p&gt;GUI 方面，我之前一直用的是 ChatBox，虽然说各种基础功能都已经很够用了，但是消息记录不能多端自动同步这一点有点烦人。最近也是对函数调用功能有点兴趣，并且稍微有一点文件上传并使用 embedding 模型进行 RAG 的需求，而 Lobe 优化半天到现在还是好卡（至少不是我能忍受的程度），于是转战 Open WebUI。&lt;/p&gt;
&lt;h2 id=&#34;new-api&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-new-api-5&#34; &gt;&lt;/a&gt;New API
&lt;/h2&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Calcium-Ion/new-api&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;github.com&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;github---calcium-ionnew-api-ai-模型接口管理与分发系统支持将多种大模型转为-openai-格式调用支持-midjourney&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Calcium-Ion/new-api&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub - Calcium-Ion/new-api: AI 模型接口管理与分发系统，支持将多种大模型转为 OpenAI 格式调用、支持 Midjourney&amp;hellip; 144&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;AI 模型接口管理与分发系统，支持将多种大模型转为 OpenAI 格式调用、支持 Midjourney Proxy、Suno、Rerank，兼容易支付协议，仅供个人或者企业内部管理与分发渠道使用，请勿用于商业用途，本项目基于 One API 二次开发。&lt;/p&gt;
&lt;p&gt;One API 的模型列表中如果模型过多，会导致超出字数限制…… 本来我是 1 Panel 面板一键部署的 One API，被这个恶心到了，换成手动部署 New API，不仅没有这个问题，体验还更好&lt;/p&gt;
&lt;p&gt;至于 New API…… 这是因为我在用 Cursor 这个非常好用的，能让 LLM 直接读取项目文件夹、快速自动修改原文件的 IDE（基于 VsCode 改的，VsCode 有的它基本都有，插件也是支持的）。&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.cursor.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;cursor.com&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;cursor-60&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.cursor.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Cursor 60&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;The AI Code Editor&lt;/p&gt;
&lt;p&gt;它支持使用你自己的 OpenAI API，但是有点 Bug：你开启自定义 OpenAI API 后，Claude 模型的请求还是会被发到 Anthropic API 那里……&lt;/p&gt;
&lt;p&gt;最终还是入了 20$ 的 Pro 计划，Composer 真的是神级功能…… 用了以后再也不想使用传统 IDE 了&lt;/p&gt;
&lt;p&gt;于是我想用 New API 套一层中转，做个模型映射去欺骗 Cursor，让它以为自己在调用无关模型 “code-3-5-sonnt”，实际上在调用 Claude 3.5 Sonnet。很简单，但是有用。&lt;/p&gt;
&lt;p&gt;同时，New API 的核心功能：管理多个渠道的 API，可以轻松帮你解决因为手头有几个渠道的 API 而需要频繁手动修改配置文件中的 OpenAI API 基地址的问题。&lt;/p&gt;
&lt;p&gt;它也能只将渠道中的部分模型添加入服务，方便你在 Open WebUI 这种会扫描 API 模型列表的项目中只获取需要使用的模型，减少翻找列表的麻烦。&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id=&#34;尝试内网穿透但不满意&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-h-6&#34; &gt;&lt;/a&gt;尝试内网穿透但不满意
&lt;/h1&gt;&lt;h2 id=&#34;内网穿透&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-h-7&#34; &gt;&lt;/a&gt;内网穿透
&lt;/h2&gt;&lt;p&gt;只能在局域网使用 Open WebUI 还是有点不太爽，于是我开始折腾基于 Cloudflare 大善人的 Tunnel 内网穿透（当时不太想入坑服务器，懒得折腾）。内网穿透部分蛮简单的，B 站和 L 站都有人做了详细的介绍，这里就不详细展开了，是真的不建议弄。&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.bilibili.com/video/BV1H4421X7Wg/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;bilibili.com&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;没有公网-ip-免费域名搭建-cloudflare-内网穿透不限流量不用绑卡支付_&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.bilibili.com/video/BV1H4421X7Wg/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;没有公网 IP? 免费域名搭建 cloudflare 内网穿透，不限流量，不用绑卡支付_哔哩哔哩_bilibili 43&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;如果您想在外网访问家里的设备，又很难申请到公网 IP，那就必须实现内网穿透。本期视频介绍一种完全免费的内网穿透方案 &amp;mdash; 使用 Cloudflare Tunnel 实现的免费内网穿透。这种方案配置简单，没有节点数量限制，也没有流量限制。, 视频播放量 189923、弹幕量 166、点赞数 11923、投硬币枚数 2130、收藏人数 19281、转发人数 798, 视频作者技术爬爬虾, 作者简介&amp;hellip;&lt;/p&gt;
&lt;h2 id=&#34;域名购买&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-h-8&#34; &gt;&lt;/a&gt;域名购买
&lt;/h2&gt;&lt;p&gt;虽说是有很多免费二级域名可以用，但是我想要一个真正属于自己的域名，&lt;del&gt;这太酷了&lt;/del&gt;。看到 B 友们都推荐. Xyz，因为只有它的续期是真便宜，于是谷歌搜索域名购买开始对比哪家最便宜，比着比着突然发现有个对比不同商家购买同域名价格的网站：&lt;br&gt;
&lt;a class=&#34;link&#34; href=&#34;https://zh-hans.tld-list.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://zh-hans.tld-list.com/ 79&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;然后就一眼看到了 Spaceship：&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.spaceship.com/zh/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Spaceship.com&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;启动您的网站想法和未来---spaceship-52&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.spaceship.com/zh/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;启动您的网站、想法和未来 - Spaceship 52&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;一个为提供和连接域名、托管、SSL 证书、电子邮件和网络工具而构建的数字平台，并将您置于完全控制之下。&lt;/p&gt;
&lt;p&gt;目前不支持支付宝，但是可以使用 PayPal，可以试试把你的卡绑定到 PayPal 进行支付&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;. Xyz 首年 14 块！续费才 72！！！直接入手！！！&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;对内网穿透效果不满&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-h-9&#34; &gt;&lt;/a&gt;对内网穿透效果不满
&lt;/h2&gt;&lt;p&gt;折腾完内网穿透以后，那确实是能在外网直连了，但是真的 &lt;strong&gt;好卡啊&lt;/strong&gt; 。代理了也一样卡，感觉是免费的 Tunnel 有限制。&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id=&#34;入坑云服务器&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-h-10&#34; &gt;&lt;/a&gt;入坑云服务器
&lt;/h1&gt;&lt;p&gt;别的内网穿透我也懒得研究了，于是正式入坑服务器。&lt;/p&gt;
&lt;h2 id=&#34;配置要求&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-h-11&#34; &gt;&lt;/a&gt;配置要求
&lt;/h2&gt;&lt;p&gt;问了朋友部署 1 Panel + Open WebUI + New API 需要啥配置，得到 &lt;strong&gt;最起码 4 G 内存&lt;/strong&gt; 才舒服的答案（实际体验下来，4 G 虽然有很多富裕，但 2 G 那确实是有点危险了）。&lt;/p&gt;
&lt;h2 id=&#34;重要提醒&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-h-12&#34; &gt;&lt;/a&gt;重要提醒
&lt;/h2&gt;&lt;p&gt;如果你使用在国内的云服务器（是服务器位置而非云服务商位置！），在为面板或项目绑定域名时很可能会遇到问题，需要备案。&lt;/p&gt;
&lt;p&gt;如果仅供个人使用，更推荐海外云服务器。&lt;/p&gt;
&lt;h2 id=&#34;挑选云服务器&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-h-13&#34; &gt;&lt;/a&gt;挑选云服务器
&lt;/h2&gt;&lt;p&gt;开始挑服务器时，最开始是找相对熟悉的阿里云，发现都好 tm 贵啊！然后想起来朋友说腾讯云便宜点，看了眼，发现现在没优惠，还是有点划不来。吐槽后，看到群友推荐雨云，那确实是划算：&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.rainyun.com/home&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;rainyun.com&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;雨云---新一代云服务提供商-147&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.rainyun.com/home&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;雨云 - 新一代云服务提供商 147&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;欢迎来到以用户体验为优先的雨云，我们提供稳定高速的国际虚拟主机，云服务器产品，强大的功能，高效率的客户支持，简洁易用的面板，值得您的信赖&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/202410181853459.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image.png&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;也可以选港区的，更快，但是带宽比较小，而且也有点贵，不过美区这个我觉得已经很快了&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/202410181852230.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image.png&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;也可以选不限流量但是带宽变成上行 20 M，下行 30 M 的，价格一致&lt;br&gt;
绑定微信付款才 22 块，拉新人更便宜&lt;/p&gt;
&lt;p&gt;那就直接入了啊，我系统选的 &lt;strong&gt;Ubuntu 22.4&lt;/strong&gt;，面板用群友高度好评的 &lt;strong&gt;1 Panel&lt;/strong&gt;（确实好用！），这俩都是在雨云下单时如果勾选上就可以自动部署的！&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id=&#34;对服务器进行基本配置&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-h-14&#34; &gt;&lt;/a&gt;对服务器进行基本配置
&lt;/h1&gt;&lt;p&gt;以下内容基本都是自己摸索出来的，大部分不懂的东西问了 GPT-4 o、看了很多论坛和博客，还有些则问了群友。&lt;/p&gt;
&lt;p&gt;这里给佬友们直接写出具体步骤和经验教训，避免佬友们踩各种各样的坑（踩坑已浪费本人不少于 10 小时的时间）。&lt;/p&gt;
&lt;h2 id=&#34;使用-cloudflare-为你的各个项目和面板绑定好直接访问的网址提供保护&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-cloudflare-15&#34; &gt;&lt;/a&gt;使用 Cloudflare 为你的各个项目和面板绑定好直接访问的网址、提供保护
&lt;/h2&gt;&lt;p&gt;至少个人使用来看，Cloudflare 并不是减速器，配置妥当且服务器合适的话，访问由 Cloudflare 托管和保护的网站时的速度和访问国内网站的差不了多少。&lt;/p&gt;
&lt;h3 id=&#34;将域名绑定到-cloudflare&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-cloudflare-16&#34; &gt;&lt;/a&gt;将域名绑定到 Cloudflare
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;访问 &lt;a class=&#34;link&#34; href=&#34;https://www.cloudflare.com/zh-cn/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Cloudflare 18&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;点击注册&lt;/li&gt;
&lt;li&gt;点击 Free 下方的添加一个网站，&lt;/li&gt;
&lt;li&gt;完成注册流程&lt;/li&gt;
&lt;li&gt;输入你的域名&lt;/li&gt;
&lt;li&gt;点击继续&lt;/li&gt;
&lt;li&gt;按照界面提示，在你购买域名的网站那里填写上 Cloudflare 的名称服务器&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这里方法各异，但是大体上就是去域名列表选择你买的域名，在管理之类的界面里选择名称服务器（也可能叫 DNS / 自定义 DNS 等）里更改&lt;/p&gt;
&lt;ol start=&#34;8&#34;&gt;
&lt;li&gt;修改完成后，在 Cloudflare 点击继续&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;你需要等待短则 3-15 分钟，长则一天来让 Cloudflare 进行验证。如果等太久了，就先休息一下吧！&lt;/p&gt;
&lt;h3 id=&#34;在通过验证后为你将要使用的网址添加-dns-记录&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-dns-17&#34; &gt;&lt;/a&gt;在通过验证后，为你将要使用的网址添加 DNS 记录
&lt;/h3&gt;&lt;p&gt;这一步之所以这么早就做，是因为 DNS 传播存在延迟，具体时长比较玄学。还是尽早做好，别测试的时候还没传播完……&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;点击 Cloudflare 左侧列表的 DNS&lt;/li&gt;
&lt;li&gt;点击编辑，删除其他的 DNS 记录（如果存在）&lt;/li&gt;
&lt;li&gt;点击添加记录，按下面的指导填写记录：&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;类型：&lt;/strong&gt; &lt;code&gt;A&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;名称：&lt;/strong&gt; 你需要的子域名&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;假如你需要一个 &lt;code&gt;panel.你的域名.xyz&lt;/code&gt; 这样的网址来绑定你服务器上的 1 Panel 面板，那么名称就写 &lt;code&gt;panel&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;IPv 4 地址：&lt;/strong&gt; 你的服务器的 IPv 4 地址&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代理：&lt;/strong&gt; 默认开启，不用管&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;点击保存&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;由于下文中会教你部署 New API 和 Open WebUI，你可以用同样的步骤添加 &lt;code&gt;api&lt;/code&gt; 和 &lt;code&gt;chat&lt;/code&gt; 这两个子域名来为后面绑定项目做准备。&lt;/p&gt;
&lt;p&gt;如有需要，请自行添加更多 DNS 记录，以便将其绑定到你服务器上的其他项目&lt;/p&gt;
&lt;h2 id=&#34;配置-1-panel-面板&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-h-1panel-18&#34; &gt;&lt;/a&gt;配置 1 Panel 面板
&lt;/h2&gt;&lt;h3 id=&#34;先暂时以-ip--端口的形式进入面板&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-ip-19&#34; &gt;&lt;/a&gt;先暂时以 IP + 端口的形式进入面板
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;找到雨云的管理云服务器 - 服务器信息与监控 - 服务器信息 - 预安装 APP 信息界面的：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/202410181854646.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image.png&#34;
	
	
&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在浏览器地址栏输入 &lt;code&gt;http://你的服务器公网IP:面板端口/那串字符&lt;/code&gt;，访问&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;输入刚刚的面板用户和密码&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这样就进入面板了！&lt;/p&gt;
&lt;p&gt;那串字符是 1 Panel 的安全入口，不想要可以进入面板后，在面板设置 - 安全里关掉，这样以后就无需输入了，对绑定域名后用域名访问面板很友好&lt;br&gt;
我个人感觉没什么安全隐患，密码不是特别简单的话，根本没别人能登录进来&lt;/p&gt;
&lt;p&gt;如果你在使用代理程序时，用 IP 连接不上，请尝试将服务器的 IP 加入代理程序的绕过规则。&lt;/p&gt;
&lt;p&gt;如果你在使用 Clash Verge&lt;/p&gt;
&lt;p&gt;可以在订阅 - 全局扩展脚本 - 右键 - 编辑里像下面这么写，这样就不会被订阅刷新覆盖规则，且可以为每个订阅生效了！&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;//&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Define&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;main&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;script&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;entry&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;main&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;config&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;newRules&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;IP-CIDR, 你的服务器公网 IP/24,DIRECT&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;config&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;rules&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;config&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;rules&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;config&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;rules&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;unshift&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;...&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;newRules&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;config&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;修改-1-panel-面板的用户名密码服务器地址&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-h-1panel-20&#34; &gt;&lt;/a&gt;修改 1 Panel 面板的用户名、密码、服务器地址
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;点击面板侧栏里的面板设置&lt;/li&gt;
&lt;li&gt;修改面板用户和面板密码&lt;/li&gt;
&lt;li&gt;设置服务器地址为你的服务器公网 IP&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;修改服务器-ssh-端口及密钥&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-ssh-21&#34; &gt;&lt;/a&gt;修改服务器 SSH 端口及密钥
&lt;/h3&gt;&lt;p&gt;如果你使用默认的 22 号 SSH 端口，又恰巧在服务器上部署了一些热门项目，那很快你就会被几百页的陌生登录日志整无语。&lt;/p&gt;
&lt;p&gt;虽然那些不明生物在强密码的阻挡下并不能进入你的服务器，但它们只是出现在日志里我就已经无法忍受了。所以我们来改一下服务器 SSH 端口，顺便更改认证方式，增强安全性。&lt;/p&gt;
&lt;p&gt;亲测改完再没人扫我服务器了！&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;点击面板侧栏里的主机 - SSH 管理&lt;/li&gt;
&lt;li&gt;修改端口至 1024 到 65535 之间的一个数&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;为什么是 1024-65535？&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/202410181855918.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image.png&#34;
	
	
&gt;&lt;/p&gt;
&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;点击密钥信息&lt;/li&gt;
&lt;li&gt;选择加密方式：RSA&lt;/li&gt;
&lt;li&gt;输入一个相对较强的密码&lt;/li&gt;
&lt;li&gt;点击生成密钥&lt;/li&gt;
&lt;li&gt;下载并 &lt;strong&gt;妥善保存好&lt;/strong&gt; 你的密钥&lt;/li&gt;
&lt;li&gt;关闭密码认证&lt;/li&gt;
&lt;li&gt;选择 root 用户仅允许密钥登录&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;配置-1-panel-面板里的终端为后面部署项目做好准备&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-h-1panel-22&#34; &gt;&lt;/a&gt;配置 1 Panel 面板里的终端，为后面部署项目做好准备
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;点击面板侧栏里的主机 - 终端&lt;/li&gt;
&lt;li&gt;点顶栏的主机&lt;/li&gt;
&lt;li&gt;点击主机列表里 127.0.0.1 右侧的编辑&lt;/li&gt;
&lt;li&gt;选择私钥认证&lt;/li&gt;
&lt;li&gt;填写用户名 &lt;code&gt;root&lt;/code&gt;、私钥、私钥密码&lt;/li&gt;
&lt;li&gt;点击连接测试&lt;/li&gt;
&lt;li&gt;点击确认&lt;/li&gt;
&lt;li&gt;返回终端，此时就可以使用终端了！&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;（可选）用面板外部的 SSH 客户端或 VNC 连接服务器终端&lt;/p&gt;
&lt;h4 id=&#34;外部-ssh-客户端&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-ssh-23&#34; &gt;&lt;/a&gt;外部 SSH 客户端
&lt;/h4&gt;&lt;p&gt;我用的 &lt;a class=&#34;link&#34; href=&#34;https://termius.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Termius 2&lt;/a&gt;，因为你在前面已经改为 SSH 仅使用密钥登录了，所以请先在 keychain 处请安装下图这么填写：&lt;/p&gt;
&lt;p&gt;Passphrase 就是你刚刚创建密钥时填写的密码
&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/202410181856278.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image.png&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;然后在主页创建一个 New Host，按图里这么填写：&lt;br&gt;
&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/202410181856670.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image.png&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;接下来点击 Connect，稍等几秒就连接上了！&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&#34;雨云网页-vnc-连接&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-vnc-24&#34; &gt;&lt;/a&gt;雨云网页 VNC 连接
&lt;/h4&gt;&lt;p&gt;当然了，直接在雨云网页上使用 VNC 连接也是可以的，没有太大区别，就是启动稍微慢一点&lt;/p&gt;
&lt;p&gt;在雨云那里使用 VNC 进行远程连接，需要：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;等它加载出 Login 字样&lt;/li&gt;
&lt;li&gt;输入远程用户名：&lt;code&gt;root&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;按 Enter&lt;/li&gt;
&lt;li&gt;输入雨云网页写的远程密码&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;是雨云的管理云服务器 - 服务器信息与监控 - 服务器信息 - 远程连接信息界面里的，&lt;br&gt;
别和最开始 1 Panel 那个搞混了！&lt;/p&gt;
&lt;ol start=&#34;5&#34;&gt;
&lt;li&gt;按 Enter&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这样就连接上了！&lt;/p&gt;
&lt;h3 id=&#34;为你的面板配置域名访问ssl&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-ssl-25&#34; &gt;&lt;/a&gt;为你的面板配置域名访问、SSL
&lt;/h3&gt;&lt;p&gt;将服务器托管到 Cloudflare 后是无法在服务器使用脚本获取证书并自动续签的！所以你只能使用下面的方法。&lt;/p&gt;
&lt;h4 id=&#34;在-cloudflare-生成-ssl-证书保存到-1-panel-中&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-cloudflare-ssl-1panel-26&#34; &gt;&lt;/a&gt;在 Cloudflare 生成 SSL 证书，保存到 1 Panel 中
&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;在 Cloudflare 的侧栏点击 SSL/TLS&lt;/li&gt;
&lt;li&gt;选择源服务器&lt;/li&gt;
&lt;li&gt;点击创建证书&lt;/li&gt;
&lt;li&gt;证书有效期选择 15 年&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;只要你别把密钥泄露，问题不大&lt;br&gt;
不过你也可以随时来吊销泄露了的，再生成新的&lt;/p&gt;
&lt;ol start=&#34;5&#34;&gt;
&lt;li&gt;点击创建&lt;/li&gt;
&lt;li&gt;分别复制源证书、私钥，&lt;strong&gt;妥善保存&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;开启经过身份验证的源服务器拉取&lt;/li&gt;
&lt;li&gt;点击 1 Panel 面板侧栏里的网站 - 证书&lt;/li&gt;
&lt;li&gt;点击上传证书&lt;/li&gt;
&lt;li&gt;填写你的私钥、源证书&lt;/li&gt;
&lt;li&gt;点击右下角的确认&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&#34;在-cloudflare-中先设定好-origin-rules-以准备将面板域名请求自动重写到-1-panel-端口&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-cloudflare-origin-rules-1panel-27&#34; &gt;&lt;/a&gt;在 Cloudflare 中先设定好 Origin Rules 以准备将面板域名请求自动重写到 1 Panel 端口
&lt;/h4&gt;&lt;p&gt;请注意，这里我默认你在前文指引下已关闭安全入口，否则你接下来的每次访问还需要手动在域名的后面加上安全入口！&lt;br&gt;
当然，你可以使用 Cloudflare 的设置去做到自动重定向到安全入口，但是这样就没有任何意义了啊！所有人访问都可以自动重定向到安全入口了……&lt;br&gt;
你要是说再给重定向规则加上 IP、UA 啥的…… 嗯…… 如果你有那个耐心的话……&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在 Cloudflare 的侧栏点击规则 - Origin Rules&lt;/li&gt;
&lt;li&gt;点击创建规则，按下面的指导填写内容：&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;规则名称：&lt;/strong&gt; 以你能记住这条规则是干啥的为准，我写的 Panel&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;字段：&lt;/strong&gt; 选择然后下滑，找到并使用主机名&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;运算符：&lt;/strong&gt; 等于&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;值：&lt;/strong&gt; &lt;code&gt;panel.你的域名.xyz&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;panel&lt;/code&gt; 可以换成别的，具体取决于你之前在 Cloudflare 那里为 1 Panel 添加了怎样的 DNS 记录&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;目标端口：&lt;/strong&gt; 选择重写到面板端口号&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;点击保存&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&#34;在-1-panel-设置-ssl绑定域名&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-h-1panel-ssl-28&#34; &gt;&lt;/a&gt;在 1 Panel 设置 SSL、绑定域名
&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;点击 1 Panel 面板侧栏里的面板设置&lt;/li&gt;
&lt;li&gt;点击顶栏里的安全&lt;/li&gt;
&lt;li&gt;开启 SSL&lt;/li&gt;
&lt;li&gt;证书类型选择选择已有&lt;/li&gt;
&lt;li&gt;选择刚刚上传的证书&lt;/li&gt;
&lt;li&gt;点击右下角的确认&lt;/li&gt;
&lt;li&gt;重启面板后再在同样的位置选择域名绑定&lt;/li&gt;
&lt;li&gt;填写你在 Origin Rules 处填写的域名 &lt;code&gt;panel.你的域名.xyz&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;点击右下角的确认&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&#34;在-cloudflare-中将-ssltls-加密模式改为完全严格并修改一些其他设置&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-cloudflare-ssltls-29&#34; &gt;&lt;/a&gt;在 Cloudflare 中将 SSL/TLS 加密模式改为完全（严格），并修改一些其他设置
&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;在 Cloudflare 的侧栏点击 SSL/TLS&lt;/li&gt;
&lt;li&gt;选择完全（严格）&lt;/li&gt;
&lt;li&gt;在侧栏点击边缘证书&lt;/li&gt;
&lt;li&gt;开启下列选项&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;始终使用 HTTPS&lt;/li&gt;
&lt;li&gt;随机加密&lt;/li&gt;
&lt;li&gt;TLS 1.3&lt;/li&gt;
&lt;li&gt;自动 HTTPS 重写&lt;/li&gt;
&lt;li&gt;证书透明度监视&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;你可能会发现 Cloudflare 还有其他很多设置，但是我不建议你开启，因为我逝过了，很多东西会造成意料之外的后果……&lt;/p&gt;
&lt;p&gt;比如，如果开启侧栏的安全性 - 自动程序里的自动程序攻击模式、阻止 AI 爬虫程序和爬网程序，那么 New API 可能无法正常被调用、Open WebUI 可能无法拉取 New API 的模型列表……&lt;/p&gt;
&lt;h3 id=&#34;服务器基础配置-完成&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-h-30&#34; &gt;&lt;/a&gt;服务器基础配置…… 完成！
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;不出意外，你现在可以通过 &lt;code&gt;panel.你的域名.xyz&lt;/code&gt; 直接以 HTTPS 的方式访问你的面板了！&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;恭喜你！&lt;/strong&gt; 这已经是一个非常具有意义的里程碑了！因为相当多的人都无法为自己的网站正确配置 HTTPS，而你已经学会了！&lt;/p&gt;
&lt;p&gt;如果你确实怎么都配置不好，一直遇到 525 SSL 握手失败的错误，请先在外部 SSH 终端连接服务器，输入 &lt;code&gt;1pctl reset domain&lt;/code&gt; 以取消面板域名绑定，然后继续阅读下文，并为面板使用与其他项目一样的 OpenResty 配置反代和 SSL&lt;br&gt;
请勿关闭 1 Panel 面板安全设置中的 SSL！OpenResty 和 1 Panel 面板安全设置中的 SSL 需要同时开启，且使用同一个证书，否则你会遇到错误！&lt;/p&gt;
&lt;p&gt;不过，为你服务器上的项目的网站配置端口重定向就不需要 Cloudflare 的 Origin Rules 了，有更简单的方法供你使用，让我们继续剩下的旅程吧！&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id=&#34;部署项目&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-h-31&#34; &gt;&lt;/a&gt;部署项目
&lt;/h1&gt;&lt;h2 id=&#34;使用-1-panel-应用商店一键部署-openresty为接下来部署项目的网站提供支持&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-h-1panel-openresty-32&#34; &gt;&lt;/a&gt;使用 1 Panel 应用商店一键部署 OpenResty，为接下来部署项目的网站提供支持
&lt;/h2&gt;&lt;p&gt;1 Panel 面板在应用商店里为你提供了许多的高质量热门项目的一键部署功能。&lt;/p&gt;
&lt;p&gt;虽然很方便，但是这里面的镜像都由 1 Panel 维护，你很可能遇到非常喜欢的项目迎来了重大更新，但是 1 Panel 应用商店里的镜像并没有更新的尴尬情况……&lt;/p&gt;
&lt;p&gt;1 Panel 的确有第三方应用商店，不过并不能缓解上面所说的这种情况，它们只能为你提供更多项目的一键安装功能。&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/okxlin/appstore&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;github.com&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;github---okxlinappstore-1panel-应用商店的非官方应用适配库-1panel-store-unofficial-app&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/okxlin/appstore&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub - okxlin/appstore: 1Panel 应用商店的非官方应用适配库 1Panel Store Unofficial App&amp;hellip; 19&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;1 Panel 应用商店的非官方应用适配库 1 Panel Store Unofficial App Adaptation Repository (&lt;a class=&#34;link&#34; href=&#34;https://t.me/dockerapps&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://t.me/dockerapps&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;所以，个人认为，&lt;strong&gt;如果你要使用应用商店一键部署项目，请确保你对这个项目的需求仅限于玩玩，或只是为面板 / 服务器提供基础功能支持&lt;/strong&gt;，别让更新速度给你带来糟糕的体验……&lt;/p&gt;
&lt;p&gt;这里，我们需要使用的 &lt;strong&gt;OpenResty&lt;/strong&gt; 正符合以上特点，所以直接在应用商店里找到它，一键部署！&lt;/p&gt;
&lt;p&gt;接下来，我们先使用终端部署项目，稍后就会用到 OpenResty 为我们的项目设置反代、SSL。&lt;/p&gt;
&lt;h2 id=&#34;new-api-1&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-new-api-33&#34; &gt;&lt;/a&gt;New API
&lt;/h2&gt;&lt;h3 id=&#34;使用终端部署-new-api&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-new-api-34&#34; &gt;&lt;/a&gt;使用终端部署 New API
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;打开面板侧栏的主机 - 终端&lt;/li&gt;
&lt;li&gt;按 Ctrl+Shift+V 粘贴下面的命令，按 Enter 发送，以创建一个目录来保存 New API 的数据，这样数据就不会在项目更新后丢失了！&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo mkdir -p /opt/1panel/apps/new-api/data
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;按 Ctrl+Shift+V 粘贴下面的命令，按 Enter 发送，以在 4000 端口上部署 New API（使用 SQLite，项目推荐，省事）&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run --name new-api -d --restart always -p 4000:3000 \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -e TZ=Asia/Shanghai \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -v /opt/1panel/apps/new-api/data:/data \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  calciumion/new-api:latest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;端口用哪个还是看大家的个人想法，别与其他服务重复就好！&lt;br&gt;
推荐使用 1024 到 49151 之间的一个端口，原因可见前文中 “为什么是 1024-65535？” 的 GPT-4 o 回答截图&lt;/p&gt;
&lt;h3 id=&#34;使用-openresty-为-new-api-配置反向代理以使其可使用域名访问&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-openresty-new-api-35&#34; &gt;&lt;/a&gt;使用 OpenResty 为 New API 配置反向代理以使其可使用域名访问
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;点击面板侧栏的网站 - 网站&lt;/li&gt;
&lt;li&gt;选择顶栏里的反向代理&lt;/li&gt;
&lt;li&gt;在主域名处填写 &lt;code&gt;api.你的域名.xyz&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;code&gt;api&lt;/code&gt; 可以换成别的，具体取决于你之前在 Cloudflare 那里为 New API 添加了怎样的 DNS 记录&lt;/p&gt;
&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;在代理地址处填写 &lt;code&gt;127.0.0.1:4000&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;点击右下角的确认&lt;/li&gt;
&lt;li&gt;点击 &lt;code&gt;api.你的域名.xyz&lt;/code&gt; 右侧的配置&lt;/li&gt;
&lt;li&gt;点击 HTTPS&lt;/li&gt;
&lt;li&gt;点击启用 HTTPS&lt;/li&gt;
&lt;li&gt;设置 SSL 选项为选择已有证书&lt;/li&gt;
&lt;li&gt;设置证书为你之前导入的那个证书&lt;/li&gt;
&lt;li&gt;点击左下角的保存&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;现在不出意外的话，你已经可以使用 &lt;code&gt;api.你的域名.xyz&lt;/code&gt; 以 HTTPS 访问你的 New API 了！&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;但是千万别停下！赶快向下继续看，修改你的 New API 密码、关闭注册！不然你会被人白嫖 API 的！&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;new-api-基础设置&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-new-api-36&#34; &gt;&lt;/a&gt;New API 基础设置
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;登录 &lt;code&gt;root&lt;/code&gt; 用户，输入密码 &lt;code&gt;123456&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;按照页面指引，修改你的个人信息，&lt;strong&gt;一定要使用强密码！！！&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;点击侧栏的设置&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;点击顶栏的系统设置&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;将服务器地址改为 &lt;code&gt;https://api.你的域名.xyz&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;点击更新服务器地址&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;向下滑，找到配置登录注册，把里面的东西改成这样：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/202410181857171.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;点击保存邮箱域名白名单设置&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;现在，你的 New API 安全了。&lt;/p&gt;
&lt;p&gt;让我们继续吧！&lt;/p&gt;
&lt;h3 id=&#34;new-api-渠道配置&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-new-api-37&#34; &gt;&lt;/a&gt;New API 渠道配置
&lt;/h3&gt;&lt;p&gt;我没提到的一律不用管，保持默认设置即可，那些对于个人使用没什么用。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;点击侧栏的渠道&lt;/li&gt;
&lt;li&gt;点击添加渠道&lt;/li&gt;
&lt;li&gt;为渠道命名，也就是填写你接下来要处理的 Key 的来源&lt;/li&gt;
&lt;li&gt;在代理处填写 API 的调用地址，如 &lt;code&gt;https://api.example.com&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;不要多填，末尾也不要有斜杠&lt;/p&gt;
&lt;ol start=&#34;5&#34;&gt;
&lt;li&gt;在密钥处填写你的 Key&lt;/li&gt;
&lt;li&gt;点击清除所有模型&lt;/li&gt;
&lt;li&gt;点击获取模型列表&lt;/li&gt;
&lt;li&gt;删除多余模型，使列表里只剩下你需要的模型&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这一步是可选的，但我建议你这么做，因为这能使你在 Open WebUI 这种会扫描 API 模型列表的项目中只获取需要使用的模型，减少翻找列表的麻烦&lt;br&gt;
请务必保留 &lt;code&gt;text-embedding-3-small&lt;/code&gt; 和 &lt;code&gt;text-embedding-3-large&lt;/code&gt; ，否则后续你将无法通过 OpenAI API 中的它们来使用基于 RAG 的各种功能&lt;/p&gt;
&lt;ol start=&#34;9&#34;&gt;
&lt;li&gt;按下面的格式设置模型重定向，左侧为你想在 API 调用时填写的模型，右侧填实际被调用的模型，注意最后一行末尾是不能有英文逗号的，而其他行需要。&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;claude-3-opus-gcp&amp;#34;: &amp;#34;claude-3-opus&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;claude-3-5-sonnet-gcp&amp;#34;: &amp;#34;claude-3-5-sonnet&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这一步也是可选的，主要用于解决无法调用多个渠道的同名模型的问题，以及 Cursor 那种调用 claude-3-5-sonnet 会自动发往 Anthropic API 而非自定义 OpenAI API 的问题&lt;br&gt;
&lt;strong&gt;如果你还打算运营你的 API 服务，请做一个诚实的人，不要为用户提供虚假模型……&lt;/strong&gt;&lt;/p&gt;
&lt;ol start=&#34;10&#34;&gt;
&lt;li&gt;点击提交&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果你还有其他渠道，就按照这个步骤做即可。&lt;/p&gt;
&lt;h3 id=&#34;创建-new-api-令牌&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-new-api-38&#34; &gt;&lt;/a&gt;创建 New API 令牌
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;点击侧栏的令牌&lt;/li&gt;
&lt;li&gt;点击添加令牌&lt;/li&gt;
&lt;li&gt;输入你想要的令牌名称&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如无特殊需求，你就只需要一个令牌，名称可以随便填&lt;/p&gt;
&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;为了个人使用方便，点击永不过期和设为无限额度&lt;/li&gt;
&lt;li&gt;点击提交&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;什么你是-api-大户new-api-默认给账户设定的-200-额度不够你用&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-api-new-api-200-39&#34; &gt;&lt;/a&gt;什么？你是 API 大户？New API 默认给账户设定的 200$ 额度不够你用？
&lt;/h3&gt;&lt;p&gt;这就教你给自己改个 1000000000.00$ 额度！&lt;/p&gt;
&lt;p&gt;温馨提示：这个额度仅仅是 New API 允许你的账户花费的额度，不代表你的渠道真实余额&lt;br&gt;
&lt;em&gt;“如果真能提出来就好了…”&lt;/em&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;点击侧栏的用户管理&lt;/li&gt;
&lt;li&gt;点击你的账户右侧的编辑&lt;/li&gt;
&lt;li&gt;将剩余额度改为 &lt;code&gt;499999999999999&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;点击提交&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;new-api-配置完成它已经可以被调用了&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-new-api-40&#34; &gt;&lt;/a&gt;New API 配置完成，它已经可以被调用了！
&lt;/h2&gt;&lt;p&gt;至此，你的 New API 配置就完成了！&lt;/p&gt;
&lt;p&gt;调用它的时候就跟调用其他中转 API 一样，使用下面这种地址作为自定义 OpenAI API 地址即可，具体用哪个取决于项目说明：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;https://api.你的域名.xyz/v1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;https://api.你的域名.xyz&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;api.你的域名.xyz&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;…&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;接下来，让我们开始部署 Open WebUI 吧！&lt;/p&gt;
&lt;h2 id=&#34;open-webui-1&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-open-webui-41&#34; &gt;&lt;/a&gt;Open WebUI
&lt;/h2&gt;&lt;p&gt;这个简单，如果你只是需要能聊个天、服务器保存聊天数据以多端同步，就没有多少需要设置的，至于更复杂的 “工具” 调用、使用 “函数” 自定义你的体验…… 我后续可能会专门出帖子去介绍。&lt;/p&gt;
&lt;p&gt;不过，Infinite Search For Open WebUI 的后续帖子是肯定会有的！&lt;/p&gt;
&lt;p&gt;最近比较忙，加上上个版本的 Open WebUI 有点小问题，就暂时弄别的东西了。而新版似乎已经修复了 bug，我有空就会继续研究的！一定不辜负佬友们的期待！&lt;/p&gt;
&lt;h3 id=&#34;使用终端部署-open-webui&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-open-webui-42&#34; &gt;&lt;/a&gt;使用终端部署 Open WebUI
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;打开面板侧栏的主机 - 终端&lt;/li&gt;
&lt;li&gt;按 Ctrl+Shift+V 粘贴下面的命令，按 Enter 发送，以创建一个目录来保存 Open WebUI 的数据，这样数据就不会在项目更新后丢失了！&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo mkdir -p /opt/1panel/apps/open-webui/data
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;按 Ctrl+Shift+V 粘贴下面的命令，按 Enter 发送，以在 3000 端口上部署 Open WebUI&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -d -p 3000:8080 \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -v /opt/1panel/apps/open-webui/data:/app/backend/data \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --name open-webui \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --restart always \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  ghcr.io/open-webui/open-webui:main
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;端口用哪个还是看大家的个人想法，别与其他服务重复就好！&lt;br&gt;
推荐使用 1024 到 49151 之间的一个端口，原因可见前文中 “为什么是 1024-65535？” 的 GPT-4 o 回答截图&lt;/p&gt;
&lt;h3 id=&#34;使用-openresty-为-open-webui-配置反向代理以使其可使用域名访问&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-openresty-open-webui-43&#34; &gt;&lt;/a&gt;使用 OpenResty 为 Open WebUI 配置反向代理以使其可使用域名访问
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;点击面板侧栏的网站 - 网站&lt;/li&gt;
&lt;li&gt;选择顶栏里的反向代理&lt;/li&gt;
&lt;li&gt;在主域名处填写 &lt;code&gt;chat. 你的域名.xyz&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;code&gt;chat&lt;/code&gt; 可以换成别的，具体取决于你之前在 Cloudflare 那里为 OpenWebUI 添加了怎样的 DNS 记录&lt;/p&gt;
&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;在代理地址处填写 &lt;code&gt;127.0.0.1:3000&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;点击右下角的确认&lt;/li&gt;
&lt;li&gt;点击 &lt;code&gt;chat.你的域名.xyz&lt;/code&gt; 右侧的配置&lt;/li&gt;
&lt;li&gt;点击 HTTPS&lt;/li&gt;
&lt;li&gt;点击启用 HTTPS&lt;/li&gt;
&lt;li&gt;设置 SSL 选项为选择已有证书&lt;/li&gt;
&lt;li&gt;设置证书为你之前导入的那个证书&lt;/li&gt;
&lt;li&gt;点击左下角的保存&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;现在不出意外的话，你已经可以使用 &lt;code&gt;chat.你的域名.xyz&lt;/code&gt; 以 HTTPS 访问你的 Open WebUI 了！&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;但是千万别停下！赶快向下继续看，注册管理员账号并关闭系统的新用户注册！不然你会被人白嫖 API 的！&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;open-webui-基础设置&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-open-webui-44&#34; &gt;&lt;/a&gt;Open WebUI 基础设置
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;输入要注册的账号信息，&lt;strong&gt;一定要使用强密码！！！&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;你是第一个注册的用户，会被设置为系统管理员&lt;br&gt;
有注册流程是因为 Open WebUI 支持多用户使用，但实际上所有账户相关数据都仅仅保存在你自己的服务器上，不会发往其他地方&lt;/p&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;点击右上角头像&lt;/li&gt;
&lt;li&gt;点击管理员面板&lt;/li&gt;
&lt;li&gt;点击顶栏的设置&lt;/li&gt;
&lt;li&gt;关闭通用里面的所有设置&lt;/li&gt;
&lt;li&gt;点击右下角的保存&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;为-open-webui-设置-openai-api-地址和-key&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-open-webui-openai-api-key-45&#34; &gt;&lt;/a&gt;为 Open WebUI 设置 OpenAI API 地址和 Key
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;点击管理员面板 - 设置的外部连接&lt;/li&gt;
&lt;li&gt;设置 OpenAI API 地址&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;方法一：&lt;/strong&gt; 直接使用 New API 的外部地址&lt;br&gt;
填写 OpenAI API 地址为 &lt;code&gt;https://api.你的域名.xyz/v1&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;感谢 &lt;a class=&#34;link&#34; href=&#34;https://blog.ccino.org/u/dzdz233&#34; &gt;@dzdz233&lt;/a&gt; 大佬在评论区中的&lt;a class=&#34;link&#34; href=&#34;https://linux.do/t/topic/188813/95&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;建议&lt;/a&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;方法二：&lt;/strong&gt; 如果你在同一个服务器内部署 New API 和 Open WebUI，可使用 Docker Bridge（延迟更低，推荐）
&lt;ol&gt;
&lt;li&gt;打开面板侧栏的容器&lt;/li&gt;
&lt;li&gt;选择 &lt;code&gt;new-api&lt;/code&gt; 和 &lt;code&gt;open-webui&lt;/code&gt; 右侧的更多 - 编辑&lt;/li&gt;
&lt;li&gt;将网络均改为 1 panel-network&lt;/li&gt;
&lt;li&gt;IPv 4 删空（系统会自动重新分配空余的）&lt;/li&gt;
&lt;li&gt;点击右下角的确认&lt;/li&gt;
&lt;li&gt;设置 OpenAI API 地址为 &lt;code&gt;http://new-api:3000/v1&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;为什么使用 &lt;code&gt;3000&lt;/code&gt; 端口而不是 &lt;code&gt;4000&lt;/code&gt; 端口
&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/202410181859243.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image.png&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://linux.do/uploads/default/original/3X/f/5/f5304fbc9c7c2a34ada0c420373887ea42f60997.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;填写你的 New API 的 Key&lt;/li&gt;
&lt;li&gt;点击刷新按钮验证连通性&lt;/li&gt;
&lt;li&gt;关闭 Ollama API，它会让你的网页变卡，且你用不到它&lt;/li&gt;
&lt;li&gt;如果一切无误，点击保存&lt;/li&gt;
&lt;li&gt;点击管理员面板 - 设置的文档&lt;/li&gt;
&lt;li&gt;语义向量模型引擎右侧的选项框选择 OpenAI&lt;/li&gt;
&lt;li&gt;修改 OpenAI API 相关信息&lt;/li&gt;
&lt;li&gt;为语义向量模型填入 &lt;code&gt;text-embedding-3-small&lt;/code&gt; 和 &lt;code&gt;text-embedding-3-large&lt;/code&gt; 中的一个&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;我觉得 &lt;code&gt;small&lt;/code&gt; 就够用了&lt;/p&gt;
&lt;ol start=&#34;11&#34;&gt;
&lt;li&gt;将 &lt;code&gt;嵌入层批处理大小&lt;/code&gt; 拉满到 OpenAI API 支持的最高值 2048 以获得和官网同款的最高质量索引体验和速度&lt;/li&gt;
&lt;li&gt;点击右下角的保存&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;open-webui-的一些其他设置&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-open-webui-46&#34; &gt;&lt;/a&gt;Open WebUI 的一些其他设置
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;点击管理员面板 - 设置的界面&lt;/li&gt;
&lt;li&gt;把默认提示词建议全点叉叉删了&lt;/li&gt;
&lt;li&gt;设置外部模型为 &lt;code&gt;gpt-4o-mini&lt;/code&gt; 或者 &lt;code&gt;claude-3-hiaku&lt;/code&gt; &lt;code&gt;deepseek-chat&lt;/code&gt; 这种便宜且智能的模型&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;温馨提示：&lt;code&gt;gpt-4o-mini&lt;/code&gt; 比 &lt;code&gt;gpt-3-5-turbo&lt;/code&gt; 强很多，并且更便宜&lt;/p&gt;
&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;点击左下角头像&lt;/li&gt;
&lt;li&gt;点击设置&lt;/li&gt;
&lt;li&gt;点击界面&lt;/li&gt;
&lt;li&gt;在默认模型处选择你想要的默认模型，它将会自动在每个新对话中使用&lt;/li&gt;
&lt;li&gt;点击保存&lt;/li&gt;
&lt;li&gt;点击账号&lt;/li&gt;
&lt;li&gt;按你的喜欢修改头像和昵称&lt;/li&gt;
&lt;li&gt;点击保存&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;为-open-webui-添加最大消息轮数功能&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-open-webui-47&#34; &gt;&lt;/a&gt;为 Open WebUI 添加最大消息轮数功能
&lt;/h3&gt;&lt;p&gt;“函数” 是 Open WebUI 的一个特色功能，它允许你按照规范撰写脚本，自定义你的使用体验。&lt;/p&gt;
&lt;p&gt;Context Clip Filter 便是其一，它允许你设置每个对话的一次请求中最多包含多少轮的消息，超出设定的消息不会被发送，可以有效减少不必要的 token 消耗。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;访问下面的网址&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://openwebui.com/f/hub/context_clip_filter&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Open WebUI&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;context-clip-filter-function--open-webui-community-71&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://openwebui.com/f/hub/context_clip_filter&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Context Clip Filter Function | Open WebUI Community 71&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Context Clip Filter Function | Open WebUI Community - A filter that truncates chat history to retain the latest messages while preserving the system prompt for optimal context management.&lt;/p&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;点击 Get&lt;/li&gt;
&lt;li&gt;输入你的 Open WebUI 地址 &lt;code&gt;https://chat.你的域名.xyz&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;点击 Import to WebUI&lt;/li&gt;
&lt;li&gt;点击右下角的保存&lt;/li&gt;
&lt;li&gt;如有提示，请确认，这个函数由官方制作，没问题的。&lt;/li&gt;
&lt;li&gt;按下图设置这个函数&lt;br&gt;
&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/202410181900923.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image.png&#34;
	
	
&gt;&lt;/li&gt;
&lt;li&gt;点击设置按钮，按下图填写最大轮数（修改 16 为你想要的值）&lt;br&gt;
&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/202410181901985.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image.png&#34;
	
	
&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;可选创建-open-webui-自定义模型以为对话使用特定的系统提示词&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-open-webui-48&#34; &gt;&lt;/a&gt;（可选）创建 Open WebUI 自定义模型以为对话使用特定的系统提示词
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;点击工作空间&lt;/li&gt;
&lt;li&gt;点击创建一个新模型&lt;/li&gt;
&lt;li&gt;按照界面提示进行设定&lt;/li&gt;
&lt;li&gt;点击保存&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;现在，可以尽情享受你的 Open WebUI 了！&lt;/p&gt;
&lt;h2 id=&#34;修改从终端直接安装的项目的参数时需要更改的设置&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-h-49&#34; &gt;&lt;/a&gt;修改从终端直接安装的项目的参数时，需要更改的设置
&lt;/h2&gt;&lt;p&gt;不改会报错，我也不知道为什么会存在这种问题，但是我有解决方案（）&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打开面板侧栏的容器&lt;/li&gt;
&lt;li&gt;选择你从终端直接安装的项目右侧的更多 - 编辑&lt;/li&gt;
&lt;li&gt;将网络改为 1 panel-network&lt;/li&gt;
&lt;li&gt;IPv 4 删空（系统会自动重新分配空余的）&lt;/li&gt;
&lt;li&gt;点击右下角的确认&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;对从终端直接安装的项目进行升级&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-h-50&#34; &gt;&lt;/a&gt;对从终端直接安装的项目进行升级
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;打开面板侧栏的容器&lt;/li&gt;
&lt;li&gt;选择你从终端直接安装的项目右侧的更多 - 升级&lt;/li&gt;
&lt;li&gt;勾选强制拉取镜像&lt;/li&gt;
&lt;li&gt;点击右下角的确认&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h1 id=&#34;尾声&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#p-1632733-h-51&#34; &gt;&lt;/a&gt;尾声
&lt;/h1&gt;&lt;p&gt;非常感谢你认真看到了这里，写这篇教程花费了我好几天的时间。如果对你有帮助，就请给我一个赞吧！&lt;/p&gt;
&lt;p&gt;哦对了！我还为此和 GPT-4 o、Claude 3.5 Sonnet 一起做了个 ChatBox 聊天记录转 Open WebUI 格式的开源工具，方便你从轻量化的 ChatBox 无缝转移到更加强大的 Open WebUI！&lt;/p&gt;
&lt;p&gt;按照页面提示即可轻松转换 ChatBox 导出文件，将转换后的文件导入 Open WebUI，最终效果就像那些对话本就来自 Open WebUI 一样！&lt;/p&gt;
&lt;p&gt;这是一个纯前端网页，访问链接即可使用，不会上传你的任何数据，一切均在你的浏览器本地进处理！&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://cooksleep.github.io/ChatBox2OpenWebUI/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ChatBox to Open WebUI 163&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;如果能够帮到你的话，也请点击 GItHub 链接，在项目主页给我个 Star 吧！&lt;/p&gt;
&lt;p&gt;本文出自：&lt;a class=&#34;link&#34; href=&#34;https://linux.do/t/topic/188813&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;\[超详细教学\] 教你从零开始，入坑域名、云服务器并部署 New API + Open WebUI！ - 资源荟萃 - LINUX DO&lt;/a&gt;
请注意时效，原贴还在更新！&lt;/p&gt;
</description>
        </item>
        <item>
        <title>谷歌科学家万字长文：《改变你职业生涯的一篇文章，我如何运用人工智能完成工作》建议每个人都要读一遍</title>
        <link>https://blog.ccino.org/p/how-i-use-artificial-intelligence-to-get-my-job-done-is-recommended-for-everyone-to-read/</link>
        <pubDate>Tue, 15 Oct 2024 21:15:15 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/how-i-use-artificial-intelligence-to-get-my-job-done-is-recommended-for-everyone-to-read/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/how-i-use-artificial-intelligence-to-get-my-job-done-is-recommended-for-everyone-to-read/how%20I%20use%20artificial%20intelligence%20to%20get%20my%20job%20done%20is%20recommended%20for%20everyone%20to%20read.png" alt="Featured image of post 谷歌科学家万字长文：《改变你职业生涯的一篇文章，我如何运用人工智能完成工作》建议每个人都要读一遍" /&gt;&lt;p&gt;在当今科技界, 关于人工智能是否被过度炒作的争论从未停息。然而, 很少有像谷歌 DeepMind 的安全研究专家和机器学习科学家 Nicholas Carlini 这样的专家，用亲身经历为我们提供了一个独特的视角。通过他的文章, 我们看到了大型语言模型 (LLM) 在实际应用中的强大能力和多样性。这些并非空洞的营销宣传, 而是切实可以改变工作方式、提高生产效率、激发创意的工具。&lt;/p&gt;
&lt;p&gt;最近, Carlini 本人亲自撰写了一篇长达万字的文章, 详细介绍了他如何在日常生活和工作中使用 AI。这篇洞察力十足的文章不仅展示了 AI 技术的广泛应用, 更让我们得以一窥未来科技将如何重塑我们的生活方式。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/202410152117121.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;Carlini 在文章中列举了 50 个他亲身使用 AI 的实例, 涵盖了工作效率、创意写作、编程辅助等多个方面。然而, 令人惊讶的是, 这 50 个例子仅仅是他所有 AI 应用场景的冰山一角 - 据他估计, 不到他实际使用情况的 2%。这一变革令人震撼, 它不仅体现了 AI 技术的深度和广度, 更凸显了我们可能还未充分认识到 AI 的潜力。&lt;/p&gt;
&lt;p&gt;事实上, Carlini 的经历可能预示着一个更广泛的趋势: 随着 AI 技术的不断进步和普及, 我们可能正站在一个技术革命的风口浪尖。就像个人电脑和互联网彻底改变了我们的生活和工作方式一样, AI 可能会成为下一个推动社会变革的关键力量。&lt;/p&gt;
&lt;p&gt;那么, 面对这样的前景, 我们应该如何看待 AI 技术的发展呢? 是抱有审慎的态度, 还是积极拥抱变革?&lt;/p&gt;
&lt;h2 id=&#34;原文如下&#34;&gt;原文如下：
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;作者：DeepMind 安全研究专家和机器学习科学家 Nicholas Carlini&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;我不认为 “人工智能” 模型（我指的是大型语言模型）被过度炒作了。&lt;/p&gt;
&lt;p&gt;确实，任何新技术都会吸引骗子。许多公司喜欢说他们在 “使用人工智能”，就像他们以前声称自己依靠“区块链” 一样。（正如我们一次又一次看到的那样）同样，我们可能正处于一个泡沫中。互联网在 2000 年泡沫破裂，但我们现在拥有的互联网应用，曾是科幻小说中的东西。&lt;/p&gt;
&lt;p&gt;但我认为最近我们取得的进展不仅仅是炒作的原因是，过去一年中，我每周至少花几个小时与各种大型语言模型互动，并且对它们解决我给出的越来越困难的任务的能力印象深刻。因此，我可以说，这些模型使我在编写代码方面的速度提高了至少 50%，无论是研究项目还是个人的编程副业。&lt;/p&gt;
&lt;p&gt;我在网上找到的大多数谈论 LLM 实用性的人要么过于乐观，声称所有工作将在三年内自动化，要么极度悲观，认为它们没有任何贡献，永远也不会有。&lt;/p&gt;
&lt;p&gt;所以在这篇文章中，我只是想让讨论更加实际。我不会对未来进行任何论断。我只想列出一个列表，这是我（一名研究机器学习的程序员和研究科学家）与不同的大型语言模型进行的 50 次对话，这些对话显著提高了我进行研究的能力，并帮助我从事随机的编程副项目。其中包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;使用我之前从未使用过的技术构建整个网络应用程序。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;教我如何使用各种框架，尽管我之前从未使用过它们。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;将几十个程序转换为 C 或 Rust 以提高 10-100 倍的性能。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;精简大型代码库，显著简化项目。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;为我在过去一年中撰写的几乎每一篇研究论文编写初始实验代码。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;自动化几乎所有单调的任务或一次性脚本。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;几乎完全取代了帮助我设置和配置新软件包或项目的网络搜索。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在帮助我调试错误信息方面，网络搜索的替代率约为 50%。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果对这些应用实例进行分类，它们&lt;strong&gt;大致可以分为 “辅助学习” 和“自动化日常琐事”两类。前者对我来说至关重要，因为它让我能够轻松应对之前觉得有难度的任务；后者同样重要，因为它使我能集中精力去做我最擅长的事，解决真正的难题。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;关键是，这些例子展示的是我如何实际利用大型语言模型（LLMs）的。它们并不旨在炫耀技术的惊人能力，而是基于我解决工作需求的实际情况。这意味着，这些例子或许看起来不够引人注目，但实际上，我日常工作的很大一部分也都是平凡无奇的，而现今可用的 LLMs 几乎帮我自动化了所有这些工作。&lt;/p&gt;
&lt;p&gt;通过这篇文章，我的目的是用一个接一个的实例，向你展示我在过去一年如何有效利用 LLMs 提升工作效率，直到你感到有些疲惫为止。要知道，尽管你可能已经看过不少例子，但实际上我所展示的，还不到我利用 LLMs 的总数的 2%。&lt;/p&gt;
&lt;h2 id=&#34;细微差别&#34;&gt;细微差别
&lt;/h2&gt;&lt;p&gt;如果说互联网处理得不尽如人意的是什么，那一定是对细节的把握。我绝不认为现今的大型语言模型（LLMs）能够主宰世界，也不打算讨论未来的模型能做什么，不能做什么。我只想探讨，现阶段的模型对我是否真的有用。&lt;/p&gt;
&lt;p&gt;你可能会问，为什么还需要一篇文章来证明语言模型的用途呢？这难道不是显而易见的事实吗？但事实上，无论是在学术界、软件工程领域还是媒体行业，都有不少人声称 LLMs 毫无用处，只是一时的炒作，几年后将默默无闻，对世界没有任何影响。我要反驳这些观点，因为目前的 LLMs 已经证明了它们的实用性。&lt;/p&gt;
&lt;p&gt;但同时，我也需要说明，另有一批声音同样强烈的人士持相反观点，他们认为现有模型能够取代所有程序员，人们不应再学习编程，因为不久后大家都将面临失业。虽然反驳这些观点不是本文的主旨，但我必须明确，我并不支持这种极端的看法。&lt;/p&gt;
&lt;p&gt;此外，我也不会主张 “目的正当化手段”，即便这些模型的训练确实存在诸多负面影响，我不认为应当因此而推广使用。&lt;/p&gt;
&lt;p&gt;我充分意识到这些模型可能带来的负面后果，这些后果可能非常严重，包括但不限于散布错误信息、滥用、监控以及取代工作岗位（甚至有人担忧到人类灭绝的地步）。我将在不久的将来撰写一篇文章，深入探讨 LLMs 可能引发的危害，届时会在此放上链接。然而，这与语言模型是否有用的讨论是两码事——这正是我此处想要探讨的问题。&lt;/p&gt;
&lt;p&gt;我也清楚你可能因为语言模型偏向于生成不准确的信息、重复已知事实、在面对复杂情况时可能彻底失败的倾向而不愿使用它们——可能我对这些局限性的了解比你更深。但本文不会讨论这些。因为我认为，尽管有这些不足，模型仍然是有用的。&lt;/p&gt;
&lt;p&gt;此外，我也深知培训这些模型所涉及的伦理问题极具争议。你可能不赞成在未经许可的情况下使用人们的数据来训练它们（我对此的理解可能比你更深刻）。或许你关注的是那些为直接训练这些模型而获得微薄报酬的人。我承认这些都是问题，但本文也不打算讨论这些。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;正如我已经多次强调的：我在这里讨论的，仅仅是这些模型在当前状态下是否实际有用。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;我的背景简介&#34;&gt;我的背景简介
&lt;/h2&gt;&lt;p&gt;通常，我不是那种轻易相信任何事物的人。比如，尽管我经历了十年前信息安全界的加密货币热潮，我却从未参与撰写任何关于区块链的研究论文。我也从未拥有过任何比特币，因为在我看来，它们除了用于赌博和欺诈之外，没有任何实际价值。我一直持怀疑态度，每当有人向我宣称 “某项新技术将改变世界”，我的反应总是冷漠。&lt;/p&gt;
&lt;p&gt;因此，当第一次有人告诉我人工智能将极大地提升我的工作效率并改变我的日常工作方式时，我同样持保留态度，我的回应是：“见到实际效果我才会信。”&lt;/p&gt;
&lt;p&gt;此外，我是一名安全研究员。在过去近十年的工作中，我专注于展示人工智能模型在面对未曾训练过的各种环境时如何彻底失败。我证明了只需对机器学习模型的输入进行轻微扰动，就能使其输出完全错误的结果；或者这些模型往往只是记住了它们训练数据中的特定案例，并在实际应用时简单重复。我深知这些系统的种种局限。&lt;/p&gt;
&lt;p&gt;然而，现在我却在这里说，我认为当前的大型语言模型是自互联网问世以来，给我的生产力带来的最大提升。坦白说，如果今天要我在使用互联网和一个最先进的语言模型之间选择一种工具来解决工作中随机一个编程任务，我可能会选择使用语言模型的次数超过一半。&lt;/p&gt;
&lt;h2 id=&#34;如何利用语言模型&#34;&gt;如何利用语言模型
&lt;/h2&gt;&lt;p&gt;以下是我如何利用大型语言模型（LLMs）来提升工作效率。&lt;/p&gt;
&lt;p&gt;你可能对我所述的使用案例不感兴趣，甚至认为它们有些荒谬。也可能这些案例与你的需求不相关，这一点我也能理解。但我只能从个人角度出发。这些使用实例都是我在过去一年里与 LLMs 的交流记录中直接摘录的。&lt;/p&gt;
&lt;h3 id=&#34;1为我开发完整应用&#34;&gt;1、为我开发完整应用
&lt;/h3&gt;&lt;p&gt;去年，我创建了一个测验，让人们评估 GPT-4 在处理几个特定任务上的表现。这个测验非常受欢迎，获得了超过一千万的页面浏览量。你可能想不到，我几乎是让 GPT-4 为我编写了这个应用的全部初始版本。这一过程是通过一连串的问题进行的，我从询问应用的基本架构开始，然后逐步扩展其功能。整个对话长达 30,000 字，极大地测试了当时的 GPT-4 模型的能力极限。如果你翻看这些对话，会发现从我描述需求并请求模型完成全部实现的信息，到我请求做出具体修改的信息（如 “不要比较平均分数，而是用核密度估计表示它是哪个百分位”），以及我提出一些完全不明确的问题时复制粘贴的错误信息（例如，“绘图错误：numpy. Linalg. LinAlgError: singular matrix”），还有我仅仅询问简单单次问题的情况（比如 “如何用 JavaScript 在页面上添加一个 iframe，内容是从字符串加载的？”）。&lt;/p&gt;
&lt;p&gt;这种方法之所以有效，主要是因为语言模型擅长处理人们已经解决的问题，而这个测验的 99% 内容只不过是一些基础的 HTML 和 Python 后端服务器，这是任何人都可以编写的。这个测验之所以引人关注并受到喜爱，并非因为其背后的技术，而是因为测验内容本身。通过自动化所有重复性的部分，我能轻松地完成这个项目。&lt;/p&gt;
&lt;p&gt;实际上，如果没有语言模型的帮助，我可能根本就不会去创建这个测验，因为我不愿意花时间从头编写整个网页应用。尽管我擅长编程！我相信，即使是现有的模型，也足以让大多数人仅凭提问就能解决他们以前无法解决的重要任务。&lt;/p&gt;
&lt;p&gt;我还有一些类似的例子以后介绍，其中我让模型为我编写了整个应用，当这些应用发布时，我会明确指出它们是在语言模型的协助下完成的。&lt;/p&gt;
&lt;h3 id=&#34;2作为新技术的向导&#34;&gt;2、作为新技术的向导
&lt;/h3&gt;&lt;p&gt;我曾经总能赶上各种新兴框架的步伐。但是一个人的时间毕竟有限，因为我的职业特性，我大多数时间都在跟进最新的研究进展，而不是最新的 JavaScript 框架。&lt;/p&gt;
&lt;p&gt;这意味着当我开始一个不属于我研究领域的新项目时，我通常有两个选择：一是利用我已知的技术，虽然这些技术可能已经过时十年或二十年，但对于小项目来说通常足够了；二是尝试学习新的（通常也是更好的）方法。&lt;/p&gt;
&lt;p&gt;这就是语言模型派上用场的时候。对我而言较新的框架或工具，比如 Docker、Flexbox 或 React，对其他人来说可能已经相当熟悉了。世界上可能有成千上万的人已经非常了解这些技术。当前的语言模型也能做到这一点。&lt;/p&gt;
&lt;p&gt;这意味着，我可以通过与语言模型的交互式学习，来掌握解决任务所需的任何知识，而不必依赖那些假设读者具备特定知识、目标明确的静态教程。&lt;/p&gt;
&lt;p&gt;比如，今年早些时候，我在构建一个 LLM 评估框架时，希望能在一个受限环境中运行由 LLM 生成的代码，以避免它删除我的计算机上的随机文件等问题。Docker 是完成这一任务的理想工具，但我之前从未使用过。&lt;/p&gt;
&lt;p&gt;重要的是，这个项目的目标并非是要学会使用 Docker，Docker 只是我实现目标所需的工具。我只需要掌握 Docker 的 10%，确保我能以最基本的方式安全使用它。&lt;/p&gt;
&lt;p&gt;如果是在 90 年代，我可能需要购买一本关于 Docker 的书籍，从头开始学习，阅读前几章，然后试图跳读以找出如何实现我想要的功能。过去十年情况有所改善，我可能会在线搜索如何使用 Docker 的教程，跟着操作，然后搜索遇到的错误信息，看是否有人遇到相同的问题。&lt;/p&gt;
&lt;p&gt;但在今天，我只需要请一个语言模型教我使用 Docker。&lt;/p&gt;
&lt;h3 id=&#34;3开始新项目&#34;&gt;3、开始新项目
&lt;/h3&gt;&lt;p&gt;回想起来，我最初接触的编程语言是 Java。我非常喜欢编程，但有一件事我绝对讨厌：面对新项目的空白屏幕。特别是在使用 Java 时！甚至仅仅是让程序编译一个 hello world 程序——这个 “public static void main string args” 到底是做什么的？括号应该怎么放？哪些字母应该大写？为什么这里用花括号，那里用方括号？&lt;/p&gt;
&lt;p&gt;所以我做了任何孩子都会做的事——我让我父亲帮我做了。&lt;/p&gt;
&lt;p&gt;二十年过去了，我仍然不喜欢使用我不熟悉的框架开始新项目。仅仅是为了搞定样板代码就需要花费大量时间，而且我对我在做的事情毫无头绪。&lt;/p&gt;
&lt;p&gt;例如，我最近想尝试编写一些 CUDA 代码，来评估一种简单的贪婪搜索在 GPU 上的性能与某人的高效优化的 CPU 实现相比。&lt;/p&gt;
&lt;p&gt;但我不懂 CUDA 编程。我会写 C 语言，了解 GPU 的工作原理、内核的功能以及内存布局等，但实际编写向 GPU 发送任务的代码？我不知道该从哪里开始。因此，我直接请求模型为我编写 CUDA 程序的初稿。完美吗？当然不是！但这是一个起点。这正是我需要的。你会注意到这里的代码有很多错误！实际上，我完全可以接受。我不是在寻找完美的解决方案，而是一个起点，我可以从那里继续。如果未来的模型能做得更好，那将是惊人的。但我现在拥有的已经大有帮助了。&lt;/p&gt;
&lt;p&gt;另一方面，对于我在家进行的一些其他个人项目，我正在使用一个树莓派 Pico W。这是我第一次使用它。我希望它能为我做一些事情，特别是一些网络相关的事情。再次，我确信我可以在网上找到有人描述如何做我想做的事情的好教程。但你最近看过互联网吗？前 5 个结果通常只是一些垃圾内容农场，它们有 2008 年的有缺陷的代码，仅为了搜索引擎优化而更新，但仍然不起作用。&lt;/p&gt;
&lt;p&gt;因此，我直接请求一个语言模型教我如何做我想做的事情。我之前已经和微控制器打过交道，所以我或多或少了解它们的工作方式。但我之前从未使用过 Pico W。我只需要一些帮助来开始处理所有的依赖关系，然后我可以弄清楚剩下的部分。&lt;/p&gt;
&lt;p&gt;我为新的微控制器编写的第一个 “hello world” 程序总是让一个 LED 闪烁。这可以让我测试我是否能够编译并上传代码到设备，是否正确设置了所有的引脚，并且基本上知道我在做什么。所以，让我们只是请求一个闪烁程序。（再次：这在互联网上存在吗？几乎可以肯定。但那样我就得去搜索它了。）一旦我有了这段代码并且运行起来，从这里我就知道该怎么做了。我知道 python 是如何工作的（信不信由你！）。因此，我可以从那里直接继续编辑东西，把特殊的 Micro Python 的东西处理掉。&lt;/p&gt;
&lt;p&gt;当我遇到另一个需要我特别处理的问题时，我可以再次请求模型帮助我。例如，我接着只是让模型为我编写一个连接到 wifi 的脚本。&lt;/p&gt;
&lt;h3 id=&#34;4代码简化&#34;&gt;4、代码简化
&lt;/h3&gt;&lt;p&gt;作为安全研究员，我经常需要处理别人的研究项目，这些项目包含数千行代码，我必须弄懂它们的工作原理以便进行攻击。这听起来并不困难，如果每个人都编写清晰的代码，实际上也确实不该困难，但现实世界并非如此。研究人员通常没有动力发布整洁的代码。所以，人们往往会发布他们能用的任何杂乱代码。（我自己也不例外。）&lt;/p&gt;
&lt;p&gt;我无法分享与研究相关的例子，但我可以分享我正在进行的一个个人项目的例子。据说我对康威的生命游戏有种不健康的痴迷。最近，我试图找到一种快速的方法，通过 Python 评估一些生命游戏模式。有一个很好的 C++ 工具叫 golly 可以做这个，但我不想将我的 Python 代码重写为 C++。&lt;/p&gt;
&lt;p&gt;Golly 有一个 CLI 工具正好满足我的需求——我所需要的只是一种正确调用它的方法。这的第一步是简化支持约 50 种不同命令行选项的 C++ 代码，让它只执行我想要的操作。所以我将所有 500 行的 C++ 代码输入到 LLM 中，请求一个更简短的文件来完成相同的任务。&lt;/p&gt;
&lt;p&gt;你知道吗？这完美地奏效了。然后，我请求一个围绕 C++ 代码的 Python 封装器。这同样有效。这是那些令人烦恼的任务之一，如果由我来做，我可能永远不会完成。但现在我可以请求别人帮我完成，我得到的东西比我原来的 Python 代码快了 100 倍。&lt;/p&gt;
&lt;p&gt;我发现自己经常这样做。这里还有一个例子，我在用 Python 做同样的事情。&lt;/p&gt;
&lt;p&gt;再说一次，这些任务并不复杂。但每次这样做，我都能节省大量时间。这就是我认为大型语言模型如今惊人的原因之一：它们的用途可能不够光鲜，也不会因为说 “这是我用大型语言模型简化日常工作的平凡方式” 而赢得网络赞誉，但这是实实在在的帮助。&lt;/p&gt;
&lt;h3 id=&#34;5处理单调任务&#34;&gt;5、处理单调任务
&lt;/h3&gt;&lt;p&gt;我必须完成的许多任务都是单调无聊的，不需要太多思考，但却必须做。&lt;/p&gt;
&lt;p&gt;事实上，我发现自己之所以会拖延任务，往往是因为我知道完成这些任务会感到无聊和痛苦。LLMs 极大地减轻了这种痛苦，让我在开始任务时就知道自己只需要解决有趣的问题。因此，我想逐一介绍一些通过请求 LLMs 帮忙而解决的非常普通的问题。&lt;/p&gt;
&lt;p&gt;例如，最近我需要拆解一个用 Python 3.9 编写的程序。大多数 Python 反编译器只支持到 Python 3.7，但无法在我处理的 3.9 版本上运行。&lt;/p&gt;
&lt;p&gt;反编译实际上并不难，主要是在重建控制流程时避免出错。因此，我没有亲自花时间为几千个操作码和几百行代码进行这种转换，而是让 LLM 帮我做了。它做得非常好！效果远超我的预期。这里有三个不同的对话，在这些对话中我让模型帮我完成了这项工作。另一个例子是，当我需要将一些非结构化数据转换成结构化格式时。比如，我在做一个项目，需要列出一些书名和作者名。我在网上找到了一些非结构化格式的数据，然后让 LLM 帮我格式化。最近，我在写一篇关于如何破解某个防护的博客文章，想展示我不得不修改的代码完整差异。于是我粘贴了差异和之前如何将差异转换为 HTML 的示例，并让 LLM 按照之前的格式为我生成差异。此外，作为我的工作的一部分，我经常需要为我使用的资源生成引用。谷歌学术很容易引用论文，我可以直接复制粘贴。但引用网页稍显麻烦；我最近开始请求 LLM 帮我生成引用。（确保这是正确的！）我可以继续举出至少一百个类似的例子。但我想你已经明白了我的意思。&lt;/p&gt;
&lt;p&gt;我完全明白这种任务可能会让人觉得 “就这？” 但我们要记住，五年前这些模型几乎不能连贯地写出一个段落，更别说为你解决整个问题了。&lt;/p&gt;
&lt;h3 id=&#34;6使每个用户都成为-高级用户&#34;&gt;6、使每个用户都成为 “高级用户”
&lt;/h3&gt;&lt;p&gt;如果你曾经看过比你不那么熟练的人使用某个工具，这可能会有点让人难受。他们可能会花费几分钟甚至几小时的时间去完成一个本可以通过某种宏或在处理特定任务时巧妙使用并行应用程序来自动化的任务。&lt;/p&gt;
&lt;p&gt;然而，学习执行这些操作所需的技巧需要时间，并且具有挑战性。&lt;/p&gt;
&lt;p&gt;例如，我最近试图编写一个 Python 程序来处理来自 Apple Lisa 键盘的输入。我在线找到了一个人用 C 语言编写的相关代码，其中包含许多像 #define KEYNAME key_code 这样的语句，我想将它们转换为一个 Python 字典，将整数代码映射到对应的字符串。&lt;/p&gt;
&lt;p&gt;我是一个 Emacs 用户。我知道如何在 Emacs 中解决这个问题，这甚至并不难。这是我刚记录的一些关键操作，可以达到这个效果：&lt;/p&gt;
&lt;p&gt;C-h C-s #def [enter] M-f [delete] C-d M-f C-[space] M-f C-w C-a C-y : &amp;ldquo;M-f&amp;rdquo;, C-g C-] } C-[ {&lt;/p&gt;
&lt;p&gt;尽管这对我几乎是自然的，但到目前为止，我已经花了超过一半的生活时间在 Emacs 上变得足够熟练，以至于这成为了自然反应。但你知道现在我连接了 LLM 到我的编辑器，我会怎么做吗？C-h C-h 请将这些 #define 重写为 {keycode: string, &amp;hellip;} 的字典格式。&lt;/p&gt;
&lt;p&gt;然后，文本就在我眼前被重写了！&lt;/p&gt;
&lt;p&gt;正是在这样的情况下，我认为 LLMs 对非专家的潜在效用甚至高于专家。这个模型为每个人提高了起点，如果你之前完全不会做，现在突然能做很多事情。&lt;/p&gt;
&lt;h3 id=&#34;7作为-api-参考&#34;&gt;7、作为 API 参考
&lt;/h3&gt;&lt;p&gt;真正的程序员想要理解某个工具的工作原理时会阅读参考手册。但我是个懒惰的程序员；我更愿意直接得到答案。因此，现在我向语言模型提问。&lt;/p&gt;
&lt;p&gt;当我向人们展示这些例子时，有些人会变得有些防御性，他们说：“LLM 没有做任何你不能用已有工具完成的事情！” 你知道吗？他们说得对。但是，用搜索引擎能做的事，用一本关于该主题的实体书也能做；用一本实体书能做的事，通过阅读源代码也能做。&lt;/p&gt;
&lt;p&gt;然而，每一种方式比前一种都简单。当事情变得更简单时，你会更频繁地做，而且方式上也会有所不同。&lt;/p&gt;
&lt;p&gt;这就是我问 “哪个 $ 命令可以传递所有剩余参数” 并获得答案的例子。（紧接着是另一个 “我该如何使用这个东西” 的问题！）这实际上是我最常用 LLMs 的方法之一。我之所以不能给你展示更多这样的例子，是因为我在 Emacs 和我的 shell 中都内置了查询 LLMs 的工具。因此，当我想要做这些事情的 90% 的时间，我甚至不需要离开我的编辑器。&lt;/p&gt;
&lt;h3 id=&#34;8搜索难以找到的内容&#34;&gt;8、搜索难以找到的内容
&lt;/h3&gt;&lt;p&gt;在互联网上搜索内容曾经是一项需要学习的技能。你想在查询中包含哪些特定的词汇？它们应该是复数还是单数？过去时？你希望避免在页面上出现哪些词汇？我是想要 X 和 Y，还是 X 或 Y？&lt;/p&gt;
&lt;p&gt;现在情况已经不同了。我想不起上次我在 Google 中使用 OR 的时间。我也想不起上次我使用减号 (-) 来移除结果子集的时间。在大多数情况下，今天你只需要写下你想要找的内容，搜索引擎就会为你找到。&lt;/p&gt;
&lt;p&gt;但搜索引擎仍然不是 100% 的自然语言查询。它仍然有点像你在玩反向危险边缘游戏，试图使用答案中会有的关键词而不是问题。这是一项我认为我们几乎都忘记了我们学过的技能。&lt;/p&gt;
&lt;p&gt;对于今天的一些简单任务（随着时间的推移会越来越多），语言模型只是更好。我可以直接输入 “所以我知道 + 对应于__add__，但是是什么”，它会告诉我答案是__inv__。这是用标准搜索引擎很难搜索到的东西。是的，我知道有方法可以问，这样我就能找到答案。可能如果我输入 “python 文档元类 &amp;ldquo;add&amp;rdquo;”，我可以搜索页面上的并得到答案。但你知道还有什么有效吗？只要问 LLM 你的问题。&lt;/p&gt;
&lt;p&gt;这样做任何一次只节省几十秒的时间，但当你在解决某个编码任务的过程中，已经试图同时记住一百万件事时，能够将你试图解决的问题倾倒出来并得到一个连贯的答案是令人惊讶的。&lt;/p&gt;
&lt;p&gt;这并不是说他们今天在这方面已经完美。语言模型只有在线上被足够频繁地重复时才知道事情。&amp;ldquo;足够频繁&amp;rdquo; 是什么意思取决于模型，所以我确实需要花一些精力思考我是应该询问模型还是询问互联网。但模型只会变得更好。&lt;/p&gt;
&lt;p&gt;或者，每当我遇到随机崩溃时，我会将模型转储我所看到的并要求解释，就像我在这里做的那样，当我只是输入 zsh 没有找到匹配的 “远程通配符传输问题”。或者，作为一个完全独立的例子，我去年在写一篇博客文章时，想要第一个字母大写，让其余的文字环绕它，就像我在这句话中所做的那样。现在这被称为下沉式大写字母。但我不知道这个。我只知道我想要的效果，所以问语言模型“我想让它看起来像一本华丽的书，文字围绕 O”，它给了我我想要的东西：这个任务是另一个属于“我只是因为 LLMs 才做的” 类别——我不会认为花大量时间弄清楚如何做是值得的。但因为我可以直接问模型，我就这样做了，它让我的帖子看起来更好一些。&lt;/p&gt;
&lt;h3 id=&#34;9解决一次性任务&#34;&gt;9、解决一次性任务
&lt;/h3&gt;&lt;p&gt;有两种类型的程序。首先，你有一些你想要正确完成的程序；它们将会存在一段时间，因为你需要维护它们好几年，所以代码的清晰性很重要。然后，你有那些只存在大约 25 秒的程序；它们将帮助你完成某些任务，然后立即被丢弃。&lt;/p&gt;
&lt;p&gt;在这些情况下，我根本不关心代码的质量，而且程序是完全独立的，我现在几乎专门使用 LLMs 来为我编写这些程序。&lt;/p&gt;
&lt;p&gt;请注意：大多数这些情况再次出现，你会看着它们说 “就这？”。但就像我之前说的，我每天只有那么多小时来处理一个项目。如果我能节省编写一次性使用的程序的时间和精力，我会选择这样做。&lt;/p&gt;
&lt;p&gt;可能最常见的例子是帮助我生成一些图表，以可视化我作为某些研究实验结果生成的一些数据。我有几十个这样的例子。可能接近一百而不是零。它们看起来基本上都一样，这里只是一个例子：或者，另一个类似的例子，当我有一种格式的数据并想将其转换为另一种格式的数据时。通常这是我只需要做一次的事情，一旦完成，我就会扔掉生成的脚本。但我还可以给你举出一千个其他例子。通常情况下，当我有一个足够简单的脚本想要编写时，我会直接请求 LLM 整体编写。例如，这里我请求 LLM 为我编写一个脚本，让它大声读出我的论文，这样我可以确保它们没有愚蠢的语法问题。在许多情况下，当我不太清楚我想要什么时，我也会从请求模型提供一些初始代码开始，然后从那里进行迭代。例如，这里有一个一次性任务，我只是需要快速处理一些数据。在 2022 年，我会花两分钟用 python 编写这个，然后等待几个小时因为它只运行一次——优化它所需的时间会比 python 程序运行的时间还要长。但现在呢？你敢打赌我会花同样的两分钟请求用 Rust 代码为我处理数据。或者这里是另一个例子，我请求模型为我下载一个数据集，并对其进行一些初始处理。这对我来说容易做吗？可能是。但这不是我想要考虑的任务；我想要考虑的是我将要用数据集做的研究。消除分心非常有价值，不仅仅是节省几分钟的时间。&lt;/p&gt;
&lt;p&gt;另一次，我编写了一个程序，这样我就可以用小立方体 3 D 打印一些像素化的图像。为此，我想将 PNG 转换为 STL 文件；但这不是项目的重点。这只是沿途必须发生的事情。所以我请求 LLM 为我解决这个问题。或者，作为另一个例子，我最近想使用 Docker Compose 来设置一个新项目。我遇到了一些问题，只想让它运行起来，然后我会弄清楚出了什么问题。所以我只是来回几次，我所做的就是复制一个又一个错误消息，直到它最终给我一个有效的解决方案。我还会发现自己在很多情况下首先请求一个完整的解决方案，然后请求如何修改它的提示。在这次对话中，我首先请求一个解析 HTML 的程序，然后请求 API 参考或其他改进方式的提示。最近我一直在尝试做一些电子产品相关的事情，我有一个在 Arduino 上运行的 C 程序，但我希望它在树莓派 Pico 上以 MicroPython 运行。这个转换过程没有什么有趣的；它只需要完成。所以我没有亲自完成工作，只是请语言模型为我做。对于另一个项目，我需要用一些花哨的 ML 模型在一些交互循环中分类一些图像。我本可以自己编写，或者我可以直接请求模型为我做。&lt;/p&gt;
&lt;h3 id=&#34;10解释事物给我听&#34;&gt;10、解释事物给我听
&lt;/h3&gt;&lt;p&gt;我最近开始对电子学产生了兴趣。我年轻的时候做过一些电子项目，并在大学期间上过几门相关课程。但现在我想进行实际的电子项目，我发现有许多我不了解的细节，这让开始任何项目都变得困难。&lt;/p&gt;
&lt;p&gt;我可以去读一本关于实用电子学的书。我可能真的会在某个时候这么做，以便彻底理解这个主题。但我并不想把我的时间花在感觉自己在学习上。我从事电子学的部分原因是想从整天的阅读和写作中抽身而出。&lt;/p&gt;
&lt;p&gt;这就是 LLMs 发挥出色的地方。它们可能不如世界上最出色的专家那样知识渊博，但成千上万的人可能知道我可能会提出的任何电子问题的答案。这意味着语言模型很可能也知道答案。它乐于为我提供所有问题的答案，使我可以享受乐趣而不必纠结于细节。虽然我完全可以通过在互联网上搜索来找到答案，但在忙碌一整天后，简单地让模型为我完成这些工作的便利性使我感到非常放松。&lt;/p&gt;
&lt;p&gt;这里是一些例子，展示了我如何询问语言模型有关电子学中事物工作原理的基本问题。这些答案完美吗？谁知道呢。但你知道它们比什么更好吗？比我什么都不知道要好。&lt;/p&gt;
&lt;h3 id=&#34;11解决具有已知解决方案的任务&#34;&gt;11、解决具有已知解决方案的任务
&lt;/h3&gt;&lt;p&gt;几乎所有事情都已经有人做过了。你想做的事情几乎没有什么是真正新颖的。语言模型特别擅长提供它们之前见过的事物的解决方案。&lt;/p&gt;
&lt;p&gt;在最近的一个项目中，我需要提升一些 Python 代码的性能。因此，我（1）请求 LLM 将其重写为 C 语言，然后（2）请求它构建一个接口，以便我能从 Python 调用 C 代码。&lt;/p&gt;
&lt;p&gt;这些任务都不是 “难” 的。将 Python 转换为 C 是我确信自己能在一两小时内完成的。尽管我不完全知道 Python 到 C 的 API 如何工作，但我相信我可以通过阅读文档来了解。但如果需要我自己来做，我永远不会去做。它不是关键路径上的一部分，我宁愿等待计算机解决问题，也不愿花时间加速那些我不经常需要运行的任务。&lt;/p&gt;
&lt;p&gt;但是，将 Python 转换为 C 主要是简单程序的技术过程，而且有一个标准的 Python 到 C 的调用约定。所以，我直接请求 LLM 来帮我完成。&lt;/p&gt;
&lt;p&gt;从那以后，我开始期待这是我可以做到的事情，几乎在任何时候，当我需要一些高速的代码时，我会用 Python 描述我想要的内容，并请求生成优化的 C 代码。其他时候，我做同样的事情，但如果我认为比较 Rust 输出和 C 输出的正确性更容易的话，我会请求 Rust 输出。或者，作为另一个例子，用 multiprocessing 库并行化 Python 函数并不困难。你需要编写一些样板代码，基本上它就会为你完成。但编写代码有点痛苦，会妨碍你想要完成的实际工作。现在，每当我需要做这个时，我只会请求一个 LLM 来帮我。还有很多时候，当我尝试测试某个 API 时，我最初会编写一个 curl 请求来开始。一旦它开始工作，我想以编程方式重复任务，我就会将它转换为 Python。以前，我通常会做些非常丑陋的事情，直接调用 os.Popen () 运行 curl 命令，但这并不理想。更好的方法是将其转换为 Python 的 requests 库；但这需要时间，所以我不会这么做。但现在我可以简单地请求一个 LLM 帮我完成，并在更短的时间内获得一个更干净的程序。对于即将到来的一个项目，我可能会在这里讨论，我需要了解人们通常用作简单无线电发射器的是哪些东西。因为我真正想要的是大多数人的答案，LLM 是一个完美的选择！&lt;/p&gt;
&lt;h3 id=&#34;12修复常见错误&#34;&gt;12、修复常见错误
&lt;/h3&gt;&lt;p&gt;在 2022 年之前，当我遇到某些流行工具或库的错误信息时，我通常会采取以下步骤：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;复制错误信息。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;将其粘贴到 Google 搜索。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;点击最顶部的 Stack Overflow 链接。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;确认问题是否与我遇到的一致；如果不是，返回第 2 步。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果无效，返回第 2 步，更换搜索词，祈祷等。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;因为，坦白说，通常出问题的工具与我最终想要解决的任务差距很大，我其实并不太关心如何使其工作，我只需要它能工作。2024 年现在这个流程是怎样的？&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;复制错误信息。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;向 LLM 询问：“我该如何修复这个错误？（错误）”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果无效，反馈 “那不起作用”。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;我没有任何对话记录来展示这些例子。（或者说，我找了一个小时也没有找到。）但这实际上有一个很好的原因：我已经将它整合进我的工作流程中了。&lt;/p&gt;
&lt;p&gt;我是一个 Emacs 用户。我设置了我的环境，每当我运行一个程序并且它以非零状态码结束时（意味着有错误发生），它会自动调用最新最快的 LLM，并要求它解释答案，同时请求一个可以直接应用来修复代码中 bug 的补丁。&lt;/p&gt;
&lt;p&gt;现今的模型大多数情况下还不足以在这项任务上胜过我，但它们正在逐渐进步。偶尔，当 LLM 修复了一个我知道如果自己追踪可能非常困难的错误时，我会感到非常惊喜，尤其是当错误只是因为某处的小笔误。&lt;/p&gt;
&lt;h3 id=&#34;13以及无数其他事情&#34;&gt;13、以及无数其他事情
&lt;/h3&gt;&lt;p&gt;我上面提到的所有对话只占我过去一年与 LLMs 互动总数的不到 2%。我没有提供其他链接的原因并不是因为这些是模型失败的案例（尽管有很多这样的案例），而是因为：（1）许多互动重复了我已经提到的那些模式，或（2）它们不容易解释清楚发生了什么，也不容易让你自己看到它们为何对我有用。&lt;/p&gt;
&lt;p&gt;我完全预期未来我使用这些模型的频率会持续增长。作为一个参考，我在 2024 年通过网页界面进行的 LLM 查询比 2023 年增加了 30%——而且我甚至无法计算 API 查询的增加，但我猜测至少增加了 2 到 3 倍。&lt;/p&gt;
&lt;h2 id=&#34;评价-llms-的能力而非它们的局限&#34;&gt;评价 LLMs 的能力，而非它们的局限
&lt;/h2&gt;&lt;p&gt;我在面试求职者时获得的最佳建议之一是，根据他们能做什么而不是不能做什么来评价他们。&lt;/p&gt;
&lt;p&gt;我怀疑我可以问你一些简单的问题，这可能会让你显得不够称职。比如极端的例子：世界上有十亿人讲普通话；我连数到十都做不到。如果有人给我一份小学水平的普通话考试，我肯定会考得很糟糕。&lt;/p&gt;
&lt;p&gt;即便在计算机科学领域内，也有我完全不了解的领域。我关于如何构建 SQL 的知识仅限于如何编写有效的 SELECT 语句。这——字面上——是我唯一知道如何编写的语句。&lt;/p&gt;
&lt;p&gt;因此，当我看到人们在网络上争论说 LLMs 只是炒作，因为 “它们甚至不能做 XXX” 时，我真的感到困惑。这里的 XX 可能是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&amp;hellip; 计算句子中的单词数！&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;hellip; 写一首每个单词都以字母 “a” 开头的诗&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;hellip; 乘以两位数&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;hellip; 从列表中随机选择一个元素&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;因为你上次真正需要做这些事情，并且真诚地认为 LLM 是合适的工具是什么时候？&lt;/p&gt;
&lt;p&gt;我不会因为我们不能在头脑中分割 64 位整数而认为人类完全无用——这对计算机来说是极其简单的任务——我也不认为因为你可以构造出 LLMs 无法解决的任务就应该抛弃 LLMs。显然这很容易——关键是你能找到它们能够提供价值的任务吗？&lt;/p&gt;
&lt;p&gt;程序员已经很清楚，某些事物对不同的目的可能有用。想要编写操作系统？也许你应该使用 C 而不是 Python。没有人会说 “看 Python 多么愚蠢，你甚至不能强制变量对齐到 32 字节边界！” 这只是在错误的抽象级别上。语言模型也是一样。它们在非常高的抽象级别上操作；你不能期待它们解决甚至最简单的程序都能解决的任务。但你可以期望它们解决不同种类的任务。&lt;/p&gt;
&lt;h2 id=&#34;结论&#34;&gt;结论
&lt;/h2&gt;&lt;p&gt;撰写这篇文章的初衷有两个。首先，正如我在文章开头所述，我想证明 LLMs 已经为我提供了大量的价值。此外，我注意到很多人表示喜欢使用 LLMs 的想法，但不知道它们能如何帮助自己。因此，如果你是这些人之一，希望通过我的使用案例能看到一些示例。&lt;/p&gt;
&lt;p&gt;因为至少对我来说，LLMs 能做很多事。它们不能做所有事情，甚至不能做大多数事情。但当前的模型，正如它们现在存在的样子，为我提供了可观的价值。&lt;/p&gt;
&lt;p&gt;在展示这些示例后，我经常收到的一种反驳是：“但这些任务很简单！任何计算机科学的本科生都能学会如何做到！” 确实，本科生可以通过几小时的搜索来告诉我如何正确地诊断 CUDA 错误以及可以重新安装哪些包。本科生可以通过几小时的工作重写那个程序为 C 语言。本科生可以通过几小时的学习相关教科书来教我任何我想知道的关于那个主题的内容。不幸的是，我没有一个随时可以回答我任何问题的神奇本科生。但我有语言模型。所以，虽然语言模型还不够好，不能解决我作为程序员工作中的有趣部分，而且当前模型只能解决简单的任务。&lt;/p&gt;
&lt;p&gt;但五年前，LLM 最好的能做的就是写出看起来像英语的段落。当它们能从一个句子到下一个形成连贯的思想时，我们都感到惊讶。它们的实际用途几乎为零。然而，今天，它们已经提高了我在项目中编程方面的生产力至少 50%，并消除了足够多的繁琐工作，让我能够创建一些我否则永远不会尝试的东西。&lt;/p&gt;
&lt;p&gt;因此，当人们说 “LLMs 只是炒作” 和“所有 LLM 都没有为任何人提供实际价值”时，很明显他们是错误的，因为它们为我提供了价值。现在，也许我是个例外。也许我是唯一找到了让这些模型有用的方法的人。&lt;/p&gt;
&lt;p&gt;我只能代表我自己。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;但考虑到 LLMs 显著提高了我的生产力——一个在使用 LLM 之前已经有 20 年编程经验的人——我相信还有其他人也能从使用 AI 中受益。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;原文链接：&lt;/strong&gt;&lt;br&gt;
&lt;a class=&#34;link&#34; href=&#34;https://nicholas.carlini.com/writing/2024/how-i-use-ai.html#intro&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://nicholas.carlini.com/writing/2024/how-i-use-ai.html#intro&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>使用 Continue 部署免费的 AI 代码助手</title>
        <link>https://blog.ccino.org/p/deploy-a-free-ai-code-assistant-with-continue/</link>
        <pubDate>Sun, 13 Oct 2024 10:53:20 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/deploy-a-free-ai-code-assistant-with-continue/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/deploy-a-free-ai-code-assistant-with-continue/Deploy%20a%20free%20AI%20code%20assistant%20with%20Continue.png" alt="Featured image of post 使用 Continue 部署免费的 AI 代码助手" /&gt;&lt;p&gt;过去的一年, 我一直在使用 GitHub Copilot 作为代码助手, 它提供了补全、问答等功能, 付费订阅 10 美元 / 月.&lt;/p&gt;
&lt;p&gt;说实话这个价格并不算贵, 但最近 Copilot 对问答范围进行了限制, 导致很多与开发相关的问题无法得到解答.&lt;/p&gt;
&lt;p&gt;后续我也尝试了 Codium AI, 响应速度不尽人意.&lt;/p&gt;
&lt;p&gt;最近发现了一个开源的代码助手 &lt;a class=&#34;link&#34; href=&#34;https://www.continue.dev/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Continue&lt;/a&gt;, 支持调用本地和云端的模型, 包括 Cloudflare 的 worker AI.&lt;/p&gt;
&lt;h2 id=&#34;介绍&#34;&gt;介绍
&lt;/h2&gt;&lt;p&gt;Continue 本质是个帮你向大模型发起请求的客户端.&lt;br&gt;
当你编写代码的时候, 它会获取代码的上下文, 向模型发起请求, 获取结果后处理等待你的命令 (tab), 再拼接到代码中去.&lt;/p&gt;
&lt;h2 id=&#34;本地部署&#34;&gt;本地部署
&lt;/h2&gt;&lt;p&gt;本地部署可以使用 &lt;a class=&#34;link&#34; href=&#34;https://ollama.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ollama&lt;/a&gt; 或 &lt;a class=&#34;link&#34; href=&#34;https://docs.continue.dev/reference/Model%20Providers/lmstudio&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;lmstudio&lt;/a&gt;.&lt;br&gt;
这是两个非常方便的大模型集成工具, 同时支持 Mac、windows 以及 Linux, 帮助你快速在本地运行大模型.&lt;/p&gt;
&lt;p&gt;这里我选择在 Mac 上运行 Ollama, 在官网 Ollama 可以下载到安装包, 安装过程中记得勾选命令行工具.&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://ollama.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ollama&lt;/a&gt; ollama. Com&lt;/p&gt;
&lt;p&gt;Get up and running with large language models.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://ollama.com/public/og.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;配置要求&#34;&gt;配置要求
&lt;/h3&gt;&lt;p&gt;配置要求取决于你要使用的模型, 这里推荐 llama 3.&lt;br&gt;
Llama 3 是 meta 开源的模型, 也是目前最强的开源模型, 可以获得比较好的补全效果.&lt;br&gt;
模型有两个变体, 8 B 需要至少 16 g 的内存和 8 g 的显存, 70 B 则需要 64 g 以上的内存.&lt;br&gt;
默认运行的 8 B 版本即可满足正常需要.&lt;/p&gt;
&lt;h3 id=&#34;运行模型&#34;&gt;运行模型
&lt;/h3&gt;&lt;p&gt;安装完成后进入 terminal, 输入以下命令获取 llama 3 模型:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1ollama run llama3
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;模型拉取完成后就会自动运行.&lt;br&gt;
测试用中文让他编写一个 python 版的 hello-world.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.ray-d-song.com/2024/09/6d3a74f153d36136f7ae81586e8315fb.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;输入 &lt;code&gt;/bye&lt;/code&gt; 可以退出运行.&lt;/p&gt;
&lt;h3 id=&#34;配置-continue-插件&#34;&gt;配置 Continue 插件
&lt;/h3&gt;&lt;p&gt;安装 &lt;a class=&#34;link&#34; href=&#34;https://marketplace.visualstudio.com/items?itemName=Continue.continue&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;vscode plugin&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;安装完成左侧边栏会展示 Continue 的对话框:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.ray-d-song.com/2024/09/ea18b185908bda96720414fcad005f10.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;这个时候是无法对话的, 因为还没有选择模型, 点击 &lt;code&gt;Select model&lt;/code&gt; -&amp;gt; &lt;code&gt;Add Model&lt;/code&gt;, 向下拉, 找到:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.ray-d-song.com/2024/09/58d456bc4ba21cacbb2f2c2b076722de.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;然后再选择第一个 &lt;code&gt;Autodetect&lt;/code&gt; 选项:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.ray-d-song.com/2024/09/05191d0410e4f23c30285563b15c54dc.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;返回对话, 选择 Ollama 选项:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.ray-d-song.com/2024/09/f82f1758e1ea1f85cf5cd9db3913e11d.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;确保你的模型正在后台运行, 接下来就可以开始对话了.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.ray-d-song.com/2024/09/2880fe2110c014bc1b6e736d41bb0e71.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;自动补全设置&#34;&gt;自动补全设置
&lt;/h3&gt;&lt;p&gt;虽然现在已经可以完成对话, 但还是无法补全.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.ray-d-song.com/2024/09/c072cad8863c2a50f9202e05e3442d44.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;因为补全默认使用的是 &lt;code&gt;Starcoder2 3b&lt;/code&gt; 模型, Starcoder 是一个针对代码场景针对性强化的模型.&lt;/p&gt;
&lt;p&gt;你可以使用以下命令启动该模型.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1ollama run starcoder2
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;模型启动后就可以触发补全.&lt;/p&gt;
&lt;p&gt;如果你的机器性能不足以同时运行两个模型, 你也可以设置补全也使用 &lt;code&gt;llama3&lt;/code&gt;:&lt;br&gt;
在插件侧边栏的角落, 找到这个小齿轮图标&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.ray-d-song.com/2024/09/d3b06fcec439af8e2cec4d360f2663c2.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;点击就会进入配置文件 (也可以打开~/. Continue/config. Json), 将 &lt;code&gt;tabAutocompleteModel&lt;/code&gt; 字段的两个高亮行的值修改为 &lt;code&gt;llama3&lt;/code&gt; 即可.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1&amp;#34;tabAutocompleteModel&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2  &amp;#34;title&amp;#34;: &amp;#34;Starcoder2 3b&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3  &amp;#34;provider&amp;#34;: &amp;#34;ollama&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4  &amp;#34;model&amp;#34;: &amp;#34;starcoder2:3b&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;5},
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果你希望补全 markdown 之类的的文本文件, 那我建议使用 llama 3 进行补全&lt;/p&gt;
&lt;h2 id=&#34;cloudflare-worker-ai&#34;&gt;Cloudflare worker AI
&lt;/h2&gt;&lt;p&gt;有一些轻薄本机型不能在本地运行大模型, 也可以使用 Cloudflare worker 的 AI 模型.&lt;/p&gt;
&lt;p&gt;Cloudflare 提供了免费额度, 不过是以 &lt;code&gt;神经元&lt;/code&gt; 作为单位, 可以在&lt;a class=&#34;link&#34; href=&#34;https://ai.cloudflare.com/#pricing-calculator&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;这个页面查看估算&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;每日的免费额度大体相当于 500 次调用, 每次 100 个入参字符和 500 个返回字符, 足以应对正常的开发场景.&lt;/p&gt;
&lt;p&gt;首先根据 &lt;a class=&#34;link&#34; href=&#34;https://developers.cloudflare.com/fundamentals/api/get-started/create-token/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Cloudflare 的指引, 创建 key&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;然后打开配置文件, 增加一个 &lt;code&gt;models&lt;/code&gt; 字段值, 并修改 &lt;code&gt;tabAutocompleteModel&lt;/code&gt; 字段.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1{
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2  &amp;#34;models&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3    {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4      &amp;#34;accountId&amp;#34;: &amp;#34;YOUR CLOUDFLARE ACCOUNT ID&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;5      &amp;#34;apiKey&amp;#34;: &amp;#34;YOUR CLOUDFLARE API KEY&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;6      &amp;#34;contextLength&amp;#34;: 2400,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;7      &amp;#34;completionOptions&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;8        &amp;#34;maxTokens&amp;#34;: 500
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;9      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;10      &amp;#34;model&amp;#34;: &amp;#34;@cf/meta/llama-3-8b-instruct&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;11      &amp;#34;provider&amp;#34;: &amp;#34;cloudflare&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;12      &amp;#34;title&amp;#34;: &amp;#34;Llama 3 8B&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;13    }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;14  ],
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;15  &amp;#34;tabAutocompleteModel&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;16    &amp;#34;accountId&amp;#34;: &amp;#34;YOUR CLOUDFLARE ACCOUNT ID&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;17    &amp;#34;apiKey&amp;#34;: &amp;#34;YOUR CLOUDFLARE API KEY&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;18    &amp;#34;model&amp;#34;: &amp;#34;@hf/thebloke/deepseek-coder-6.7b-base-awq&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;19    &amp;#34;provider&amp;#34;: &amp;#34;cloudflare&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;20    &amp;#34;title&amp;#34;: &amp;#34;DeepSeek 7b&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;21  },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;22}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;修改 accountId 为你自己的账户 id, apiKey 是你刚刚保存的 key 值.&lt;/p&gt;
&lt;p&gt;账户 id 获取比较麻烦. 你必须要有一个 Cloudflare 下的域名或者一个 Worker, 具体可以参照官方文档和这两个页面:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://developers.cloudflare.com/fundamentals/setup/find-account-and-zone-ids/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;官方文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.thorn.red/articles/6d89ow4vgfghgnn8&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;参考 1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://community.cloudflare.com/t/where-can-i-find-my-account-id/164431&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;参考 2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;model&lt;/code&gt; 字段的值可以自行修改, 不同的模型需要的算力不同, 对 &lt;code&gt;神经元&lt;/code&gt; 的计费方式也会有影响.&lt;br&gt;
如果你发现免费额度不足以覆盖, 可以修改为低一级的模型.&lt;/p&gt;
&lt;p&gt;点击链接可以看到完整的模型列表:&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://developers.cloudflare.com/workers-ai/models&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Models | Cloudflare Workers AI docs&lt;/a&gt; developers. Cloudflare. Com&lt;/p&gt;
&lt;p&gt;Browse our entire catalog of models:&lt;/p&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;p&gt;Llama 3 有不错的对话效果, 但是速度比较慢, 代码补全也比较笨.&lt;/p&gt;
&lt;p&gt;Starcoder 2 速度要快得多, 补全效果也更好, 但对文本的处理能力偏弱.&lt;/p&gt;
&lt;p&gt;个人推荐使用 Cloudflare 的 llama 3 模型进行对话, 本地运行 starcoder 2 进行补全, 是比较完美的解决方案.&lt;/p&gt;
&lt;p&gt;本文出自：&lt;a class=&#34;link&#34; href=&#34;https://ray-d-song.com/zh-cn/blog/continue-free-ai-code-assistant/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;使用 Continue 部署免费的 AI 代码助手&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>放开那代码让我来Cursor 帮你写代码的奇妙之旅</title>
        <link>https://blog.ccino.org/p/let-go-of-the-code-and-let-cursor-help-you-write-the-code./</link>
        <pubDate>Sat, 12 Oct 2024 12:16:22 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/let-go-of-the-code-and-let-cursor-help-you-write-the-code./</guid>
        <description>&lt;img src="https://blog.ccino.org/p/let-go-of-the-code-and-let-cursor-help-you-write-the-code./Let%20go%20of%20the%20code%20and%20let%20Cursor%20help%20you%20write%20the%20code.png" alt="Featured image of post 放开那代码让我来Cursor 帮你写代码的奇妙之旅" /&gt;&lt;p&gt;让我们开门见山：编程很酷，但也很折磨人。那些长时间盯着屏幕，debug 无休止的日子，只有程序员懂得它的酸爽。而就在这个编程焦虑的世界中，&lt;strong&gt;Cursor&lt;/strong&gt; 横空出世，带着一系列魔法功能，如同你手中的一根智能魔杖，让写代码变得像煮速冻面一样简单。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cursor&lt;/strong&gt;，一款基于 AI 的编程助手，号称可以从自然语言生成代码、自动修复 bug、甚至帮你写文档。它到底是怎样炼成的？又如何在编程界掀起一场技术革命？它会是程序员的终极福音，还是带来失业的寒风？今天，咱们就来聊聊这个神奇的 AI 工具。&lt;/p&gt;
&lt;h2 id=&#34;1-cursor-的起源ai-编程助手的崛起之路&#34;&gt;1. &lt;strong&gt;Cursor 的起源：AI 编程助手的崛起之路&lt;/strong&gt;
&lt;/h2&gt;&lt;p&gt;话说，人工智能在过去十年大展拳脚，从会下围棋的 &lt;strong&gt;AlphaGo&lt;/strong&gt; 到会画画的 &lt;strong&gt;DALL·E&lt;/strong&gt;，AI 无处不在。可程序员们却发现，AI 一边让他们失业（嗯，自动化），一边又离不开他们（嗯，调试代码）。于是，一个天才团队想：既然 AI 可以干那么多事情，为什么不帮程序员也省省力呢？&lt;/p&gt;
&lt;p&gt;于是 &lt;strong&gt;Cursor&lt;/strong&gt; 诞生了，它利用了 AI 的核心技术，尤其是自然语言处理（NLP）和大型语言模型（比如 GPT-4），来辅助程序员完成各种编程任务。最开始，它只能做些简单的代码补全和错误提示，简直就是个 “高效的智障小助手”。但随着技术的演进，它变得越来越聪明，能完成的任务也越来越多，逐渐从一个“代码秘书” 升级为一位“编程魔法师”。&lt;/p&gt;
&lt;h2 id=&#34;2-cursor-的超能力ai-编程助手的终极武器&#34;&gt;2. &lt;strong&gt;Cursor 的超能力：AI 编程助手的终极武器&lt;/strong&gt;
&lt;/h2&gt;&lt;p&gt;你可能会问：“Cursor 到底能做什么？它能帮我写完项目吗？” 别急，它虽然还不至于替你全程搞定，但绝对能帮你省下不少头发。&lt;/p&gt;
&lt;h3 id=&#34;21-代码自动补全终于不用手敲那些烦人的细节了&#34;&gt;2.1 &lt;strong&gt;代码自动补全：终于不用手敲那些烦人的细节了&lt;/strong&gt;
&lt;/h3&gt;&lt;p&gt;还记得那些每次写循环或函数声明时都觉得眼睛发疼的日子吗？Cursor 直接解决了这个问题。它能根据你当前写的代码，自动为你补全后续代码。这就像是有个聪明的小助手，时刻站在你身边，看你码字，然后说：“哦，我懂你要干嘛！我来帮你补全后面的代码吧！”&lt;/p&gt;
&lt;p&gt;例子：你写了一个 &lt;code&gt;for&lt;/code&gt; 循环，Cursor 可能已经猜到你想遍历某个数组，然后自动补全了循环体内的逻辑。就像它比你还懂你一样。&lt;/p&gt;
&lt;h3 id=&#34;22-自动错误检测与修复bug-猎人出动&#34;&gt;2.2 &lt;strong&gt;自动错误检测与修复：Bug 猎人出动&lt;/strong&gt;
&lt;/h3&gt;&lt;p&gt;Cursor 不仅是个高效码字小助手，还是个 “Bug 猎人”。它能自动识别代码中的错误，并提供修复建议。举个例子，当你写错了一个变量名，Cursor 会立刻弹出提醒：“老铁，这里有问题，帮你修复了。”&lt;/p&gt;
&lt;p&gt;如果你曾因为一个逗号漏了半天没找出来，那你可能会立刻给 Cursor 磕头感恩。&lt;/p&gt;
&lt;h3 id=&#34;23-从自然语言生成代码程序员的心灵翻译器&#34;&gt;2.3 &lt;strong&gt;从自然语言生成代码：程序员的‘心灵翻译器’&lt;/strong&gt;
&lt;/h3&gt;&lt;p&gt;这是 Cursor 的杀手锏之一。它能将你的 “人话” 翻译成“机器话”。比如，你输入一句话：“我需要一个函数，计算所有奇数的平方和。” Cursor 就会基于你的描述生成相应的代码。想象一下：你不再需要脑补复杂的逻辑流程，只需说出需求，代码立马呈现。&lt;/p&gt;
&lt;h3 id=&#34;24-代码优化建议做你的编程导师&#34;&gt;2.4 &lt;strong&gt;代码优化建议：做你的编程导师&lt;/strong&gt;
&lt;/h3&gt;&lt;p&gt;Cursor 不仅帮你写代码，还帮你&lt;strong&gt;写得更好&lt;/strong&gt;。它可以提出代码优化建议，告诉你哪里可以使用更高效的算法或更简洁的语法，就像一个贴身的编程导师，随时随地为你指点迷津。&lt;/p&gt;
&lt;h3 id=&#34;25-自动文档生成帮你偷懒的终极工具&#34;&gt;2.5 &lt;strong&gt;自动文档生成：帮你偷懒的终极工具&lt;/strong&gt;
&lt;/h3&gt;&lt;p&gt;还在为写文档头疼吗？Cursor 自动帮你生成注释和文档说明。你写的每一行代码，它都能帮你配上优雅的注释，完美解决 “代码如诗，注释如坟” 的局面。&lt;/p&gt;
&lt;h3 id=&#34;26-多语言支持无论你在哪个编程国度&#34;&gt;2.6 &lt;strong&gt;多语言支持：无论你在哪个‘编程国度’&lt;/strong&gt;
&lt;/h3&gt;&lt;p&gt;Cursor 不仅局限于一种编程语言，它支持多种编程语言——Python、JavaScript、Java、C++，你能想到的主流语言，它基本都能搞定。这意味着，你可以在任何编程语言的环境下，享受 Cursor 的 AI 魔法。&lt;/p&gt;
&lt;h2 id=&#34;1-cursor-的使用场景编程的各个角落都有它的身影&#34;&gt;1. &lt;strong&gt;Cursor 的使用场景：编程的各个角落都有它的身影&lt;/strong&gt;
&lt;/h2&gt;&lt;h3 id=&#34;11-快速原型开发用它写代码就像开了加速器&#34;&gt;1.1 &lt;strong&gt;快速原型开发：用它写代码，就像开了加速器&lt;/strong&gt;
&lt;/h3&gt;&lt;p&gt;当你需要快速构建一个产品原型，Cursor 能帮你省掉大量的时间。它可以自动生成代码，帮你迅速验证想法。再也不需要花数小时从零开始搭建一个项目了，Cursor 可以帮你直接 “从头到尾” 生成基础逻辑。&lt;/p&gt;
&lt;h3 id=&#34;12-复杂项目调试它是你调试中的-侦探助手&#34;&gt;1.2 &lt;strong&gt;复杂项目调试：它是你调试中的 “侦探助手”&lt;/strong&gt;
&lt;/h3&gt;&lt;p&gt;大型项目中，调试代码是一件费时费力的事。Cursor 能够通过智能分析自动发现错误，甚至提出修复方案。在面对复杂的系统调试时，它就是你最强大的 AI“侦探助手”。&lt;/p&gt;
&lt;h3 id=&#34;13-学习编程的新手福音它是-带你飞-的导师&#34;&gt;1.3 &lt;strong&gt;学习编程的新手福音：它是 “带你飞” 的导师&lt;/strong&gt;
&lt;/h3&gt;&lt;p&gt;对于新手来说，Cursor 简直就是&lt;strong&gt;梦寐以求的老师&lt;/strong&gt;。不会写代码？没关系，Cursor 可以把你的自然语言描述翻译成代码。不会调试？没问题，它自动帮你找出代码中的问题。它不仅能让你快速上手编程，还能帮你学会如何优化代码，事半功倍。&lt;/p&gt;
&lt;h3 id=&#34;14-跨语言项目开发者的多语言助手&#34;&gt;1.4 &lt;strong&gt;跨语言项目：开发者的多语言助手&lt;/strong&gt;
&lt;/h3&gt;&lt;p&gt;如果你正在开发一个跨语言的项目，Cursor 的多语言支持让你不再需要每次切换语言时都得重新适应。它会帮你快速转换思维，不管是前端的 JavaScript，还是后端的 Python，都能轻松搞定。&lt;/p&gt;
&lt;h2 id=&#34;2-让-cursor-写一个-dns-服务器&#34;&gt;2. 让 Cursor 写一个 dns 服务器
&lt;/h2&gt;&lt;p&gt;今天我们来使用 Cursor 写代码，体验一下他到底是超级牛批呢还是小菜鸡一枚。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;下载安装&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;官网：https://www.cursor.com/&lt;/p&gt;
&lt;p&gt;下载安装、注册登录这里略过，把内容留给有用的部分吧。&lt;/p&gt;
&lt;h3 id=&#34;2-开始使用吧&#34;&gt;2. 开始使用吧
&lt;/h3&gt;&lt;p&gt;我这里随便新建一个文件夹 MYCURSOR
&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1728707028202410121223512.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;然后 Command + i 弹出对话框。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1728707050202410121224339.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;3-写一个-dns-服务器&#34;&gt;3. 写一个 dns 服务器
&lt;/h3&gt;&lt;p&gt;输入我想让他实现的功能&lt;/p&gt;
&lt;p&gt;用 python 写一个简单 DNS 服务器，要求包含的功能:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;支持查询 A 记录、CNAME 记录。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;可以设置上级 DNS 服务器，如设置上级 DNS 为 223.5.5.5。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;从 dns_config. Txt 中读取内容，如果 dns_config. Txt 中没有对应的解析记录则去上级 DNS 服务器查询，如果有则返回结果，&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Dns_config. Txt 内容格式如下：&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.abcd.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;www.abcd.com&lt;/a&gt; A 1.2.3.4&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.asdf.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;www.asdf.com&lt;/a&gt; CNAME &lt;a class=&#34;link&#34; href=&#34;https://www.baidu.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;www.baidu.com&lt;/a&gt;&lt;/p&gt;
&lt;ol start=&#34;5&#34;&gt;
&lt;li&gt;我本地 IP 为 192.168.2.20，要求可以使用比如 nslookup &lt;a class=&#34;link&#34; href=&#34;https://www.abcd.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;www.abcd.com&lt;/a&gt; 192.168.2.20 进行查询。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1728707084202410121224786.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;几秒后，在他一顿猛如虎的操作下给出了不知道靠不靠谱的内容，且来欣赏一番。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1728707107202410121225883.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;不仅写出来 simple_dns_server. Py 文件还是给出了使用说明。&lt;/p&gt;
&lt;p&gt;初版&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;60
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;61
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;62
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;63
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;64
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;65
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;66
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;67
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;68
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;69
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;70
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;71
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;72
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;73
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;74
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;75
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;76
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;77
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;78
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;79
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;80
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;81
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;socket&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;struct&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;threading&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;time&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dnslib&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;DNSRecord&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;DNSHeader&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;DNSQuestion&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;RR&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;A&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;CNAME&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;QTYPE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 上级DNS服务器&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;UPSTREAM_DNS&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;223.5.5.5&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 本地IP&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;LOCAL_IP&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;192.168.2.20&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# DNS配置文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;CONFIG_FILE&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;dns_config.txt&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 读取DNS配置&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;load_dns_config&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;config&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CONFIG_FILE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;r&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;line&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;parts&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;line&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;strip&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;split&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;domain&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;record_type&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parts&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;config&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;domain&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;record_type&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;config&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 查询上级DNS服务器&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;query_upstream&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;query&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;sock&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;socket&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;socket&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;socket&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;AF_INET&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;socket&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SOCK_DGRAM&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;sock&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;settimeout&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;try&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;sock&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sendto&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;query&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pack&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;UPSTREAM_DNS&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;53&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;_&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sock&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;recvfrom&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1024&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;DNSRecord&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;except&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;socket&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;timeout&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;finally&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;sock&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;close&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 处理DNS请求&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;handle_dns_request&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;addr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;socket&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;request&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;DNSRecord&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;reply&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;DNSRecord&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DNSHeader&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;header&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;qr&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;aa&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ra&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;q&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;q&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;qname&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;q&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;qname&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;qtype&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;q&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;qtype&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;dns_config&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;load_dns_config&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;qtype&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;QTYPE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;A&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;qname&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;A&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dns_config&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;reply&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add_answer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;RR&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;qname&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;QTYPE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;A&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rdata&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;A&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dns_config&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;qname&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;A&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)])))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;elif&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;qname&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;CNAME&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dns_config&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;cname&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dns_config&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;qname&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;CNAME&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;reply&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add_answer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;RR&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;qname&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;QTYPE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CNAME&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rdata&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CNAME&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cname&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cname&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;A&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dns_config&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;reply&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add_answer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;RR&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cname&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;QTYPE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;A&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rdata&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;A&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dns_config&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cname&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;A&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)])))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;upstream_reply&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;query_upstream&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;upstream_reply&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;reply&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;upstream_reply&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;elif&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;qtype&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;QTYPE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CNAME&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;qname&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;CNAME&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dns_config&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;reply&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add_answer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;RR&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;qname&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;QTYPE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CNAME&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rdata&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CNAME&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dns_config&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;qname&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;CNAME&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)])))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;upstream_reply&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;query_upstream&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;upstream_reply&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;reply&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;upstream_reply&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;socket&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sendto&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;reply&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pack&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;addr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 主函数&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;sock&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;socket&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;socket&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;socket&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;AF_INET&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;socket&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SOCK_DGRAM&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;sock&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bind&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;LOCAL_IP&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;53&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;DNS服务器运行在 {LOCAL_IP}:53&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;addr&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sock&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;recvfrom&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1024&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;threading&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Thread&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;target&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;handle_dns_request&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;addr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sock&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;start&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;__name__&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;__main__&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;使用说明&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1728707150202410121225582.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image.png&#34;
	
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;4-接受-cursor-生成的内容&#34;&gt;4. 接受 Cursor 生成的内容
&lt;/h3&gt;&lt;p&gt;只需点击右下角 accept all 即可保持代码&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1728707166202410121226270.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;可以看到左右文件栏中文件 simply_dn&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1728707183202410121226029.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;5-生成配置文件&#34;&gt;5. 生成配置文件
&lt;/h3&gt;&lt;p&gt;接下来让他帮忙生成 dns_config. Txt 配置&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1728707195202410121226315.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;文件内容如下：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1728707210202410121226564.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;6-实践是检验真理的唯一标准&#34;&gt;6. 实践是检验真理的唯一标准
&lt;/h3&gt;&lt;p&gt;接下来见证奇迹的时刻到了，运行代码测试一下看是否可以达到预期目的&lt;/p&gt;
&lt;p&gt;先来安装说明要求的 dnslib&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;pip3&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;install&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dnslib&lt;/span&gt;               
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Defaulting&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;to&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;user&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;installation&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;because&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;normal&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;site&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;packages&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;writeable&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Collecting&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dnslib&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;Downloading&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dnslib&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;0.9&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;25&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;py3&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;none&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;any&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;whl&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;kB&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;████████████████████████████████&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;kB&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;kB&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;s&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Installing&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;collected&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;packages&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dnslib&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Successfully&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;installed&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dnslib&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;0.9&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;25&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;WARNING&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;You&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;are&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pip&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;version&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;21.2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;however&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;version&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;24.2&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;available&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;You&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;should&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;consider&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;upgrading&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;via&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;/Library/Developer/CommandLineTools/usr/bin/python3 -m pip install --upgrade pip&amp;#39;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;command&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然后启动 dns 服务器&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo python3 simple_dns_server.py
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1728707233202410121227359.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;然后运行 nslookup 查询结果，&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nslookup www.example.com 192.168.2.20
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;7-泼了一盆冷水&#34;&gt;7. 泼了一盆冷水
&lt;/h3&gt;&lt;p&gt;按照配置文件 dns_config. Txt 中的配置 &lt;a class=&#34;link&#34; href=&#34;https://www.example.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;www.example.com&lt;/a&gt; A 192.0.2.1 应该查询的结果为 192.0.2.1 才符合预期，我们来试试&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1728707259202410121227154.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image.png&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;这明显是没有读取配置文件中的内容呢，把结果告诉 cursor 让他改进&lt;/p&gt;
&lt;h3 id=&#34;8-让-cursor-面壁思过&#34;&gt;8. 让 Cursor 面壁思过
&lt;/h3&gt;&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1728707282202410121227490.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image.png&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;可以他修改后代码有两处发生了变化，&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1728707297202410121228664.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;点击 Accept all 接受修改&lt;/p&gt;
&lt;h3 id=&#34;9-大功告成&#34;&gt;9. 大功告成
&lt;/h3&gt;&lt;p&gt;重新运行 dns 服务器&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo python3 simple_dns_server.py
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id=&#34;91-然后再进行解析查询&#34;&gt;9.1 然后再进行解析查询
&lt;/h4&gt;&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1728707315202410121228411.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;这次可以看到返回结果符合预期。&lt;/p&gt;
&lt;h4 id=&#34;92-再来测试一个-cname-的记录&#34;&gt;9.2 再来测试一个 cname 的记录， 
&lt;/h4&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nslookup shop.example.com 192.168.2.20
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1728707323202410121228569.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;可以看到符合配置文件中的设置。&lt;/p&gt;
&lt;h3 id=&#34;93-查询一个配置文件中不存在的解析记录&#34;&gt;9.3 查询一个配置文件中不存在的解析记录；
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nslookup www.cnblogs.com 192.168.2.20
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1728707334202410121228788.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;可以看到查询配置中不存在的解析记录时，他会向上层 dns 查询。&lt;/p&gt;
&lt;p&gt;至此, Cursor 已经按照要求完成了代码的编写。&lt;/p&gt;
&lt;p&gt;最终代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;60
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;61
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;62
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;63
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;64
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;65
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;66
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;67
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;68
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;69
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;70
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;71
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;72
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;73
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;74
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;75
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;76
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;77
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;78
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;79
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;80
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;81
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;socket&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;struct&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;threading&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;time&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dnslib&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;DNSRecord&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;DNSHeader&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;DNSQuestion&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;RR&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;A&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;CNAME&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;QTYPE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 上级DNS服务器&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;UPSTREAM_DNS&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;223.5.5.5&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 本地IP&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;LOCAL_IP&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;192.168.2.20&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# DNS配置文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;CONFIG_FILE&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;dns_config.txt&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 读取DNS配置&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;load_dns_config&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;config&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CONFIG_FILE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;r&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;line&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;parts&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;line&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;strip&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;split&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;domain&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;record_type&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parts&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;config&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;domain&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lower&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;record_type&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;config&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 查询上级DNS服务器&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;query_upstream&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;query&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;sock&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;socket&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;socket&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;socket&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;AF_INET&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;socket&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SOCK_DGRAM&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;sock&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;settimeout&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;try&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;sock&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sendto&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;query&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pack&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;UPSTREAM_DNS&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;53&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;_&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sock&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;recvfrom&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1024&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;DNSRecord&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;except&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;socket&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;timeout&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;finally&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;sock&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;close&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 处理DNS请求&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;handle_dns_request&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;addr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;socket&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;request&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;DNSRecord&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;reply&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;DNSRecord&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DNSHeader&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;header&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;qr&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;aa&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ra&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;q&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;q&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;qname&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;q&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;qname&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lower&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;rstrip&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;.&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;qtype&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;q&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;qtype&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;dns_config&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;load_dns_config&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;qtype&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;QTYPE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;A&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;qname&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;A&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dns_config&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;reply&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add_answer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;RR&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;qname&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;QTYPE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;A&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rdata&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;A&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dns_config&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;qname&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;A&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)])))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;elif&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;qname&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;CNAME&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dns_config&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;cname&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dns_config&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;qname&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;CNAME&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;reply&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add_answer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;RR&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;qname&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;QTYPE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CNAME&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rdata&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CNAME&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cname&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cname&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lower&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;A&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dns_config&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;reply&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add_answer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;RR&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cname&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;QTYPE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;A&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rdata&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;A&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dns_config&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cname&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lower&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;A&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)])))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;upstream_reply&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;query_upstream&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;upstream_reply&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;reply&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;upstream_reply&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;elif&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;qtype&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;QTYPE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CNAME&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;qname&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;CNAME&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dns_config&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;reply&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add_answer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;RR&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;qname&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;QTYPE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CNAME&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rdata&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CNAME&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dns_config&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;qname&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;CNAME&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)])))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;upstream_reply&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;query_upstream&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;upstream_reply&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;reply&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;upstream_reply&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;socket&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sendto&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;reply&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pack&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;addr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 主函数&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;sock&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;socket&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;socket&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;socket&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;AF_INET&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;socket&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SOCK_DGRAM&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;sock&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bind&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;LOCAL_IP&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;53&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;DNS服务器运行在 {LOCAL_IP}:53&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;addr&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sock&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;recvfrom&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1024&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;threading&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Thread&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;target&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;handle_dns_request&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;addr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sock&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;start&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;__name__&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;__main__&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Dns_config. Txt 内容如下：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;www.example.com A 192.0.2.1   blog. Example. Com CNAME www.example.com   Mail. Example. Com A 192.0.2.2   Ftp. Example. Com A 192.0.2.3   Shop. Example. Com CNAME store. Example. Com   Store. Example. Com A 192.0.2.4   Api. Example. Com A 192.0.2.5   Cdn. Example. Com CNAME content. Example. Com   Content. Example. Com A 192.0.2.6   support. Example. Com A 192.0.2.7 &lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&#34;10-细思极恐&#34;&gt;10. 细思极恐
&lt;/h3&gt;&lt;p&gt;我们一共给 cursor 说了三句话，他就把所有内容生成了，而且实现了我的要求&lt;/p&gt;
&lt;p&gt;第一句话：说明我的需求。&lt;br&gt;
第二句话：让他生成 dns_config. Txt 配置文件。&lt;br&gt;
第三句话：把错误给他，让他改正。&lt;/p&gt;
&lt;p&gt;你觉得 Cursor 强大吗，会不会有一天代替你呢&lt;/p&gt;
&lt;p&gt;随着 AI 编程工具如 Cursor 的崛起，很多程序员会有一个现实的担忧：“这东西会不会取代我？” 虽然 Cursor 的确让编码变得更高效，但它并不会让程序员 “失业”。相反，它让程序员的工作方式发生转变，未来可能更多依赖于创新和战略性技能，而非简单的代码编写。&lt;/p&gt;
&lt;h2 id=&#34;1-初级程序员面临的挑战重复劳动的消亡&#34;&gt;1 &lt;strong&gt;初级程序员面临的挑战：重复劳动的消亡&lt;/strong&gt;
&lt;/h2&gt;&lt;p&gt;对不起，新手程序员，AI 有点 “不客气”。初入行的你，可能从事大量重复性工作，比如模板代码的编写、简单功能的实现、bug 修复等。这些任务通常不需要太多创造力，反而更依赖经验积累和耐心。而这些“繁琐任务” 正是 Cursor 的强项。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;例子&lt;/strong&gt;： 假设你是一名刚入职的程序员，任务是为一个电商网站的后端构建用户注册模块。传统情况下，你需要：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;编写表单验证逻辑&lt;/li&gt;
&lt;li&gt;设置数据库交互&lt;/li&gt;
&lt;li&gt;实现输入数据的校验和处理&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;而 Cursor 可以自动生成这些常见的模块和逻辑。你可能需要花几个小时完成的模板代码，它几秒钟就搞定。这意味着公司可能会减少初级程序员的人数需求，因为很多基础性代码已可以通过 AI 工具快速生成。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;但不要慌！机会依然存在。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;初级程序员面对的挑战不在于他们会被完全取代，而是&lt;strong&gt;角色和技能&lt;/strong&gt;将需要重新定义。未来，入门级程序员需要更快掌握以下几个方面：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;掌握 AI 工具的使用&lt;/strong&gt;：如何与 Cursor 等 AI 工具协作，将成为基本技能。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;提升理解业务需求的能力&lt;/strong&gt;：AI 可以生成代码，但理解业务需求并转化为技术实现仍需要人的介入。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;跨领域知识&lt;/strong&gt;：例如理解 UI/UX 设计、产品开发等，让自己不只是 “代码工匠”，而是具备多样化技能的开发者。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;2-高级程序员需求上升你要学会驾驭魔法&#34;&gt;2 &lt;strong&gt;高级程序员需求上升：你要学会驾驭‘魔法’&lt;/strong&gt;
&lt;/h2&gt;&lt;p&gt;相较于初级程序员，高级程序员的前景更为乐观。事实上，AI 工具如 Cursor 的广泛应用，将加速&lt;strong&gt;高级开发人才的需求&lt;/strong&gt;。原因在于，AI 工具虽然能够生成代码，但高级开发工作中涉及的设计、架构和复杂决策仍需要人类的创造性思维和经验。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;例子&lt;/strong&gt;： 如果你是一个高级架构师，在负责搭建一个微服务架构的大型企业系统。你需要考虑：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;系统的可扩展性和容错性&lt;/li&gt;
&lt;li&gt;如何设计微服务之间的通信协议&lt;/li&gt;
&lt;li&gt;如何优化数据存储和检索&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些高级别的系统设计问题，AI 目前无法替代。Cursor 虽然能够帮助你快速生成一些基础的服务逻辑，但当涉及到性能优化、跨团队的技术协作以及复杂的架构设计时，还是得依赖你脑中的 “魔法公式”。&lt;/p&gt;
&lt;p&gt;Cursor 成了 &lt;strong&gt;“超级助手”&lt;/strong&gt;，帮你自动生成一些琐碎代码，让你有更多的时间和精力去思考系统整体架构、前瞻性的技术规划、创新功能设计等高层次问题。&lt;/p&gt;
&lt;p&gt;因此，高级程序员不仅不会被 Cursor 替代，反而能更加专注于发挥自己的创造力与经验，将 AI 当作工具，提高开发效率。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;重点在于：驾驭工具，而非被工具控制。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;要做到这一点，高级程序员需要进一步强化自己在以下领域的技能：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;架构设计能力&lt;/strong&gt;：了解复杂系统的架构，尤其是能够处理大规模、高并发的系统设计。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;战略性思维&lt;/strong&gt;：不仅能写代码，更要思考代码对整个项目、产品和业务的影响。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI 工具的深度掌握&lt;/strong&gt;：高级程序员需要不仅会使用 AI 工具，还能调整和定制这些工具来满足复杂需求。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;3-编程技能的演变你不只是代码工匠还是技术指挥家&#34;&gt;3 &lt;strong&gt;编程技能的演变：你不只是‘代码工匠’，还是‘技术指挥家’&lt;/strong&gt;
&lt;/h2&gt;&lt;p&gt;随着 AI 工具的普及，未来程序员的角色将发生重大变化。编程已经不再是单纯的写代码——更多的是思考如何解决问题、如何设计复杂系统、如何与机器智能协作。这让程序员从 “代码工匠” 转型为“技术指挥家”。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;例子&lt;/strong&gt;： 想象一下，你现在的角色不再是坐在电脑前一行行写代码，而是像指挥家一样，分配不同的 AI 工具去处理各个部分：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;让 Cursor 生成代码&lt;/li&gt;
&lt;li&gt;让另一个 AI 工具进行代码审查&lt;/li&gt;
&lt;li&gt;你自己负责把所有模块拼接成一个完整的系统&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在这种情境下，&lt;strong&gt;编程技能的演变&lt;/strong&gt;非常关键：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;战略性系统思维&lt;/strong&gt;：未来的程序员不仅需要懂得如何写代码，还要懂得如何整体设计和把控技术策略。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;问题解决能力&lt;/strong&gt;：AI 工具可以帮你生成代码，但它们解决不了你面临的所有问题——尤其是那些涉及深层业务逻辑和复杂算法的挑战。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;跨团队协作&lt;/strong&gt;：随着 AI 工具的普及，开发团队将更加专注于创新性功能的设计和实现。如何与设计师、产品经理甚至 AI 工具紧密合作，将成为开发工作的重要部分。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;技能的转型：掌握 AI 与技术的融合之道&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;程序员们需要学习的不仅是编程语言，还有如何与 AI 共存与合作。未来的核心技能之一是&lt;strong&gt;如何将 AI 工具与自己的工作流程无缝结合&lt;/strong&gt;，从&lt;/p&gt;
&lt;p&gt;最终，Cursor 和其他 AI 编程工具带来的不仅是挑战，还有大量机会。虽然初级程序员可能面临某种程度的压力，但未来将涌现出更多高级开发需求，更多侧重于战略、架构和复杂问题解决的工作。&lt;/p&gt;
&lt;p&gt;程序员的角色不会因为 AI 而消失，反而会变得更具创造性和价值。&lt;strong&gt;Cursor&lt;/strong&gt; 并不是程序员的 “替代者”，而是他们的“工具箱” 中又多了一件利器。掌握如何与 AI 工具共舞，将成为每一个程序员在未来技术世界中的核心竞争力。&lt;/p&gt;
&lt;p&gt;所以，不用担心失业，关键在于如何利用 AI 工具变得更聪明、更高效，并在新技术浪潮中始终保持学习与进化的状态。&lt;/p&gt;
&lt;p&gt;还不赶紧去试试 &lt;strong&gt;Cursor&lt;/strong&gt;？让它带你飞吧，感受 AI 编程助手的魔力！&lt;/p&gt;
&lt;p&gt;本文出自：&lt;a class=&#34;link&#34; href=&#34;https://www.cnblogs.com/Sunzz/p/18425390&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&amp;ldquo;放开那代码让我来！&amp;quot;——Cursor帮你写代码的奇妙之旅 - Sunzz - 博客园&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>书签「上上千」：用 Linkding 和 Trilium 自建服务轻松管理</title>
        <link>https://blog.ccino.org/p/thousands-of-bookmarks-easily-manage-them-with-linkding-and-trilium-self-built-services/</link>
        <pubDate>Fri, 11 Oct 2024 13:56:31 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/thousands-of-bookmarks-easily-manage-them-with-linkding-and-trilium-self-built-services/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/thousands-of-bookmarks-easily-manage-them-with-linkding-and-trilium-self-built-services/Thousands%20of%20bookmarks%20Easily%20manage%20them%20with%20Linkding%20and%20Trilium%20self-built%20services.png" alt="Featured image of post 书签「上上千」：用 Linkding 和 Trilium 自建服务轻松管理" /&gt;&lt;h2 id=&#34;前言&#34;&gt;前言
&lt;/h2&gt;&lt;p&gt;目前各大主流浏览器都会自带书签同步功能，无论是 PC 端还是移动端，只要登录一下账号就能轻松访问自己收藏的书签，可以说保存书签的成本越来越低。但是随着收藏内容的增多，使用书签的成本反而会直线上升。&lt;/p&gt;
&lt;p&gt;因为最近在少数派上看到了几篇网络书签的相关文章，就也想和大家分享一下目前我自己使用的一套书签方案。因为经常查各种资料，所以收藏的书签很多很杂，数量上应该有几千个，直接导致传统的浏览器收藏夹基本没法用，最后只能选了自建网络书签服务这条路，在用过许多开源方案后选择了 Linkding 和 Trilium 相结合的方案。如果你的书签数量较少，或是不具备自建服务的条件的话，本篇文章可能对你意义不大，大家可以酌情阅读。&lt;/p&gt;
&lt;p&gt;因为文章中用到的 Linkding 和 Trilium 都属于自建服务，每个人喜欢的安装方式可能都有差别，网上相关的安装教程多如牛毛，所以我在文中并不会介绍相关内容，而是专注于使用经验方面的分享。当然，安装的话我建议直接根据我下文中给出的官方文档中的步骤进行，以免网上中文教程版本滞后。&lt;/p&gt;
&lt;h2 id=&#34;传统书签收藏的痛点&#34;&gt;传统书签收藏的痛点
&lt;/h2&gt;&lt;h3 id=&#34;查找困难&#34;&gt;查找困难
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;查找困难&lt;/strong&gt;是传统浏览器书签收藏系统最大的痛点，究其本质我个人归纳为可用于查找的信息维度过少。少到什么程度呢，你可以试试导出自己浏览器的书签，一般会得到一个 html 文件，以 Edge 浏览器为例，通常一条书签记录会包含如下字段：&lt;/p&gt;
&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;名称&lt;/td&gt;&lt;td&gt;含义&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;folder&lt;/td&gt;&lt;td&gt;所在文件夹名称（可多层）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;href&lt;/td&gt;&lt;td&gt;书签记录的网址&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;add_date&lt;/td&gt;&lt;td&gt;保存书签的时间戳（部分浏览器并不支持书签按时间排序）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;icon&lt;/td&gt;&lt;td&gt;书签图标（对搜索而言为无效信息）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;title&lt;/td&gt;&lt;td&gt;书签名称&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;看着有五个字段，但实际常被用于搜索的也就两条，文件夹名称和书签名称。从使用的角度来说，三层文件夹应该是普通人能接受的极限了（我自己只能接受一层文件夹）。单单靠少量的文件夹分类的话肯定是不现实的，因为当书签量级上来之后，单个文件夹中的书签数量不可避免地会增加，依旧会面临翻找困难的情况。这时候想要提高查找速度就必定要用到搜索，文件夹层级有限的情况下就只能在书签名称上做文章，较为可行的方法就是在书签名称的最后加关键词，加的越多越详细，后期搜索到的可能性就越高。理论上每次添加书签时都严格按照提前规划好的文件夹层级以及关键词命名规则的话，最后也能得到一份高度可用的收藏夹。&lt;/p&gt;
&lt;h3 id=&#34;整理困难&#34;&gt;整理困难
&lt;/h3&gt;&lt;p&gt;但这就引申出其另一个痛点，&lt;strong&gt;整理困难&lt;/strong&gt;。首先第一个困难就是文件夹的分类，事物的联系具有多样性，每一个书签指向的内容都不是非此即彼的，很难归纳出一个所有人通用的文件夹分层结构，最多在你长时间的使用中逐渐妥协为一个相对适合你自己使用的框架。但即便如此，你也总会遇到许多让你纠结其归属的书签，为了方便使用可能某一个书签需要同时在多个文件层级中保存。除了文件夹更需要费脑筋的是书签的命名，直接用默认的网页名称固然方便，但搜索的时候就难免力不从心。&lt;/p&gt;
&lt;p&gt;浏览网页的时候看到感兴趣的内容随手点一下地址栏旁的收藏按钮，这应该是很多人使用收藏夹的本能，每次加个书签都深思熟虑其文件夹归属和详尽的关键词命名未免过于严苛，流程繁琐不说，更重要的是可能会打断自己的思路，长时间下来定期整理总是逃不掉的。这时候就不得不品味浏览器收藏夹那简陋的多选和拖拽移动功能了，少量使用体验完美，量大就是折磨了。如果追求高可用性，可能还需要单独修改每个书签的名称，光是想想就够头疼的。&lt;/p&gt;
&lt;h3 id=&#34;快照&#34;&gt;快照
&lt;/h3&gt;&lt;p&gt;接下来的痛点严格来说算是我个人的痛点，和浏览器中的收藏夹系统本身无关，属于我希望它有但是它没有的功能。首当其冲的就是&lt;strong&gt;快照&lt;/strong&gt;功能，虽然这个功能可以通过安装浏览器插件的形式轻松实现，但是插件保存的快照终究是另外存放的，需要自己手动保存不说，后期想与书签对上还免不了一番折腾，便利性上终究差点意思。&lt;/p&gt;
&lt;h3 id=&#34;多端同步&#34;&gt;多端同步
&lt;/h3&gt;&lt;p&gt;最后一个痛点则是&lt;strong&gt;多端同步&lt;/strong&gt;，虽然开篇就说了目前的浏览器都支持多端同步，但是很尴尬的一点就是，我在各个平台上使用的浏览器并不相同，电脑上还好说，直接用 Edge 就行，但是手机、平板之类的移动设备就比较麻烦了，可能会存在多个浏览器混用的情况，这时候依托于浏览器账户的收藏夹同步功能就捉襟见肘了。&lt;/p&gt;
&lt;h2 id=&#34;网络书签服务linkding&#34;&gt;网络书签服务：&lt;strong&gt;Linkding&lt;/strong&gt;
&lt;/h2&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://sspai.com/link?target=https%3A%2F%2Flinkding.link%2F&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Linkding&lt;/a&gt; 是目前为止我用下来最好用的开源网络书签服务，基本解决了我上面提到的四个痛点。不过这个服务有几个比较明显的缺点，没法接受的话就不用看下去了。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;操作界面只有英文。当然，中文书签是支持的，只是设置、按钮等只有英文。我不太清楚有没有大佬封装过中文的镜像，暂时没有查找过。不过其实对使用的影响几乎没有，总共也就那么几个单词，并没有什么太高的门槛。&lt;/li&gt;
&lt;li&gt;部分服务，类似书签图标等需要使用魔法或是自行配置相关参数。核心功能其实都是服务器本地运行的，不使用魔法体感下来影响不大。&lt;/li&gt;
&lt;li&gt;默认界面比较朴实，基本就是一堆网页元素的简单堆积。理论上如果你懂 css 的话可以在设置中自定义 css 语句来修改显示效果，想要花里胡哨也是可以实现的。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1728626485202410111401602.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;标签系统&#34;&gt;标签系统
&lt;/h3&gt;&lt;h4 id=&#34;概念介绍&#34;&gt;概念介绍
&lt;/h4&gt;&lt;p&gt;先说一下 Linkding 最核心的标签（Tag）系统，与传统的文件夹系统不同，标签系统更加自由和发散。文件夹系统是线性的，一个书签只能从属于一个文件夹，一个子文件夹只能从属于一个父文件夹；而标签系统则是多对多的关系，一个书签可以同时拥有无数个标签，各个标签之间都是同级的，互相之间没有从属关系。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1728626500202410111401844.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;
乍一看好像区别不大，但实际使用时却是天壤之别。举一个简单的例子，假如我需要在书签收藏中找到 PyMongo 的官方文档，那在 Linkding 中只需要先点击「@文档」标签，再点击「mongodb」标签，就能轻松筛选出所有符合的结果。对于经常需要比对同一类型资料，或是「模糊搜索」的用户可谓是神器。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1728626513202410111401566.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;h4 id=&#34;使用技巧&#34;&gt;使用技巧
&lt;/h4&gt;&lt;p&gt;之前提到过 Linkding 界面只支持英文，这一点对其标签的排列顺序其实也存在着影响。观察 Tags 这一列就能发现，标签是按照其首字母分行排列的，对于英文标签这样排列非常合理，但是如果使用全中文标签的话就会遇到一个问题，那就是所有中文开头的标签都会被归类到同一行。&lt;/p&gt;
&lt;p&gt;这个特性对中文标签来说非常致命，毕竟所有标签挤在一行想要快速找出其中一个的难度就会大大提高。不过解决的方法非常简单，就是根据每个中文标签开头字符的拼音为其添加一个首字母，类似「x 下载」这样的形式。进一步地，我们可以利用其排列特性来实现一些别的需求，比如说对于常用链接可以添加一个「! 常用」的标签，这样该标签就会默认出现在标签区域的第一行。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1728626524202410111402739.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;
标签机制因为其灵活性，刚开始使用的时候可能会有点无所适从，不知从何处入手，收藏的时候可能还会产生一些不必要的纠结，比如这个词要不要设置成标签等。这些其实都是正常情况，我刚开始用的时候也是这样，主要是怕用的久了之后杂乱的标签和之前的文件夹一样难以整理。作为一个长期使用过的用户，我给出两条参考建议：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;每个链接都要分配一个大类，比如可以根据其功能分成「@工具」「@论坛」「@娱乐」等，这些大类不必一次整理清楚，可以想到什么就写什么，不过为了和其他标签形成区分，推荐以「@」开头。当某一天你觉得无论是什么链接都能划分到这些大类之后，就可以开始尝试将它们合并精简，最终将大类个数控制在个位数即可。这些大类标签其实充当着传统书签系统中的一级文件夹的角色，如果你平常就有整理书签文件夹的习惯，可以直接把这些文件夹的名称套用过来。&lt;/li&gt;
&lt;li&gt;除了大类标签外，每一个链接都尽可能地将所有其涉及的特征点作为标签加上去。加标签的时候不需要有任何的顾虑，所有你脑海中当时跳出来的词汇都可以作为标签加上去，多多益善。你加的标签越多，后续使用的时候找起来就越简单，唯一要注意的是同义词不要重复出现，能复用标签时就尽量不要再创建一个新的类似标签。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;书签结构&#34;&gt;书签结构
&lt;/h3&gt;&lt;h4 id=&#34;概念介绍-1&#34;&gt;概念介绍
&lt;/h4&gt;&lt;p&gt;默认安装参数下，Linkding 的数据库使用的是 SQLite，所以书签数据是以「. Sqlite 3」后缀的文件格式保存的。只要用 SQLiteStudio 之类的软件打开就能查看和修改其中的数据。&lt;/p&gt;
&lt;p&gt;我们可以先看一下 Linkding 中书签的所有字段：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1728626535202410111402994.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;名称&lt;/td&gt;&lt;td&gt;含义&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;id&lt;/td&gt;&lt;td&gt;书签主键&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;url&lt;/td&gt;&lt;td&gt;书签记录的网址&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;title&lt;/td&gt;&lt;td&gt;书签名称&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;description&lt;/td&gt;&lt;td&gt;书签介绍&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;website_title&lt;/td&gt;&lt;td&gt;网页默认名称&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;website_description&lt;/td&gt;&lt;td&gt;网页默认介绍&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;unread&lt;/td&gt;&lt;td&gt;是否标为待阅读&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;is_archived&lt;/td&gt;&lt;td&gt;是否标为已归档（即不常用书签或失效书签）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;web_archive_snapshot_url&lt;/td&gt;&lt;td&gt;Internet Archive 中该网页的快照地址&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;favicon_file&lt;/td&gt;&lt;td&gt;图标文件保存地址&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;notes&lt;/td&gt;&lt;td&gt;关于该书签的笔记（支持 Markdown 语法）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;preview_image_file&lt;/td&gt;&lt;td&gt;预览图片保存地址&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;tags&lt;/td&gt;&lt;td&gt;标签与书签的对应关系在一张单独的关系表中，上图中并没有体现&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;与标签相关的字段比较简单，就一张标签信息表和标签 - 书签多对多关系表。
&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1728626549202410111402676.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1728626559202410111402405.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;常用的几个书签属性在使用浏览器插件收藏网页的时候就可以直接编辑。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1728626577202410111402186.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;与传统书签系统中可怜的两三个搜索维度相比，Linkding 明显领先太多了，表格中出现的字段内容基本都可以作为搜索元素来进行查找。也就是说，无论是标题、介绍，还是笔记中出现的文本都可以作为关键词来检索，在保持标题简单明了的前提下依旧可以获得远超传统书签的搜索维度。&lt;/p&gt;
&lt;h4 id=&#34;使用技巧-1&#34;&gt;使用技巧
&lt;/h4&gt;&lt;p&gt;因为书签的特征不再只有标题这一个维度，所以保存书签时一般不需要修改网页默认的名称，就算要修改也建议将其修改得更加简洁明了。为了便于后续搜索或再阅读，description 以及 notes 需要作为修改的重点。大部分情况下 description 可以使用网页默认描述，要手动编辑的话也尽量用客观的语句描述其实际内容。而 notes 则可以自由一点，并且其本身支持 Markdown 语法，显示效果也会好很多。以我自己为例给大家一些参考，某些知识类的文章可能要点就那么几句话或是几行代码，没什么单独开篇笔记收藏的必要，就可以直接写在 notes 中；找到合适的素材时可以在 notes 中记录下该素材的用法或当时的灵感思路等。总结一下就是三点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;title：简洁明了，一般保持默认即可。&lt;/li&gt;
&lt;li&gt;description：客观描述网页内容，一般保持默认即可。&lt;/li&gt;
&lt;li&gt;notes：记录网页中的核心知识点、收藏的理由、灵感思路等，一般留空即可。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Unread 和 is_archived 这两个字段很好理解，前者就是很多浏览器自带的待阅读功能，后者则是归档功能，就是把已经失效或是长时间不会再用到的书签隐藏到一个单独的分类中。两者都可以通过首页的 Bookmarks 按钮快速切换，各自都有其独立的分区。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1728626612202410111403269.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;
归档这个功能我很喜欢，相较于直接把失效书签删除，把它们关小黑屋总有一种一朝一日它们还能重见天日的错觉。反正也不占什么空间，留着当个念想总是好的。&lt;/p&gt;
&lt;p&gt;相较于归档，待阅读的花样就多一点。我一般不把它作为待阅读列表使用，而是更接近近期常用的概念，或者说是素材库，把搜索出来也许会用的书签统一标为待阅读。Linkding 的批处理功能是相当优秀的，如下图所示，归档、删除、增加标签、移除标签、标记为已读、标记为未读，这六个核心功能都支持批处理操作，效率远超浏览器收藏夹。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1728626625202410111403005.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;h4 id=&#34;拓展&#34;&gt;拓展
&lt;/h4&gt;&lt;p&gt;上面提到过的三张表 bookmarks_bookmark、bookmarks_tag、bookmarks_bookmark_tags 是 Linkding 中最核心的数据表，它们都在 Linkding 数据文件夹的 db. Sqlite 3 这一数据库文件中。因为该文件中数据都是公开的，没有加密一说，操作空间就很大了。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1728626634202410111403134.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;
Linkding 虽然自带导出书签为 html 文件的功能，但是因为其本身并没有文件夹的概念，所以使用其导出的文件导入到 Edge 浏览器就会存在水土不服的情况。我的服务器有一次宕机之后系统出了点问题，但书签每天都要用，就写了个 python 脚本将其按照特定的要求导出为 Edge 可识别的 html 文件应急。具体的导出要求是以「@」开头的标签为文件夹，将所有书签分类放置在其中，同时将每个书签的标签汇总后添加到书签名称的最后。脚本用起来非常简单，与 db. Sqlite 3 文件放置在同一目录下运行即可。&lt;/p&gt;
&lt;p&gt;这里给出这个案例有多方面的考虑，一是向大家展示一下 Linkding 这种用单个数据库文件存储数据对于个人用户的便利性，因为需要备份的数据就那么几个，甚至以后 Linkding 不再维护，用户依旧可以很轻松地转移到任何其他平台；二是给大家提供另一种 Linkding 的使用思路，可以将其作为单纯的整理工具，使用其强大的批处理界面以及优秀的数据库结构来整理汇总自己的书签，最后导出到更常使用的平台。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;  1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 60
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 61
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 62
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 63
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 64
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 65
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 66
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 67
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 68
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 69
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 70
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 71
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 72
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 73
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 74
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 75
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 76
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 77
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 78
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 79
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 80
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 81
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 82
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 83
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 84
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 85
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 86
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 87
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 88
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 89
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 90
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 91
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 92
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 93
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 94
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 95
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 96
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 97
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 98
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 99
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;100
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;101
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;102
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;103
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;104
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;105
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;106
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;107
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;108
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;109
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;110
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;111
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;112
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;113
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;114
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;115
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;116
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;117
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;118
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;119
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;120
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;121
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;122
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;123
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;124
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;125
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;126
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;127
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;128
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;129
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;130
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;131
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;132
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;133
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;134
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;135
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;136
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;137
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;138
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;139
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;140
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;141
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;142
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;143
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;144
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;145
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;146
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;147
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;148
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;149
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;150
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;151
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;152
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;153
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;154
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;155
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;156
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;157
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;158
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;159
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;160
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;161
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;162
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;163
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;164
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;165
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;166
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;167
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;168
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;169
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;170
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;171
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;172
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;173
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;174
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;175
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;176
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;177
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;178
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;179
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;180
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;181
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;182
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;183
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;184
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;185
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;186
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;187
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;188
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;189
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;190
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;191
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;192
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;193
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;194
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;195
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;196
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;197
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;198
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;199
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;200
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;201
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;202
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;203
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;204
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;205
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;206
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;207
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;208
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;209
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;210
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;211
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;212
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;213
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;214
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;215
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;216
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;217
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;218
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;219
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;220
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;221
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;222
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;223
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;224
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;225
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;226
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;227
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;228
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;229
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;230
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;231
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;232
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;233
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;234
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;235
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;236
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;237
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;238
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;239
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;240
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;241
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;242
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;243
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;244
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;245
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;246
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;247
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;248
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;249
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;250
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;251
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;252
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;253
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;254
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;255
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;256
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;257
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;258
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;259
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;260
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;261
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;262
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;263
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;264
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;265
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;266
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;267
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;268
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;269
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;270
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;271
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;272
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;273
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;274
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;275
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;276
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;277
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;278
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;279
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;280
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;281
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;282
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;283
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;284
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;285
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;286
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;287
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;288
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;289
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;290
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;291
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;292
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;293
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;datetime&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sqlite3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;typing&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Optional&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dateutil&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parse&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;lxml&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;etree&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;class&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;DatabaseManager&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;    用于读取书签数据库文件
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;    &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;__init__&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;db_file&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;conn&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sqlite3&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;connect&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;db_file&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cursor&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;conn&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cursor&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;__enter__&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;__exit__&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;exc_type&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;exc_val&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;exc_tb&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cursor&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;close&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;conn&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;close&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;__iter__&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cursor&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;execute&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;select * from bookmarks_bookmark&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;__next__&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;# 获取单条书签数据&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;tem&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cursor&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;fetchone&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tem&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;raise&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;StopIteration&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;# 根据书签 id 查找对应的标签&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;c&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;conn&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cursor&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;cmd&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;select bookmarks_tag.name from bookmarks_bookmark_tags &amp;#34;&lt;/span&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;s2&#34;&gt;&amp;#34;join bookmarks_tag on bookmarks_bookmark_tags.tag_id = bookmarks_tag.id &amp;#34;&lt;/span&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;s2&#34;&gt;&amp;#34;where bookmarks_bookmark_tags.bookmark_id = {}&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;tags&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;execute&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cmd&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;format&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tem&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]))&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;fetchall&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;tags&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tag&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tag&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tags&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;res&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tem&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;# 将标签数据以 list 的形式添加到原本书签数据的最后&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;res&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;append&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tags&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;close&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;res&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;timestr_to_timestamp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;timestr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;    将字符串形式的时间转为时间戳
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;:param
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt; timestr:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;:return
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;    &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;timestr&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;+0000&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;timestamp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;())&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;class&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;HtmlGenerator&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;    用于构造 Edge 浏览器支持导入的书签文件
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;    主要参考 Edge 浏览器导出的 html 文件格式
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;    &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;__init__&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;root&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;etree&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Element&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;DT&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;# 当前时间戳，用于后续一些需要时间戳的场景&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;# self.t = str(int(datetime.datetime.now(datetime.UTC).timestamp()))  # 高版本python&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;t&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;ne&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;datetime&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;datetime&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;utcnow&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;timestamp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;h3&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;etree&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SubElement&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;root&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;H3&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                              &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                  &lt;span class=&#34;s2&#34;&gt;&amp;#34;ADD_DATE&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;t&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                  &lt;span class=&#34;s2&#34;&gt;&amp;#34;LAST_MODIFIED&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;t&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                  &lt;span class=&#34;s2&#34;&gt;&amp;#34;PERSONAL_TOOLBAR_FOLDER&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;true&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                              &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;h3&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;text&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;收藏夹栏&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;# 后续用于存放各文件夹和书签的元素&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dl&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;etree&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SubElement&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;root&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;DL&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;# 存放各书签文件夹对应的元素&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;folder&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;generate_folder&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;        创建一个书签文件夹对应的元素
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;:param
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt; name:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;:return
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;        &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;dt&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;etree&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SubElement&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dl&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;dt&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;h3&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;etree&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SubElement&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;H3&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                              &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                  &lt;span class=&#34;s2&#34;&gt;&amp;#34;ADD_DATE&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;t&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                  &lt;span class=&#34;s2&#34;&gt;&amp;#34;LAST_MODIFIED&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;t&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                              &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;h3&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;text&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;dl&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;etree&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SubElement&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;DL&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;folder&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dl&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;add_bookmark&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;url&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;add_date&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;folder&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Optional&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;        添加书签到指定父元素中
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;:param
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt; url:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;:param
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt; add_date:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;:param
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt; title:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;:param
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt; folder:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;:return
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;        &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;folder&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;dt&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;etree&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SubElement&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dl&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;dt&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;dt&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;etree&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SubElement&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;folder&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;folder&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;dt&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;etree&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SubElement&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;A&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;s2&#34;&gt;&amp;#34;HREF&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;url&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;s2&#34;&gt;&amp;#34;ADD_DATE&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;add_date&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;text&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;title&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;tostring&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;        将根元素转化为字符串
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;:return
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;        &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;etree&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tostring&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;root&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;encoding&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;utf-8&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pretty_print&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;decode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;utf-8&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;handle_one&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;        将数据库中导出的单条书签数据转为 html 元素
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;:param
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt; data:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;:return
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;        &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 从原始数据中提取出部分需要的数据&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;url&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;title&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;add_date&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;timestr_to_timestamp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;tags&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;17&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;# 将所有标签合并为一个整体，添加到书签名的最后，方便后续在浏览器中查找&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;tag&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34; &amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;join&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tags&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tag&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;tag&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;【{}】&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;format&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tag&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;title&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tag&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;# 对于没有标签的书签直接将其置于收藏夹根目录下&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tags&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add_bookmark&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;url&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;add_date&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;# 根据标签中带“@&amp;#34;的标签名来对书签进行分类，归于不同的文件夹中&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tag&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tags&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;@&amp;#34;&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tag&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tag&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;@&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;folder&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tag&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;generate_folder&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tag&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add_bookmark&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;url&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;add_date&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tag&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;export_to_edge&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;db&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;        导出为 Edge 浏览器支持的 html 文件
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;:param
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt; db:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;:param
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt; path:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;:return
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;        &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;DatabaseManager&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;db&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;d&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;d&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;handle_one&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;html_template&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&amp;#34;&amp;lt;!DOCTYPE NETSCAPE-Bookmark-file-1&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&amp;lt;!-- This is an automatically generated file.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;     It will be read and overwritten.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;     DO NOT EDIT! --&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&amp;lt;META HTTP-EQUIV=&amp;#34;Content-Type&amp;#34; CONTENT=&amp;#34;text/html; charset=UTF-8&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&amp;lt;TITLE&amp;gt;Bookmarks&amp;lt;/TITLE&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&amp;lt;H1&amp;gt;Bookmarks&amp;lt;/H1&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&amp;lt;DL&amp;gt;{}&amp;lt;/DL&amp;gt;&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;w&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;encoding&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;utf-8&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;write&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;html_template&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;format&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tostring&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;__name__&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;__main__&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;h&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;HtmlGenerator&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;h&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;export_to_edge&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;db.sqlite3&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;bookmarks.html&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;快照-1&#34;&gt;快照
&lt;/h3&gt;&lt;p&gt;以书签系统为核心的网络书签服务其实有很多，有不少甚至在颜值上吊打 Linkding，但最后还是 Linkding 获得了我的青睐，很关键的一点就是它提供的双重快照系统。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1728626656202410111404001.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;
上面那个 Internet Archive 是一个在线服务，开启后服务器会调用该网站的 API 接口将你收藏的网址链接提交上去，然后该网站就会抓取该时刻书签网址上的内容进行保存。Internet Archive 是一个很有名的非营利性数字图书馆，保存着互联网上不计其数的网页内容，有兴趣的可以去了解捐赠一波。&lt;/p&gt;
&lt;p&gt;当然，这个快照的局限性非常大，我一般不作为主力使用。首先，想要正常访问 Internet Archive 的话需要使用一点魔法；其次它的抓取对于一些需要登录才能访问相关数据的网站基本没用，就国内互联网这个环境，很多抓取都没有意义。&lt;/p&gt;
&lt;p&gt;下面这个快照则是纯正的本地快照，不过该功能只有特定版本的 Docker 镜像才会开启，安装时最好选择 &lt;a class=&#34;link&#34; href=&#34;https://sspai.com/link?target=https%3A%2F%2Flinkding.link%2Finstallation%2F&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;latest-plus&lt;/a&gt; 版本。该功能开启后服务器会自动抓取书签的网页内容，和 Internet Archive 类似，需要登录验证的网页同样会抓取失败。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1728626664202410111404623.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;
不过这个是有解决办法的，因为 Linkding 同时提供了手动上传文件作为快照的备选方案。点开书签的详情页，会有一个「Upload file」的按钮，点击即可上传本地文件。这里对于文件的格式没有任何要求，但还是推荐上传可以用浏览器直接打开的 pdf、txt、html 等格式，不然点击浏览按钮后会直接对该文件进行下载。对于文章类的网页推荐直接 Ctrl+P 打印为 pdf 上传，其他网页则推荐使用浏览器插件打包为单个 html 文件后上传。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1728626674202410111404266.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;
对于一些比较重要的文章其实我个人会更加倾向于直接全文收藏到 Trilium 笔记中，算是对网页快照的一个补强，具体内容会在 Trilium 章节中详细介绍。&lt;/p&gt;
&lt;h3 id=&#34;其他&#34;&gt;其他
&lt;/h3&gt;&lt;p&gt;Linkding 设置里面还有两个可能会用到的功能，这里给大家介绍一下。首先是 Auto Tagging，顾名思义，就是可以根据你预设的规则在收藏书签时自动为其加上某些标签，这里以哔哩哔哩的专栏为例。
&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1728626719202410111405595.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;另一个是 Custom CSS，自定义页面的 CSS，也就是可以更改页面布局。这个需要一点专业知识才能玩转，普通用户可以试着改改字体大小颜色等，比如说把书签颜色改成猛男粉。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1728626682202410111404405.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;
&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1728626772202410111406430.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;最后提一下手机端如何收藏书签的问题，无论是安卓还是 iOS 都有类似 PC 端浏览器插件的实现方式，具体参考&lt;a class=&#34;link&#34; href=&#34;https://sspai.com/link?target=https%3A%2F%2Flinkding.link%2Fhow-to%2F&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;官方指南&lt;/a&gt;。&lt;/p&gt;
&lt;h2 id=&#34;个人笔记服务trilium&#34;&gt;个人笔记服务：Trilium
&lt;/h2&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://sspai.com/link?target=https%3A%2F%2Fgithub.com%2Fbaddate%2Ftrilium%2Fwiki&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Trilium&lt;/a&gt; 是一个可以多端同步的笔记软件。市面上开源的笔记软件其实很多，Trilium 应该算是比较小众的，主要是功能太多，没有耐心很难体会到它的妙处。我其实只能算是它的初级用户，只会一些比较简单的操作，许多高级特性都没有尝试过。Trilium 的功能完全可以单独胜任个人数据库构建的重任，但下文中我只会简单介绍一个与书签相关的特性。&lt;/p&gt;
&lt;p&gt;之前介绍过 Linkding 的快照功能，里面说了一些特殊情况下的网页备份方法，但对于图文类的文章我其实很少使用其手动上传功能。主要原因是我个人更加喜欢用 Markdown 的格式来记录图文数据，于知识记录而言，pdf 和 html 终究是不够纯粹和方便。&lt;/p&gt;
&lt;p&gt;将网页转化为纯粹的图文数据这一需求曾经困扰过我很久，我尝试过很多不同的开源项目或浏览器插件，结果都不尽如人意，总是会存在一些小问题，直到偶然尝试了一下 Trilium 的浏览器插件这一问题才算是落下帷幕。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1728626786202410111406659.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;
插件上有一个选项是「Save whole page」，可以直接把当前网页上的图文保存为一篇本地笔记，识别率相当高，基本不需要修改就可以得到一篇排版正确的笔记，不过它只会保存文章的主体或是帖子的主楼，也就是说评论和跟帖并不会被保存下来。绝大部分博客类的网站都能完美适配，部分站点可能会存在图片无法显示的问题，不想一张张图片手动复制粘贴的话可以参照 Linkding 快照部分讲解的方法。&lt;/p&gt;
&lt;p&gt;这项功能完美补全了 Linkding 在待阅读方面的短板。我目前对于一篇有价值的网页文章的基本操作流程就是先用 Linkding 的浏览器插件保存书签，然后使用 Trilium 的浏览器插件保存图文到笔记系统。保存书签是为了方便后续深入阅读时可以随时查看有价值的评论或跟帖，保存图文则是将其作为待阅读的素材，后续阅读时可以很方便的删改整理为自己的笔记。&lt;/p&gt;
&lt;p&gt;插件上另一个常用的选项是「Save windows&amp;rsquo; tabs as a list」，可以将当前浏览器窗口中所有 Tab 页的网页链接以列表的形式保存到笔记中，设计这个功能的人绝对是懂工作的，后续想要回到同样的工作场景只需要打开对应笔记点击列表中的链接就能完美复原浏览器状态。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1728626794202410111406881.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;
这可以算是一个额外的专项任务收藏夹，可以将一些日常工作场景下会打开的链接提前收藏好，需要用到时就能快速开始该场景下的工作，结合上文中我提到过的使用 Linkding 的 unread 列表来作为近期任务工作区，可以极大的提高工作效率。&lt;/p&gt;
&lt;h2 id=&#34;后记&#34;&gt;后记
&lt;/h2&gt;&lt;p&gt;Linkding 和 Trilium 这种本地服务最重要的就是保证数据安全，如果想要使用我的这套方案请务必设置好服务器数据的&lt;strong&gt;定期备份&lt;/strong&gt;，数据一旦丢失，想要再次补全的代价实在过于高昂，请务必慎重。&lt;/p&gt;
&lt;p&gt;本文出自：&lt;a class=&#34;link&#34; href=&#34;https://sspai.com/post/92796&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;书签「上上千」：用 Linkding 和 Trilium 自建服务轻松管理 - 少数派&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>实现本地 RAG 服务：整合 Open WebUI、Ollama 和 Qwen2.5</title>
        <link>https://blog.ccino.org/p/implementing-local-rag-services-integrating-open-webui-ollama-and-qwen2.5/</link>
        <pubDate>Wed, 09 Oct 2024 09:34:43 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/implementing-local-rag-services-integrating-open-webui-ollama-and-qwen2.5/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/implementing-local-rag-services-integrating-open-webui-ollama-and-qwen2.5/Implementing%20local%20RAG%20services%20Integrating%20Open%20WebUI%20Ollama%20and%20Qwen2.5.png" alt="Featured image of post 实现本地 RAG 服务：整合 Open WebUI、Ollama 和 Qwen2.5" /&gt;&lt;h2 id=&#34;-引言&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#%e5%bc%95%e8%a8%80&#34; &gt;#&lt;/a&gt; 引言
&lt;/h2&gt;&lt;p&gt;在构建信息检索和生成式 AI 应用时，Retrieval-Augmented Generation (RAG) 模型凭借其能够从知识库中检索相关信息并生成准确答案的强大能力，受到越来越多开发者的青睐。然而，实现端到端的本地 RAG 服务，需求的不只是合适的模型，还需要集成强大的用户界面和高效的推理框架。&lt;/p&gt;
&lt;p&gt;在构建本地 RAG 服务时，利用易于部署的 Docker 方式，可以极大简化模型管理和服务集成。这里我们依赖 Open WebUI 提供的用户界面与模型推理服务，再通过 Ollama 来引入 &lt;code&gt;bge-m3&lt;/code&gt; embedding 模型以实现文档向量化方式的检索功能，从而帮助 Qwen 2.5 完成更精准的答案生成。&lt;/p&gt;
&lt;p&gt;本文我们将讨论如何通过 Docker 快速启动 Open WebUI，同步 Ollama 的 RAG 能力，并结合 Qwen 2.5 模型实现高效的文档检索与生成系统。&lt;/p&gt;
&lt;h2 id=&#34;-项目概览&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#%e9%a1%b9%e7%9b%ae%e6%a6%82%e8%a7%88&#34; &gt;#&lt;/a&gt; 项目概览
&lt;/h2&gt;&lt;p&gt;该项目将使用以下关键工具：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Open WebUI&lt;/strong&gt; : 提供用户与模型交互的 web 界面。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ollama&lt;/strong&gt; : 用于管理 embedding 和大语言模型的模型推理任务。其中 Ollama 中的 &lt;code&gt;bge-m3&lt;/code&gt; 模型将用于文档检索，Qwen 2.5 将负责回答生成。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Qwen 2.5&lt;/strong&gt; : 模型部分使用阿里推出的 Qwen 2.5 系列，为检索增强生成服务提供自然语言生成。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;为了实现 RAG 服务，我们需要以下步骤：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;部署 Open WebUI 作为用户交互界面。&lt;/li&gt;
&lt;li&gt;配置 Ollama 以高效调度 Qwen 2.5 系列模型。&lt;/li&gt;
&lt;li&gt;使用 Ollama 配置的名为 &lt;code&gt;bge-m3&lt;/code&gt; 的 embedding 模型实现检索向量化处理。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;-部署-open-webui&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#%e9%83%a8%e7%bd%b2-open-webui&#34; &gt;#&lt;/a&gt; 部署 Open WebUI
&lt;/h2&gt;&lt;p&gt;Open WebUI 提供了一个简洁的 Docker 化解决方案，用户无需手动配置大量依赖，直接通过 Docker 启动 Web 界面。&lt;/p&gt;
&lt;p&gt;首先，服务器上需要确保已经安装了 &lt;a class=&#34;link&#34; href=&#34;https://docs.docker.com/get-docker/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Docker&lt;/a&gt; ，如果没有安装，可以通过以下命令进行快速安装：&lt;/p&gt;
&lt;p&gt;然后创建一个目录用于保存 Open WebUI 的数据，这样数据不会在项目更新后丢失：&lt;/p&gt;
&lt;p&gt;接下来，我们可以通过以下命令来启动 Open WebUI ：&lt;/p&gt;
&lt;p&gt;如果想要运行支持 Nvidia GPU 的 Open WebUI ，可以使用以下命令：&lt;/p&gt;
&lt;p&gt;这里我们将 Open WebUI 的服务暴露在机器的 3000 端口，可以通过浏览器访问 &lt;code&gt;http://localhost:3000&lt;/code&gt; 即可使用（远程访问则使用公网 ip ，开放 3000 端口）。/DATA/open-webui 是数据存储目录，你可以根据需要调整这个路径。&lt;/p&gt;
&lt;p&gt;当然除了 Docker 安装方式外，你也可以通过 pip 、源码编译、Podman 等方式安装 Open WebUI 。更多安装方式请参考 &lt;a class=&#34;link&#34; href=&#34;https://docs.openwebui.com/getting-started&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Open WebUI 官方文档&lt;/a&gt; 。&lt;/p&gt;
&lt;h3 id=&#34;-基础设置&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#%e5%9f%ba%e7%a1%80%e8%ae%be%e7%bd%ae&#34; &gt;#&lt;/a&gt; 基础设置
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;输入要注册的账号信息，&lt;strong&gt;设置强密码！！！&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;重要&lt;/p&gt;
&lt;p&gt;第一个注册的用户将被自动设置为系统管理员，所以请确保你是第一个注册的用户。&lt;/p&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;点击左下角头像，选择管理员面板&lt;/li&gt;
&lt;li&gt;点击面板中的设置&lt;/li&gt;
&lt;li&gt;关闭允许新用户注册（可选）&lt;/li&gt;
&lt;li&gt;点击右下角保存&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1728452229202410091337569.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;-配置-ollama-和-qwen-25&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#%e9%85%8d%e7%bd%ae-ollama-%e5%92%8c-qwen25&#34; &gt;#&lt;/a&gt; 配置 Ollama 和 Qwen 2.5
&lt;/h2&gt;&lt;h3 id=&#34;-部署-ollama&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#%e9%83%a8%e7%bd%b2-ollama&#34; &gt;#&lt;/a&gt; 部署 Ollama
&lt;/h3&gt;&lt;p&gt;在本地服务器上安装 Ollama。目前 Ollama 提供多种安装方式，请参考 Ollama 的&lt;a class=&#34;link&#34; href=&#34;https://ollama.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;官方文档&lt;/a&gt; 下载安装最新的 &lt;code&gt;0.3.11&lt;/code&gt; 版本（Qwen 2.5 在该版本才开始支持）。安装细节可以参考我之前写的一篇文章：&lt;a class=&#34;link&#34; href=&#34;https://cuterwrite.top/p/ollama/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ollama：从入门到进阶&lt;/a&gt; 。&lt;/p&gt;
&lt;p&gt;启动 Ollama 服务（如果是 Docker 方式启动则不需要，但必须暴露 11434 端口）：&lt;/p&gt;
&lt;p&gt;Ollama 服务启动后，可以通过访问地址 &lt;code&gt;http://localhost:11434&lt;/code&gt; 连接到 Ollama 服务。&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://ollama.com/library&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ollama Library&lt;/a&gt; 提供了语义向量模型 ( &lt;code&gt;bge-m3&lt;/code&gt; ) 以及各大文本生成模型（包括 Qwen 2.5）。下一步我们将配置 Ollama 以适应本项目对文档检索和问答生成的需求。&lt;/p&gt;
&lt;h3 id=&#34;-下载-qwen-25-模型&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#%e4%b8%8b%e8%bd%bd-qwen25-%e6%a8%a1%e5%9e%8b&#34; &gt;#&lt;/a&gt; 下载 Qwen 2.5 模型
&lt;/h3&gt;&lt;p&gt;通过 Ollama 安装 Qwen 2.5，你可以直接在命令行中运行 &lt;code&gt;ollama pull&lt;/code&gt; 命令来下载 Qwen 2.5 模型，比如要下载 Qwen 2.5 的 72 B 模型，可以使用以下命令：&lt;/p&gt;
&lt;p&gt;该命令将从 Ollama 的模型仓库抓取 Qwen 2.5 模型，并准备运行环境。&lt;/p&gt;
&lt;p&gt;Qwen 2.5 提供了多种模型尺寸，包括 72 B、32 B、14 B、7 B、3 B、1.5 B、0.5 B 等，你可以根据自己的需求和 GPU 显存大小选择合适的模型。我采用的是 4 x V 100 的服务器，所以可以直接选择 72 B 模型。如果要求吐字速度快且能接收微小的性能损失的话，可以使用 &lt;code&gt;q4_0&lt;/code&gt; 量化版本 &lt;code&gt;qwen2.5:72b-instruct-q4_0&lt;/code&gt; ；如果能接受吐字速度慢一些，可以使用 &lt;code&gt;qwen2.5:72b-instruct-q5_K_M&lt;/code&gt; 。对于 4 x V 100 的服务器，虽然 &lt;code&gt;q5_K_M&lt;/code&gt; 模型的 token 生成明显卡顿，但是为了试验一下 Qwen 2.5 的性能，我还是选择了 &lt;code&gt;q5_K_M&lt;/code&gt; 模型。&lt;/p&gt;
&lt;p&gt;对于显存较少的个人电脑，推荐使用 14 B 或 7 B 模型，通过以下命令下载：&lt;/p&gt;
&lt;p&gt;或者&lt;/p&gt;
&lt;p&gt;如果你同时启动好了 Open WebUI 和 Ollama 服务，那么也可以在管理员面板中下载模型。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1728452256202410091337687.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;-下载-bge-m-3-模型&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#%e4%b8%8b%e8%bd%bd-bge-m3-%e6%a8%a1%e5%9e%8b&#34; &gt;#&lt;/a&gt; 下载 bge-m 3 模型
&lt;/h3&gt;&lt;p&gt;在 Ollama 中下载 &lt;code&gt;bge-m3&lt;/code&gt; 模型，该模型用于文档向量化处理。在命令行中运行以下命令下载模型（或者在 Open WebUI 界面下载）：&lt;/p&gt;
&lt;p&gt;到这里，我们已经完成了 Ollama 的配置，接下来我们将在 Open WebUI 中配置 RAG 服务。&lt;/p&gt;
&lt;h2 id=&#34;-rag-集成与配置&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#rag-%e9%9b%86%e6%88%90%e4%b8%8e%e9%85%8d%e7%bd%ae&#34; &gt;#&lt;/a&gt; RAG 集成与配置
&lt;/h2&gt;&lt;h3 id=&#34;-在-open-webui-中配置-ollama-的-rag-接口&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#%e5%9c%a8-open-webui-%e4%b8%ad%e9%85%8d%e7%bd%ae-ollama-%e7%9a%84-rag-%e6%8e%a5%e5%8f%a3&#34; &gt;#&lt;/a&gt; 在 Open WebUI 中配置 Ollama 的 RAG 接口
&lt;/h3&gt;&lt;h4 id=&#34;-访问-open-webui-管理界面&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#%e8%ae%bf%e9%97%ae-open-webui-%e7%ae%a1%e7%90%86%e7%95%8c%e9%9d%a2&#34; &gt;#&lt;/a&gt; 访问 Open WebUI 管理界面
&lt;/h4&gt;&lt;p&gt;启动 Open WebUI 之后，你可以直接通过 Web 浏览器访问服务地址，登录你的管理员账户，然后进入管理员面板。&lt;/p&gt;
&lt;h4 id=&#34;-设置-ollama-接口&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#%e8%ae%be%e7%bd%ae-ollama-%e6%8e%a5%e5%8f%a3&#34; &gt;#&lt;/a&gt; 设置 Ollama 接口
&lt;/h4&gt;&lt;p&gt;在 Open WebUI 的管理员面板中，点击&lt;strong&gt;设置&lt;/strong&gt;，你会看到外部连接的选项，确保 Ollama API 的地址为 &lt;code&gt;host.docker.internal:11434&lt;/code&gt; ，然后点击右边的 &lt;strong&gt;verify connection&lt;/strong&gt; 按钮确认 Ollama 服务是否正常连接。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1728452287202410091338331.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;h4 id=&#34;-设置语义向量模型&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#%e8%ae%be%e7%bd%ae%e8%af%ad%e4%b9%89%e5%90%91%e9%87%8f%e6%a8%a1%e5%9e%8b&#34; &gt;#&lt;/a&gt; 设置语义向量模型
&lt;/h4&gt;&lt;p&gt;在 Open WebUI 的管理员面板中，点击&lt;strong&gt;设置&lt;/strong&gt;，接着点击&lt;strong&gt;文档&lt;/strong&gt;，依次完成以下步骤：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;设置语义向量模型引擎为 Ollama 。&lt;/li&gt;
&lt;li&gt;设置语义向量模型为 &lt;code&gt;bge-m3:latest&lt;/code&gt; 。&lt;/li&gt;
&lt;li&gt;其余设置可以保持默认，这里我设置了文件最大上传大小为 10 MB，最大上传数量为 3，Top K 设置为 5，块大小和块重叠分别设置为 1500 和 100 ，并开启 PDF 图像处理。&lt;/li&gt;
&lt;li&gt;点击右下角保存。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1728452305202410091338720.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;-测试-rag-服务&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#%e6%b5%8b%e8%af%95-rag-%e6%9c%8d%e5%8a%a1&#34; &gt;#&lt;/a&gt; 测试 RAG 服务
&lt;/h3&gt;&lt;p&gt;现在，你已经实现了完整的本地 RAG 系统。你可以在 Open WebUI 的主界面中输入任意自然语言问题，然后上传响应文档，系统会调用语义向量模型向量化文档，再使用 Qwen 2.5 模型检索文档生成答案并返回给用户。&lt;/p&gt;
&lt;p&gt;在 Open WebUI 的用户聊天界面，上传你要检索的文档，然后输入你的问题，点击发送，Open WebUI 将会调用 Ollama 的 &lt;code&gt;bge-m3&lt;/code&gt; 模型进行文档向量化处理，然后调用 Qwen 2.5 模型进行问答生成。&lt;/p&gt;
&lt;p&gt;这里我上传了一个简单的 &lt;code&gt;txt&lt;/code&gt; 文件（由 GPT 生成的文本），内容如下：&lt;/p&gt;
&lt;p&gt;然后分别提了三个问题：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;艾文在森林中遇到的奇异生物是什么？&lt;/li&gt;
&lt;li&gt;艾文在洞穴中找到的古老石板上刻的是什么？&lt;/li&gt;
&lt;li&gt;艾文在祭坛中心发现了什么宝藏？&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;下图是回答结果：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/1728452323202410091338609.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;-总结&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;#%e6%80%bb%e7%bb%93&#34; &gt;#&lt;/a&gt; 总结
&lt;/h2&gt;&lt;p&gt;借助 Open WebUI 和 Ollama，我们可以轻松搭建一个高效、直观的本地 RAG 系统。通过将 &lt;code&gt;bge-m3&lt;/code&gt; 语义向量模型用于文本向量化，再结合 Qwen 2.5 生成模型，用户可以在一个统一的 Web 界面中进行文档检索与增强生成任务的高效互动。不但保护了数据隐私，还大幅提升了生成式 AI 的本地化应用能力。&lt;/p&gt;
&lt;p&gt;本文出自：&lt;a class=&#34;link&#34; href=&#34;https://cuterwrite.top/p/integrate-open-webui-ollama-qwen25-local-rag/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;实现本地 RAG 服务：整合 Open WebUI、Ollama 和 Qwen2.5&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Google旗下最新Blogger注册及使用教程（下载&#43;注册流程&#43;常见问题汇总），靠它赚美金也可以的</title>
        <link>https://blog.ccino.org/p/googles-blogger-registration-and-usage-tutorial/</link>
        <pubDate>Mon, 07 Oct 2024 13:40:05 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/googles-blogger-registration-and-usage-tutorial/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/googles-blogger-registration-and-usage-tutorial/Googles%20Blogger%20registration%20and%20usage%20tutorial.png" alt="Featured image of post Google旗下最新Blogger注册及使用教程（下载&#43;注册流程&#43;常见问题汇总），靠它赚美金也可以的" /&gt;&lt;p&gt;爱浏览博客或者写博客的朋友，可能都知道 Blogger 这个平台，它是 Google 旗下一家大型的博客服务网站，仅需拥有一个 Google 账户即可将成千上万的博文、照片以及更多内容妥善地存储在 Blogger 中。除了撰写 / 浏览博客外，你还可以通过 Blogger 赚钱。那么如何注册并使用 Blogger 呢？为了方便大家顺利拥有一个 Blogger 账号并很好的使用它，小编这里就整理了一篇最新最详细的 Blogger 注册及使用教程，包含下载，注册流程以及常见问题汇总。满满的干货，需要的朋友，赶紧来 GET 吧。&lt;/p&gt;
&lt;h2 id=&#34;blogger-简介&#34;&gt;&lt;strong&gt;Blogger 简介&lt;/strong&gt;
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;【官方网站】：&lt;a class=&#34;link&#34; href=&#34;#&#34; &gt;https://www.blogger.com/&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Blogger 原是 Google 旗下一家大型的博客服务网站。它也是第一家大规模博客服务的提供商，由旧金山一家名为 Pyra Labs 的小型公司于 1999 年 8 月创办。它就好比国内新浪提供的新浪博客、搜狐提供的个人博客、更类似于网易的自媒体、百度的自媒体。有几十套漂亮的免费主题供你选、如果不满意还可以直接在后台修改 HTML 代码、改成你喜欢的主题！利用 Blogger，你可以将成千上万的博文、照片以及更多内容妥善地存储在 Google 中。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/202410071342270.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;blogger优点&#34;&gt;&lt;strong&gt;Blogger 优点&lt;/strong&gt;
&lt;/h3&gt;&lt;p&gt;①最突出的优点就是简洁但功能强大，Blogger 没有多余而花哨的功能，必要的功能一个都不差。&lt;/p&gt;
&lt;p&gt;②Bloger 自由性最大的地方在于其模板可以自定义，也就是说你可以修改模板里的任何内容，包括 Google 的广告，这给那些懂 Html 和 CSS 的 Blogger 提供了很大的自由度。&lt;/p&gt;
&lt;p&gt;③用户还可以利用 Blogger 内置的分析功能，了解哪些博客比较受欢迎。您可以了解受众群体来自哪里，以及他们对哪些内容感兴趣。此外，你还可以将博客直接关联到 Google Analytics（分析），进一步查看详细信息。&lt;/p&gt;
&lt;p&gt;④此外，Google AdSense 会自动在您的博客上显示相关的定位广告，你只需发布自己感兴趣的内容，即可赚取收益。Blogger 还提供免费域名、如果你有独立域名、你也可以用你自己的独立域名。&lt;/p&gt;
&lt;h3 id=&#34;blogger-下载&#34;&gt;&lt;strong&gt;Blogger 下载&lt;/strong&gt;
&lt;/h3&gt;&lt;p&gt;下载 Blogger 应用，即可随时随地开始撰写博文。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;撰写博文（可保存为草稿或立即发布）&lt;/li&gt;
&lt;li&gt;编辑现有博文&lt;/li&gt;
&lt;li&gt;查看您所保存和发布的博文列表&lt;/li&gt;
&lt;li&gt;切换帐号 / 博客（如果您有多个帐号 / 博客）&lt;/li&gt;
&lt;li&gt;嵌入图库中的图片或直接通过该应用拍摄的照片&lt;/li&gt;
&lt;li&gt;向博文添加标签&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;#&#34; &gt;Google Paly&lt;/a&gt;；&lt;a class=&#34;link&#34; href=&#34;#&#34; &gt;Apple Store&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;准备工作&#34;&gt;&lt;strong&gt;准备工作&lt;/strong&gt;
&lt;/h3&gt;&lt;p&gt;Blogger 已在中国内地被永久性屏蔽。所以不能以正常步骤在我国大陆使用。所以在准备注册并使用 Blogger 之前，你需要做好以下准备。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. 稳定的科学上网工具&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这些平台有些还有免费试用，大家不妨去看看！&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. 准备好 Google 账号&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;注册 Blogger 网站的话，必须使用 Google 账户才能注册哟。&lt;/p&gt;
&lt;p&gt;如果你还没有 Google 账号，但有 &lt;strong&gt;Google Voice&lt;/strong&gt;，&lt;strong&gt;Textnow&lt;/strong&gt; 这类虚拟手机号码的话，可以试试用虚拟号码注册一个 Google 账户。如果自己注册不成功，那就找渠道购买一个吧！&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. 准备好浏览器&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;个人比较推荐使用 &lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;#&#34; &gt;Chrome 谷歌浏览器&lt;/a&gt;&lt;/strong&gt;（建议安装翻译插件，可自动帮你把英文页面翻译成中文），其次是 &lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;#&#34; &gt;Firefox 火狐浏览器&lt;/a&gt;&lt;/strong&gt;，也可以使用 &lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;#&#34; &gt;Bing&lt;/a&gt; 浏览器&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id=&#34;blogger-注册流程&#34;&gt;&lt;strong&gt;Blogger 注册流程&lt;/strong&gt;
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;第一步：&lt;a class=&#34;link&#34; href=&#34;#&#34; &gt;https://www.blogger.com/&lt;/a&gt;&lt;/strong&gt;，进入官网首页，之后点击 “创建博客”，或者右上角 “登陆”。
&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/202410071343915.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第二步&lt;/strong&gt;：如果你登录了 Google 账户的话，会弹出这样的页面，你可以直接点击你账户，就可以登陆 Blogger 了。（如果遇到点击这个选项没有反应，也可以点下方【使用其他账号】然后重新输入一下账号，就可以正常登录。）&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/202410071343265.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;选择完之后，需要你再次输入密码，验证你的账号才能登陆成功哦！
&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/202410071344083.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;但如果你自己还没有一个 Google 账号，可以点击 “使用其他账号”-“创建账号”-“为我自己创建”，然后输入你的相关信息，设置密码，从而创建一个 Google 账号。拥有一个 Google 账号，便可以使用 Google 所有产品和服务了。
&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/202410071344541.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/202410071345439.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第三步&lt;/strong&gt;：设置博客名称。如果没有想好，也可以暂时跳过，设置好了的话，就点击 “下一步”。
&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/202410071345383.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第四步&lt;/strong&gt;：为你的博客选择一个 URL，这个网址是人们如何在线找到您的博客的方式。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/202410071346110.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;如何添加域名，可以 &lt;a class=&#34;link&#34; href=&#34;https://support.google.com/blogger/answer/1233387-hl=zh-Hans&amp;amp;ref_topic=6321959&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://support.google.com/blogger/answer/1233387-hl=zh-Hans&amp;ref_topic=6321959&lt;/a&gt; 进入页面查看详情。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第五步&lt;/strong&gt;：之后，你将为你的博客署名。以上步骤完成之后，便可以进入 Blogger 的使用界面。接下来将为大家介绍一些常见的功能及使用指南。&lt;/p&gt;
&lt;h3 id=&#34;blogger-功能介绍及使用教程&#34;&gt;&lt;strong&gt;Blogger 功能介绍及使用教程&lt;/strong&gt;
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;1. 开启让搜索引擎检索&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;开启让搜索引擎检索，人们将更容易用搜索引擎（如 Google 和 Bing）找到你的博客：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;允许搜索引擎列出您的博客。&lt;/li&gt;
&lt;li&gt;在整个网站中使用关键字，使博客显示在搜索结果的较前位置。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;具体操作流程：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;#&#34; &gt;登录到 Blogger&lt;/a&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在左上方，选择要在搜索引擎中列出的博客。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;点击左侧菜单中的设置。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在 “隐私权” 下方，开启让搜索引擎检索。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;针对您博客的搜索引擎优化 (SEO) 提示&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;您可以在博文和页面的标题和文本中使用相关的关键字，也可以指定搜索引擎不要在搜索结果中显示哪些页面、博文和链接。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. 备份或导入博客&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;备份博客内容&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;要获取博客的博文、页面和评论的 .xml 文件，请执行以下操作：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#&#34; &gt;登录到 Blogger&lt;/a&gt;。&lt;/li&gt;
&lt;li&gt;在左上方，点击要备份的博客。&lt;/li&gt;
&lt;li&gt;点击左侧菜单中的设置。&lt;/li&gt;
&lt;li&gt;在 “管理博客” 下方，点击备份内容下载。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;保存博客的主题背景副本&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#&#34; &gt;登录到 Blogger&lt;/a&gt;。&lt;/li&gt;
&lt;li&gt;在左上方，点击要保存的博客。&lt;/li&gt;
&lt;li&gt;在左侧的菜单中，点击主题背景。&lt;/li&gt;
&lt;li&gt;点击右上方的 “更多” 图标。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;将博文和评论导入到您的博客&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;重要提示：你每天可以导入的文件数量存在上限，但文件大小不受限制。&lt;/p&gt;
&lt;p&gt;要导入博文和评论的 .xml 文件，请执行以下操作：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;#&#34; &gt;登录到 Blogger&lt;/a&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在左上方，点击要导入内容的博客。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;点击左侧菜单中的设置。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在 “管理博客” 下方，点击导入内容&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果您不想自动发布已导入的内容，请关闭自动发布已导入的所有博文和页面。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;选择要从计算机导入的. Xml 文件。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;点击打开。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;3. 添加团队成员&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;要管理博客和发布内容，受邀的作者和管理员需要使用 Google 帐号。要邀请读者访问您的博客，请按以下步骤操作：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#&#34; &gt;登录到 Blogger&lt;/a&gt;。&lt;/li&gt;
&lt;li&gt;在左上方，选择博客。&lt;/li&gt;
&lt;li&gt;点击左侧菜单中的设置。&lt;/li&gt;
&lt;li&gt;点击 “权限” 下方的邀请更多读者。&lt;/li&gt;
&lt;li&gt;输入您要添加的用户的电子邮件地址。&lt;/li&gt;
&lt;li&gt;点击发送。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;4. 添加作者&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;要邀请新的作者，请执行以下操作：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#&#34; &gt;登录到 Blogger&lt;/a&gt;。&lt;/li&gt;
&lt;li&gt;在左上方，选择博客。&lt;/li&gt;
&lt;li&gt;点击左侧菜单中的设置。&lt;/li&gt;
&lt;li&gt;点击 “权限” 下方的邀请更多作者。&lt;/li&gt;
&lt;li&gt;输入您要添加的作者的电子邮件地址。&lt;/li&gt;
&lt;li&gt;点击发送。对方接受邀请后，系统会将其列为作者。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;5. 将博客设为不公开&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果有人知道某个图片的网址，那么在您将博客设为不公开之后，这些人仍可查看该图片。&lt;/p&gt;
&lt;p&gt;默认情况下，您的博客是完全公开的，任何人都可以在网上阅读。&lt;/p&gt;
&lt;p&gt;要更改哪些人可以访问您的博客，请按以下步骤操作：&lt;/p&gt;
&lt;p&gt;1. &lt;a class=&#34;link&#34; href=&#34;#&#34; &gt;登录到 Blogger&lt;/a&gt;。&lt;/p&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;
&lt;p&gt;在左上方，选择博客。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;点击左侧菜单中的设置。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;点击 “权限” 下方的读者权限，然后从以下选项中选择：&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;公开：网络上的任何人都可以访问和阅读您的博客。&lt;/li&gt;
&lt;li&gt;仅作者可见：您博客的所有作者均可访问和阅读您的博客。&lt;/li&gt;
&lt;li&gt;自定义读者：只有您邀请的读者才能访问和阅读您的博客。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;6. 启用 “共享” 按钮&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;重要提示：您的博客必须设为公开状态才能使用 “共享” 按钮。&lt;/p&gt;
&lt;p&gt;要让其他人通过电子邮件和社交媒体网站分享您的博客，您可以启用 “共享” 按钮：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;#&#34; &gt;登录到 Blogger&lt;/a&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在左上方，选择博客。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;点击左侧菜单中的布局。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在 “页面主体” 部分，点击 “博文” 旁边的 “修改” 图标。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;勾选 “显示共享按钮” 旁边的复选框。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;其他常见问题&#34;&gt;&lt;strong&gt;其他常见问题&lt;/strong&gt;
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;1. 怎么删除和恢复微博？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;你必须是管理员，才能删除博客。删除博客后，您可以在短时间内恢复该博客。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;删除博客&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;登录到 Blogger。&lt;/li&gt;
&lt;li&gt;在左上方，点击要删除的博客。&lt;/li&gt;
&lt;li&gt;点击左侧菜单中的设置。&lt;/li&gt;
&lt;li&gt;在 “管理博客” 下方，点击移除博客&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;恢复已删除的博客&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;删除博客后，短期之内您仍可恢复该博客。要恢复博客，请执行以下操作：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;登录到 Blogger。&lt;/li&gt;
&lt;li&gt;在左上方的 “已移至回收站的博客” 下方，点击您要恢复的博客&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;永久删除&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;博客重要提示：永久删除博客后，所有的博客信息、博文和页面都会被删除。您将无法恢复永久删除的博客或再次使用该博客的网址。&lt;br&gt;
要在删除博客后再将其永久删除，请按照以下步骤操作：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在左上方的 “已移至回收站的博客” 下方，点击要永久删除的博客。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;2. 在你的博客上如何显示广告？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如需通过 Blogger 赚取收入，您可以在自己的博客页面上显示 AdSense 和其他广告。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;注册 AdSense&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;重要提示：请务必先完成所有步骤，然后再点击重定向。&lt;/li&gt;
&lt;li&gt;登录到 Blogger。&lt;/li&gt;
&lt;li&gt;在左上方，选择博客。&lt;/li&gt;
&lt;li&gt;点击左侧菜单中的收入然后创建 AdSense 帐号。&lt;/li&gt;
&lt;li&gt;如果您的博客目前不具备相关资格，请了解如何满足使用 AdSense 的条件。&lt;/li&gt;
&lt;li&gt;选择与您的 Blogger 帐号相关联的 Google 电子邮件地址。&lt;/li&gt;
&lt;li&gt;填写 AdSense 表单，然后点击创建帐号。&lt;/li&gt;
&lt;li&gt;输入您的付款明细，并验证电话号码。&lt;/li&gt;
&lt;li&gt;点击提交。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;系统会自动将您转至 Blogger 以完成此流程。如果没有跳转，请点击重定向。&lt;/p&gt;
&lt;p&gt;提示：如果您在完成上述步骤时被中断，请重新执行第 1 至 5 步。如果您的 AdSense 首页连续几天都显示 “我们正在为您完成配置”，请点击接受关联。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;在博文之间显示广告&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;登录到 Blogger。&lt;/li&gt;
&lt;li&gt;在左上方，选择要显示广告的博客。&lt;/li&gt;
&lt;li&gt;点击左侧菜单中的布局。&lt;/li&gt;
&lt;li&gt;根据不同的模板，选择以下操作：&lt;/li&gt;
&lt;li&gt;在 “页面主体” 下的 “博文” 中，点击修改。&lt;/li&gt;
&lt;li&gt;在 “主体” 下的 “博文” 中，点击修改。&lt;/li&gt;
&lt;li&gt;勾选 “在博文之间显示广告” 旁边的复选框。&lt;/li&gt;
&lt;li&gt;选择广告格式、颜色以及广告显示的频率。&lt;/li&gt;
&lt;li&gt;点击保存。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如需保存排列方式，请点击右下方的 “保存” 图标保存。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;在专栏中显示广告&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;登录到 Blogger。&lt;/li&gt;
&lt;li&gt;在左上方，选择要显示广告的博客。&lt;/li&gt;
&lt;li&gt;点击左侧菜单中的布局。&lt;/li&gt;
&lt;li&gt;在 “边栏” 下方，点击添加小工具。&lt;/li&gt;
&lt;li&gt;点击 “AdSense” 旁边的 “添加” 图标添加。&lt;/li&gt;
&lt;li&gt;配置 AdSense，然后点击保存。&lt;/li&gt;
&lt;li&gt;如需保存排列方式，请点击右下方的 “保存” 图标保存。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;显示来自其他广告服务的广告&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;登录到 Blogger。&lt;/li&gt;
&lt;li&gt;在左上方，选择要显示广告的博客。&lt;/li&gt;
&lt;li&gt;点击左侧菜单中的布局。&lt;/li&gt;
&lt;li&gt;将光标指向要显示广告的区域，然后点击添加小工具。&lt;/li&gt;
&lt;li&gt;在弹出式窗口中，点击 “HTML/Javascript” 旁边的 “添加” 图标添加。&lt;/li&gt;
&lt;li&gt;可选：输入标题。&lt;/li&gt;
&lt;li&gt;将广告服务网站的代码复制并粘贴到 “内容” 部分中。&lt;/li&gt;
&lt;li&gt;点击保存。&lt;/li&gt;
&lt;li&gt;如需保存排列方式，请点击右下方的 “保存” 图标保存。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;查看您的 Blogger 收入报告&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;登录到 Blogger。&lt;/li&gt;
&lt;li&gt;在左上方，选择要查看的博客。&lt;/li&gt;
&lt;li&gt;点击左侧菜单中的收入然后查看收入。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;提示：如需了解报告中各个术语的含义，请使用 AdSense 词汇表。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;如果 AdSense 未启用，应采取什么措施&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如需检查您的帐号是否仍然有效，请访问 AdSense。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;登录到 Blogger。&lt;/li&gt;
&lt;li&gt;在左上方，选择博客。&lt;/li&gt;
&lt;li&gt;点击左侧菜单中的布局。&lt;/li&gt;
&lt;li&gt;点击 “AdSense” 小工具下方的修改然后保存。&lt;/li&gt;
&lt;li&gt;针对您博客上的每个 AdSense 小工具，重复第 4 步的操作。&lt;/li&gt;
&lt;li&gt;点击 “博文” 小工具底部的修改然后保存。&lt;/li&gt;
&lt;li&gt;如需保存排列方式，请点击右下方的 “保存” 图标保存。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;设置 ads. Txt 文件&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果您的博客通过第三方提供商获利，或者您已在博客中手动集成了 AdSense，那么您需要自行设置 ads. Txt 文件的内容。详细了解 AdSense 的 ads. Txt。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;登录到 Blogger。&lt;/li&gt;
&lt;li&gt;在左上方，选择您要设置的博客。&lt;/li&gt;
&lt;li&gt;点击左侧菜单中的设置。&lt;/li&gt;
&lt;li&gt;在 “获利” 下方，开启启用自定义 ads. Txt。&lt;/li&gt;
&lt;li&gt;点击自定义 ads. Txt。&lt;/li&gt;
&lt;li&gt;从第三方获利提供商处复制设置，并将其粘贴到文本框中。&lt;/li&gt;
&lt;li&gt;点击保存。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;提示：如需查看 ads. Txt 文件的内容，请转到 http://&amp;lt;您的博客地址&amp;gt;/ads. Txt。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. 如何使用站点 Feed 在其他网站上分享自己的内容？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;当您更新网页内容时，站点 Feed 会向其他网站上的用户发送通知。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;选择要分享的内容&lt;/li&gt;
&lt;li&gt;登录到 Blogger。&lt;/li&gt;
&lt;li&gt;在左上方，选择博客。&lt;/li&gt;
&lt;li&gt;点击左侧菜单中的设置。&lt;/li&gt;
&lt;li&gt;在 “站点 Feed” 下方，点击允许博客 Feed，选择要分享的内容量。都允许：显示每篇博文的全部内容。&lt;/li&gt;
&lt;li&gt;在继续阅读标示之前：显示继续阅读标示之前的内容。&lt;/li&gt;
&lt;li&gt;摘要：显示每篇博文开头部分的摘录。&lt;/li&gt;
&lt;li&gt;自定义：针对博文、评论 Feed 或每篇博文的评论 Feed 设置高级选项。&lt;/li&gt;
&lt;li&gt;都不允许：完全停用站点 Feed。&lt;/li&gt;
&lt;li&gt;点击保存。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;使用 Blogger Feed 分享内容&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;重要提示：站点 Feed 不适用于不公开的博客。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;要分享博客，您可以将下列网址添加到 Feed 阅读器中。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;4. 如何通过其他 Feed 服务提供商分享内容？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果您使用的是 FeedBurner 或其他服务，请重定向您的 Feed 以完成设置：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;从相应服务中复制站点 Feed。&lt;/li&gt;
&lt;li&gt;登录到 Blogger。&lt;/li&gt;
&lt;li&gt;在左上方，选择博客。&lt;/li&gt;
&lt;li&gt;点击左侧菜单中的设置。&lt;/li&gt;
&lt;li&gt;在 “站点 Feed” 下方，点击博文 Feed 重定向网址。&lt;/li&gt;
&lt;li&gt;粘贴网址。&lt;/li&gt;
&lt;li&gt;点击保存。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;5. 如何将 Google Analytics（分析）与 Blogger 结合使用？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第 1 步：注册 Google Analytics（分析）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#&#34; &gt;注册 Google Analytics（分析）帐号&lt;/a&gt;。&lt;/li&gt;
&lt;li&gt;找到您的 Google Analytics（分析）跟踪 ID。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;第 2 步：向 Blogger 添加 Google Analytics（分析）跟踪&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;你最长可能需要等待 24 小时，相应数据才会显示在 Google Analytics（分析）中。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#&#34; &gt;登录到 Blogger&lt;/a&gt;。&lt;/li&gt;
&lt;li&gt;在左上方，选择要分析的博客。&lt;/li&gt;
&lt;li&gt;点击左侧菜单中的设置。&lt;/li&gt;
&lt;li&gt;在 “基本” 下方，点击 Google Analytics（分析）媒体资源 ID。&lt;/li&gt;
&lt;li&gt;输入您的 Google Analytics（分析）跟踪 ID。请确保按以下格式输入 ID：UA-XXXXX-XX。&lt;/li&gt;
&lt;li&gt;点击保存。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本文出自：&lt;a class=&#34;link&#34; href=&#34;https://www.shakingcloud.com/article/content/202301/172.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google旗下最新Blogger注册及使用教程（下载+注册流程+常见问题汇总），靠它赚美金也可以的&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>肥羊的IPTV等直播源代理Docker部署教程</title>
        <link>https://blog.ccino.org/p/feiyang-iptv-and-other-live-source-proxy-docker-deployment-tutorial/</link>
        <pubDate>Sun, 06 Oct 2024 17:23:07 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/feiyang-iptv-and-other-live-source-proxy-docker-deployment-tutorial/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/feiyang-iptv-and-other-live-source-proxy-docker-deployment-tutorial/Feiyang%20IPTV%20and%20other%20live%20source%20proxy%20Docker%20deployment%20tutorial.png" alt="Featured image of post 肥羊的IPTV等直播源代理Docker部署教程" /&gt;&lt;h2 id=&#34;最新方法1-月-25-日更新&#34;&gt;最新方法（1 月 25 日更新）
&lt;/h2&gt;&lt;p&gt;作者为了防止项目泛滥，设置了门槛，需要生成指定的 ALLINONE 部署命令才能完成安装&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;前提条件：&lt;/strong&gt; 要有 TG（电报）软件&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1️⃣生成 AES 密钥&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;打开下面这个网址，根据自己的环境生成 AES 密钥，复制保存此密钥！&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;https&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;imgtool&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;v1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;allinone&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;html&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2025/01/1736918658202501151324056.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image.png&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2️⃣获取 Userid 和专属 Token&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;打开 TG（电报）并且打开 ALLINONE 鉴权机器人，粘贴前面复制的 AES，获取 Userid 和专属 Token&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 鉴权机器人链接
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://t.me/newallinone_bot
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2025/01/1736918681202501151324601.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image.png&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3️⃣获取 ALLINONE 部署命令&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;输入在 TG 获取的 Userid 和专属 Token，生成 ALLINONE 部署命令&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2025/01/1736918705202501151325538.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;根据自己的部署方式复制部署代码即可&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2025/01/1736918721202501151325416.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4️⃣使用 Compose 方式部署&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;我以飞牛 Compose 方式部署为例&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;我们需要先创建一个路径，这个路径储存我们的 docker-Compose. Yml 的文件和配置文件&lt;/p&gt;
&lt;p&gt;打开 docker，Compose 创建项目 -&amp;gt; 输入项目名称 -&amp;gt; 设置路径 -&amp;gt; 创建 docker-compose. Yml 把前面获取到的代码复制进去，点击完成直至构建完成。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2025/01/1736918740202501151325217.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;查看容器日志显示 Custom AES key set successfully. 就完成了&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2025/01/1736918754202501151325436.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5️⃣使用&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;ALLINONE 肥羊使用，只需要在使用的地方放入相关 api 链接即可，我试了一下几乎秒播&lt;/p&gt;
&lt;hr&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# IPTV聚合
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://IP:35455/tv.m3u
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 虎牙一起看
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://IP:35455/huyayqk.m3u
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# BiliBili 生活
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://IP:35455/bililive.m3u
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 斗鱼一起看
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://IP:35455/douyuyqk.m3u
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# YY轮播
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://IP:35455/yylunbo.m3u
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;PotPlayer 操作演示&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在 PotPlayer 输入上面的链接，或者按快捷键 Ctrl+U&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2025/01/1736918770202501151326748.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2025/01/1736918782202501151326019.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2025/01/1736918794202501151326870.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;影视仓演示&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2025/01/1736918809202501151326492.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2025/01/1736918821202501151326360.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;详细进阶篇&#34;&gt;详细进阶篇
&lt;/h2&gt;&lt;p&gt;TV 直播源格式化：默认情况下，肥羊 youshandefeiyang/allinone 的接口是 m 3 u 格式。如果用户的播放器只支持 txt 格式，可以使用其他项目（yuexuangu/allinone_format）对 m 3 u 格式进行重新分组和格式化。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Compose 部署 allinone_format&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;和前面一样我们需要先创建一个路径，这个路径储存我们的 docker-Compose. Yml 的文件和配置文件&lt;/p&gt;
&lt;p&gt;打开 docker，Compose 创建项目 -&amp;gt; 输入项目名称 -&amp;gt; 设置路径 -&amp;gt; 创建 docker-compose. Yml 把前面获取到的代码复制进去，点击完成直至构建完成。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2025/01/1736918835202501151327936.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;services:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  allinone_format:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    image: yuexuangu/allinone_format:latest
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    container_name: allinone_format
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    restart: unless-stopped
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    network_mode: host
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ports:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      - &amp;#34;35456:35456&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    volumes:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      - &amp;#39;./path/to/config:/app/config&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;使用&lt;/p&gt;
&lt;p&gt;浏览器访问 http://ip:35456 进入配置页面，并且填入前面的 iptv 聚合源，保存配置&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2025/01/1736918848202501151327142.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;其中基础配置和分组配置根据自己的需求可以在设置一下，我建议不懂的不要修改默认就好，然后查看订阅源，挑选合适的 m 3 u 和 txt 格式源去相应软件使用就行&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2025/01/1736918861202501151327386.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;资源更新&#34;&gt;资源更新
&lt;/h2&gt;&lt;p&gt;为了保持直播源的时效性，用户可以通过 watchtower 等工具自动监听并更新 youshandefeiyang/allinone 镜像，可以看看我之前的部署教程&lt;/p&gt;
&lt;p&gt;本文出自：&lt;a class=&#34;link&#34; href=&#34;https://club.fnnas.com/forum.php?mod=viewthread&amp;amp;tid=11381&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;肥羊Allinone部署教程，免费iptv聚合直播源 - 攻略分享 飞牛私有云论坛 fnOS&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;一推荐使用-docker-一键运行并配置-watchtower-监听-docker-镜像更新直接一劳永逸老教程已作废&#34;&gt;&lt;del&gt;一、推荐使用 Docker 一键运行，并配置 watchtower 监听 Docker 镜像更新，直接一劳永逸：&lt;/del&gt;（老教程已作废）
&lt;/h2&gt;&lt;h3 id=&#34;1使用-docker-一键配置-allinone&#34;&gt;1，使用 Docker 一键配置 allinone
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -d --restart unless-stopped --net=host --privileged=true -p 35455:35455 --name allinone youshandefeiyang/allinone
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;2一键配置-watchtower-每天凌晨两点自动监听-allinone-镜像更新同步-github-仓库&#34;&gt;2，一键配置 watchtower 每天凌晨两点自动监听 allinone 镜像更新，同步 GitHub 仓库：
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;docker&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;run&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;d&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;name&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;watchtower&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;restart&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;unless&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stopped&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;v&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;var&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;run&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;docker&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sock&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;var&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;run&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;docker&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sock&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;containrrr&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;watchtower&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;allinone&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;c&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;schedule&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;0 0 2 * * *&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;3docker-compose-方式10-月-26-日修订&#34;&gt;3、Docker compose 方式（10 月 26 日修订）
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;version: &amp;#34;3.3&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;services:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  allinone:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    restart: unless-stopped
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    privileged: true
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ports:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      - 35455:35455
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    container_name: allinone
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    image: youshandefeiyang/allinone
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;networks: {}
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--------------
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;version: &amp;#34;3.3&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;services:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  av3a-assistant:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    image: youshandefeiyang/av3a-assistant:amd64
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    restart: unless-stopped
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    privileged: true
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ports:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      - 35442:35442
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;networks: {}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;二直接运行&#34;&gt;二、直接运行：
&lt;/h2&gt;&lt;p&gt;首先去 action 中下载对应平台二进制执行文件，然后解压并直接执行&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;chmod 777 allinone &amp;amp;&amp;amp; ./allinone
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;建议搭配进程守护工具进行使用，windows 直接双击运行！&lt;/p&gt;
&lt;h2 id=&#34;三详细使用方法&#34;&gt;三、详细使用方法
&lt;/h2&gt;&lt;h2 id=&#34;ysptp-和-itv-聚合-m-3-u-获取&#34;&gt;&lt;strong&gt;Ysptp 和 Itv 聚合 M 3 U 获取：&lt;/strong&gt;
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;声明：如果你是在公网服务器部署，不愿意开启聚合 TV 直播服务，在运行裸程序或者 Docker 时，加上参数 -tv=false 即可不开启直播服务，具体可&lt;a class=&#34;link&#34; href=&#34;https://t.me/feiyangofficalchannel/922&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;点击参考命令范例&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://你的IP:35455/tv.m3u
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;bilibili虎牙斗鱼yy-实时-m-3-u-获取&#34;&gt;&lt;strong&gt;BiliBili、虎牙、斗鱼、YY 实时 M 3 U 获取：&lt;/strong&gt;
&lt;/h2&gt;&lt;h3 id=&#34;bilibili-生活&#34;&gt;BiliBili 生活：
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://你的IP:35455/bililive.m3u
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;虎牙一起看&#34;&gt;虎牙一起看：
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://你的IP:35455/huyayqk.m3u
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;斗鱼一起看&#34;&gt;斗鱼一起看：
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://你的IP:35455/douyuyqk.m3u
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;yy-轮播&#34;&gt;YY 轮播：
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://你的IP:35455/yylunbo.m3u
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;如果使需要自定义-m-3-u-文件中的前缀域名可以传入-url-参数需要注意的是当域名中含有特殊字符时需要对链接进行-urlencode-处理&#34;&gt;如果使需要自定义 M 3 U 文件中的前缀域名，可以传入 url 参数（需要注意的是，当域名中含有特殊字符时，需要对链接进行 urlencode 处理）：
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://你的IP:35455/xxxyqk.m3u?url=http://192.168.10.1:35455
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;抖音&#34;&gt;&lt;strong&gt;抖音：&lt;/strong&gt;
&lt;/h2&gt;&lt;h3 id=&#34;默认最高画质浏览器打开并复制-livedouyincomxxxxxx只需要复制后面的-xxxxx-即可可选-flv-和-hls-两种种流媒体传输方式默认-flv&#34;&gt;默认最高画质，浏览器打开并复制 &lt;code&gt;(live.douyin.com/)xxxxxx&lt;/code&gt;，只需要复制后面的 xxxxx 即可（可选 flv 和 hls 两种种流媒体传输方式，默认 flv）：
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://你的IP:35455/douyin/xxxxx(?stream=hls)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;斗鱼&#34;&gt;&lt;strong&gt;斗鱼：&lt;/strong&gt;
&lt;/h2&gt;&lt;h3 id=&#34;1可选-m-3-u-8-和-flv-以及-xs-三种流媒体传输方式-wwwdouyucomxxxxxx-或-wwwdouyucomxxxxridxxxxxx默认-flv&#34;&gt;1，可选 m 3 u 8 和 flv 以及 xs 三种流媒体传输方式【 &lt;code&gt;(www.douyu.com/)xxxxxx 或 (www.douyu.com/xx/xx?rid=)xxxxxx&lt;/code&gt;，默认 flv】：
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://你的IP:35455/douyu/xxxxx(?stream=flv)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;bilibili&#34;&gt;&lt;strong&gt;BiliBili &lt;code&gt;(live.bilibili.com/)xxxxxx&lt;/code&gt;：&lt;/strong&gt;
&lt;/h2&gt;&lt;h3 id=&#34;1平台-platform-参数选择默认-web如果有问题可以切换-h-5-平台&#34;&gt;1，平台 platform 参数选择（默认 web，如果有问题，可以切换 h 5 平台）：
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;#34;flv&amp;#34;   =&amp;gt; &amp;#34;FLV&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;#34;hls&amp;#34;    =&amp;gt; &amp;#34;M3U8&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;2线路-line-参数选择默认线路二如果卡顿--看不了请切换线路一或者三一般直播间只会提供两条线路所以建议线路一--二之间切换&#34;&gt;2，线路 line 参数选择（默认线路二，如果卡顿 / 看不了，请切换线路一或者三，一般直播间只会提供两条线路，所以建议线路一 / 二之间切换）：
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;#34;first&amp;#34;  =&amp;gt; &amp;#34;线路一&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;#34;second&amp;#34; =&amp;gt; &amp;#34;线路二&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;#34;third&amp;#34;  =&amp;gt; &amp;#34;线路三&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;3画质-quality-参数选择默认原画可以看什么画质去直播间看看能选什么画质就能加什么参数参数错误一定不能播放&#34;&gt;3，画质 quality 参数选择（默认原画，可以看什么画质去直播间看看，能选什么画质就能加什么参数，参数错误一定不能播放）：
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;#34;4&amp;#34; =&amp;gt; &amp;#34;原画质&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;#34;3&amp;#34; =&amp;gt; &amp;#34;低画质&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;4最后的代理链接示例&#34;&gt;4，最后的代理链接示例：
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://你的IP:35455/bilibili/xxxxxx(?platform=hls&amp;amp;line=first&amp;amp;quality=4)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;虎牙&#34;&gt;&lt;strong&gt;虎牙 &lt;code&gt;(huya.com/)xxxxxx&lt;/code&gt;：&lt;/strong&gt;
&lt;/h2&gt;&lt;h3 id=&#34;1查看可用-cdn&#34;&gt;1，查看可用 CDN：
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://你的IP:35455/huya/xxxxx?type=display
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;2切换媒体类型默认-flv可选-flvhls&#34;&gt;2，切换媒体类型（默认 flv，可选 flv、hls）：
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://你的IP:35455/huya/xxxxx?media=hls
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;3切换-cdn默认-hwcdn可选-hycdnalicdntxcdnhwcdnhscdnwscdn具体可先访问-1-获取&#34;&gt;3，切换 CDN（默认 hwcdn，可选 hycdn、alicdn、txcdn、hwcdn、hscdn、wscdn，具体可先访问 1 获取）：
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://你的IP:35455/huya/xxxxx?cdn=alicdn
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;4最后的代理链接示例-1&#34;&gt;4，最后的代理链接示例：
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://你的IP:35455/huya/xxxxx(?media=xxx&amp;amp;cdn=xxx)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;youtube&#34;&gt;&lt;strong&gt;YouTube:&lt;/strong&gt;
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://www.youtube.com/watch?v=cK4LemjoFd0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Rid: cK4LemjoFd0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://你的IP:35455/youtube/cK4LemjoFd0(?quality=1080/720...)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;yy默认最高画质参数为-4&#34;&gt;&lt;strong&gt;YY（默认最高画质，参数为 4）:&lt;/strong&gt;
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://www.yy.com/xxxx
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://你的IP:35455/yy/xxxx(?quality=1/2/3/4...)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;更多平台后续会酌情添加&#34;&gt;更多平台后续会酌情添加
&lt;/h2&gt;</description>
        </item>
        <item>
        <title>手把手教你构建一个 本地化的，免费的，企业级的，AI大模型知识库问答系统</title>
        <link>https://blog.ccino.org/p/teach-you-step-by-step-to-build-a-localized-free-enterprise-level-ai-large-model-knowledge-base-question-answering-system/</link>
        <pubDate>Sun, 06 Oct 2024 14:47:17 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/teach-you-step-by-step-to-build-a-localized-free-enterprise-level-ai-large-model-knowledge-base-question-answering-system/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/teach-you-step-by-step-to-build-a-localized-free-enterprise-level-ai-large-model-knowledge-base-question-answering-system/Teach%20you%20step%20by%20step%20to%20build%20a%20localized%20free%20enterprise-level%20AI%20large%20model%20knowledge%20base%20question-answering%20system.png" alt="Featured image of post 手把手教你构建一个 本地化的，免费的，企业级的，AI大模型知识库问答系统" /&gt;&lt;p&gt;我将通过一个系列分享，手把手的教大家打造一个完全本地化的，免费的，企业级知识库问答系统&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://harryai.cc/post/enterprise-knowledge-llm-qa/gitmin1.jpg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://harryai.cc/post/enterprise-knowledge-llm-qa/gitmind2.jpg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;当使用外部模型或服务时，我们的私有数据，用户问题，都会被发送给第三方那我们就要面临私有数据暴露给别人的风险，甚至会导致数据泄露本地化会让我们的数据就更安全&lt;/p&gt;
&lt;p&gt;另外随着我们的业务发展，如果模型不能很好的满足我们需求的时候我们可以很方便的对本地模型其进行微调以达到更好的适配&lt;/p&gt;
&lt;p&gt;这样就既兼顾了安全，又兼顾了灵活性&lt;/p&gt;
&lt;p&gt;知识库问答的使用场景其实非常多，我随便举 2 个商业系统的例子&lt;/p&gt;
&lt;p&gt;比如对个人，可以用来 &lt;code&gt;整理笔记&lt;/code&gt;、&lt;code&gt;论文解读&lt;/code&gt;、&lt;code&gt;文献检索&lt;/code&gt;、&lt;code&gt;文档问答&lt;/code&gt; 等等。这里我用&lt;a class=&#34;link&#34; href=&#34;https://lightpdf.cn/chatdoc&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;轻闪 PDF 的文档对话 https://lightpdf.cn/chatdoc&lt;/a&gt; 来演示一下效果。&lt;/p&gt;
&lt;p&gt;我们随便上传一个 PDF 文档，等文档解析完成后，我们就可以通过提问的方式，对文档里面的内容进行解读，可以很快的从文档中找到我们想要的内容， &lt;strong&gt;大大提高我们查看文档的效率&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;对企业，可以用来做 &lt;code&gt;智能客服&lt;/code&gt;，&lt;code&gt;数据沉淀&lt;/code&gt; 或者 &lt;code&gt;数字员工&lt;/code&gt; 等等，同样我用&lt;a class=&#34;link&#34; href=&#34;https://gitmind.cn/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;思乎的在线客服 https://gitmind.cn&lt;/a&gt; 来演示一下。&lt;/p&gt;
&lt;p&gt;我们可以向客服提问，AI 就会准确的回复我们的问题，而这些问题的答案，大模型本身是没有的。因为大模型既不了解我们的业务，也不知道我们的数据，这些 AI 回复的答案，都是从企业的知识库里面获取的。这样我们就实现了一个 7 x 24 小时的智能客服， &lt;strong&gt;不仅为企业降本增效，还提高了客户的满意度&lt;/strong&gt;。&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;环境&lt;/th&gt;&lt;th&gt;最低配置&lt;/th&gt;&lt;th&gt;推荐配置&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;测试&lt;/td&gt;&lt;td&gt;2 核 2 GB&lt;/td&gt;&lt;td&gt;2 核 4 GB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;100 w 组向量&lt;/td&gt;&lt;td&gt;4 核 8 GB 50 GB&lt;/td&gt;&lt;td&gt;4 核 16 GB 50 GB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;500 w 组向量&lt;/td&gt;&lt;td&gt;8 核 32 GB 200 GB&lt;/td&gt;&lt;td&gt;16 核 48 GB 200 GB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1000 w 组向量&lt;/td&gt;&lt;td&gt;16 核 48 GB 200 GB&lt;/td&gt;&lt;td&gt;32 核 64 GB 500 GB&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;整个的系统搭建，都是基于这个架构图来进行的&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://harryai.cc/post/enterprise-knowledge-llm-qa/architecture.jpg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;检索：Retrieval，通过向量模型，或者多种混合检索方式，从知识库中检索出相关的文档&lt;/li&gt;
&lt;li&gt;增强：Augmentation，通过将检索到的文档，附加到提示词中，进行增强。也即 ICL（In Context Learning）&lt;/li&gt;
&lt;li&gt;生成：Generation，通过大语言模型，生成答案&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;有助于减轻大模型的幻觉，提高大模型回复的准确性&lt;/li&gt;
&lt;li&gt;与微调不同，RAG 提供了一定的可观察性和可检查性&lt;/li&gt;
&lt;li&gt;成本低，好实施&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;https://harryai.cc/post/enterprise-knowledge-llm-qa/rag.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;下载 Docker 并安装 &lt;a class=&#34;link&#34; href=&#34;https://www.docker.com/products/docker-desktop/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.docker.com/products/docker-desktop/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;下载 Ollama 并安装 &lt;a class=&#34;link&#34; href=&#34;https://ollama.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://ollama.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我使用阿里的通义千问作为演示，根据自己的电脑配置情况，选择合适的模型。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;总体来说，模型是越大，效果越好&lt;/strong&gt;，但是对电脑的配置要求也越高&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;4 b 模型要 3 GB 内存&lt;/li&gt;
&lt;li&gt;7 b 模型要 8 GB 内存&lt;/li&gt;
&lt;li&gt;13 b 模型要 16 GB 内存&lt;/li&gt;
&lt;li&gt;70 b 模型要 64 GB 内存&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;特别注意：你如果要&lt;strong&gt;用于商业用途，需要申请授权&lt;/strong&gt;，否则只能用于个人学习&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;千问许可说明: &lt;a class=&#34;link&#34; href=&#34;https://ollama.com/library/qwen:latest/blobs/41c2cf8c272f&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://ollama.com/library/qwen:latest/blobs/41c2cf8c272f&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;申请商用授权: &lt;a class=&#34;link&#34; href=&#34;https://dashscope.console.aliyun.com/openModelApply/qianwen&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://dashscope.console.aliyun.com/openModelApply/qianwen&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;下载模型&#34;&gt;下载模型
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama pull qwen:7b
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;测试-api-请求&#34;&gt;测试 API 请求
&lt;/h3&gt;&lt;p&gt;等模型下载和安装好后，执行下面的命令，测试 API 请求是否成功&lt;/p&gt;
&lt;h5 id=&#34;maclinux-下执行&#34;&gt;Mac/Linux 下执行：
&lt;/h5&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl &lt;span class=&#34;s1&#34;&gt;&amp;#39;http://localhost:11434/api/chat&amp;#39;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--data &lt;span class=&#34;s1&#34;&gt;&amp;#39;{
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;model&amp;#34;: &amp;#34;qwen:7b&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;messages&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;        {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;            &amp;#34;role&amp;#34;: &amp;#34;user&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;            &amp;#34;content&amp;#34;: &amp;#34;你是谁&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    ],
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;temperature&amp;#34;: 0.1,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;stream&amp;#34;: false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h5 id=&#34;windows-下执行&#34;&gt;Windows 下执行：
&lt;/h5&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl &amp;#34;http://localhost:11434/api/chat&amp;#34; ^
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--data &amp;#34;{&amp;#34;&amp;#34;model&amp;#34;&amp;#34;: &amp;#34;&amp;#34;qwen:7b&amp;#34;&amp;#34;, &amp;#34;&amp;#34;messages&amp;#34;&amp;#34;: [{&amp;#34;&amp;#34;role&amp;#34;&amp;#34;: &amp;#34;&amp;#34;user&amp;#34;&amp;#34;, &amp;#34;&amp;#34;content&amp;#34;&amp;#34;: &amp;#34;&amp;#34;你是谁&amp;#34;&amp;#34;}], &amp;#34;&amp;#34;temperature&amp;#34;&amp;#34;: 0.1, &amp;#34;&amp;#34;stream&amp;#34;&amp;#34;: false}&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;下子-embedding-模型&#34;&gt;下子 embedding 模型
&lt;/h3&gt;&lt;p&gt;我使用了 DmetaSoul 的中文 Embedding 模型，该模型 &lt;code&gt;号称&lt;/code&gt; 在 MTEB 中文榜单取得开源第一的成绩: &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/DMetaSoul/Dmeta-embedding-zh/blob/main/README_zh.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://huggingface.co/DMetaSoul/Dmeta-embedding-zh/blob/main/README_zh.md&lt;/a&gt;&lt;/p&gt;
&lt;h5 id=&#34;下载模型-1&#34;&gt;下载模型
&lt;/h5&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama pull shaw/dmeta-embedding-zh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h5 id=&#34;测试-api-请求-1&#34;&gt;测试 API 请求
&lt;/h5&gt;&lt;p&gt;等模型下载和安装好后，执行下面的命令，测试 API 请求是否成功&lt;/p&gt;
&lt;h5 id=&#34;maclinux-下执行-1&#34;&gt;Mac/Linux 下执行：
&lt;/h5&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl &amp;#39;http://localhost:11434/api/embeddings&amp;#39; \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--data &amp;#39;{
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;model&amp;#34;: &amp;#34;shaw/dmeta-embedding-zh&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;prompt&amp;#34;: &amp;#34;天空是灰色的&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h5 id=&#34;windows-下执行-1&#34;&gt;Windows 下执行：
&lt;/h5&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl &amp;#34;http://localhost:11434/api/embeddings&amp;#34; ^
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--data &amp;#34;{&amp;#34;&amp;#34;model&amp;#34;&amp;#34;: &amp;#34;&amp;#34;shaw/dmeta-embedding-zh&amp;#34;&amp;#34;, &amp;#34;&amp;#34;prompt&amp;#34;&amp;#34;: &amp;#34;&amp;#34;天空是灰色的&amp;#34;&amp;#34;}&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;安装fastgpt及其依赖&#34;&gt;安装FastGPT及其依赖
&lt;/h2&gt;&lt;h3 id=&#34;1-下载-docker-文件-和-config-文件&#34;&gt;1. 下载 docker 文件 和 config 文件
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;你可以手动下载，放到一个文件夹里面&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;docker-compose. Yml: &lt;a class=&#34;link&#34; href=&#34;https://harryai.cc/kbqa/docker-compose.yml&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://harryai.cc/kbqa/docker-compose.yml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;config. Json: &lt;a class=&#34;link&#34; href=&#34;https://harryai.cc/kbqa/config.json&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://harryai.cc/kbqa/config.json&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;也可以直接执行下面的命令，自动下载&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir kbqa
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cd kbqa
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -O https://harryai.cc/kbqa/docker-compose.yml
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -O https://harryai.cc/kbqa/config.json
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;2-启动-docker&#34;&gt;2. 启动 docker
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker-compose up
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;注意&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;第一次启动会有点慢，因为要拉取镜像，后面启动就会很快了&lt;/li&gt;
&lt;li&gt;如果第一次启动失败，可以多次执行 &lt;code&gt;docker-compose up&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;3-访问-fastgpt-和-oneapi&#34;&gt;3. 访问 FastGPT 和 OneAPI
&lt;/h3&gt;&lt;p&gt;你第一次访问，系统里面是没有数据的，截图里面的数据，是我测试的时候已经创建好了的。&lt;/p&gt;
&lt;h4 id=&#34;fastgpt&#34;&gt;FastGPT
&lt;/h4&gt;&lt;p&gt;点击访问：&lt;a class=&#34;link&#34; href=&#34;http://localhost:3000/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;http://localhost:3000&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;用户名 &lt;code&gt;root&lt;/code&gt;，密码 &lt;code&gt;1234&lt;/code&gt;（密码可以在 &lt;code&gt;docker-compose.yml&lt;/code&gt; 环境变量里设置 &lt;code&gt;DEFAULT_ROOT_PSW&lt;/code&gt; 进行修改）&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://harryai.cc/post/enterprise-knowledge-llm-qa/fastgpt.jpg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;h4 id=&#34;oneapi&#34;&gt;OneAPI
&lt;/h4&gt;&lt;p&gt;点击访问：&lt;a class=&#34;link&#34; href=&#34;http://localhost:3001/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;http://localhost:3001&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;用户名 &lt;code&gt;root&lt;/code&gt;，密码 &lt;code&gt;123456&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://harryai.cc/post/enterprise-knowledge-llm-qa/oneapi.jpg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;配置oneapi&#34;&gt;配置OneAPI
&lt;/h2&gt;&lt;p&gt;添加模型：&lt;a class=&#34;link&#34; href=&#34;http://localhost:3001/channel&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;http://localhost:3001/channel&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;1-配置大语言模型&#34;&gt;1. 配置大语言模型
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;类型&lt;/strong&gt;：Ollama&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;名称&lt;/strong&gt;：ollama-qwen: 7 b&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;模型&lt;/strong&gt;：输入自定义模型名称，&lt;code&gt;qwen:7b&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;密钥&lt;/strong&gt;：随便填，比如 123&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代理&lt;/strong&gt;：http://host.docker.internal:11434&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;2-配置embedding向量模型&#34;&gt;2. 配置Embedding向量模型
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;类型&lt;/strong&gt;：Ollama&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;名称&lt;/strong&gt;：ollama-dmeta-embedding-zh&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;模型&lt;/strong&gt;：输入自定义模型名称，&lt;code&gt;shaw/dmeta-embedding-zh&lt;/code&gt;**，比如&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;密钥&lt;/strong&gt;：随便填，比如 123&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代理&lt;/strong&gt;：http://host.docker.internal:11434&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;特别注意：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;模型 &lt;strong&gt;必须和 ollama 安装的模型名称保持一致&lt;/strong&gt;，可以使用 &lt;code&gt;ollama list&lt;/code&gt; 命令查看&lt;/li&gt;
&lt;li&gt;代理地址 &lt;strong&gt;必须是 &lt;a class=&#34;link&#34; href=&#34;http://host.docker.internal:11434/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;http://host.docker.internal:11434&lt;/a&gt;&lt;/strong&gt;，这样 OneAPI 才能访问到 ollama&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;默认情况下，&lt;strong&gt;Docker 使用的是桥接模式启动服务&lt;/strong&gt;，即容器使用 Docker 自己创建的虚拟网络，容器之间可以相互通信，但是它们无法直接访问宿主机（即你的电脑）上的网络服务。&lt;/p&gt;
&lt;p&gt;但是 Ollama 是运行在你的电脑上的，而 OneAPI 是运行在 Docker 容器里面的，所以 OneAPI 无法直接访问 Ollama。&lt;/p&gt;
&lt;p&gt;Docker 官方提供了一种支持方案，可通过指向 host. Docker. Internal 来指向宿主机的 IP。&lt;/p&gt;
&lt;p&gt;参见官方文档：&lt;a class=&#34;link&#34; href=&#34;https://docs.docker.com/desktop/networking/#i-want-to-connect-from-a-container-to-a-service-on-the-host&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;从容器连接到主机上的服务&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;配置fastgpt&#34;&gt;配置FastGPT
&lt;/h2&gt;&lt;p&gt;我们先创建一个简单的应用，实现一个基本的 AI 对话，目的是测试 OneAPI 的接口以及 Ollama 的接口是否正常。&lt;/p&gt;
&lt;p&gt;本文出自：&lt;a class=&#34;link&#34; href=&#34;https://harryai.cc/post/enterprise-knowledge-llm-qa/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;手把手教你构建一个 本地化的，免费的，企业级的，AI大模型知识库问答系统 - 网旭哈瑞.AI&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Hugo博客添加Twikoo评论</title>
        <link>https://blog.ccino.org/p/add-twikoo-comments-to-hugo-blog/</link>
        <pubDate>Sun, 06 Oct 2024 11:20:55 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/add-twikoo-comments-to-hugo-blog/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/add-twikoo-comments-to-hugo-blog/Add%20Twikoo%20comments%20to%20Hugo%20blog.png" alt="Featured image of post Hugo博客添加Twikoo评论" /&gt;&lt;p&gt;因为 Hugo 博客的 PaperMod 主题是外国人开发的，国人用的不多，所以 PaperMod 主题没有自带 twikoo 评论系统，于是自己琢磨和查找资料，搞出来了&lt;/p&gt;
&lt;h2 id=&#34;1-申请-envid&#34;&gt;1. 申请 envId
&lt;/h2&gt;&lt;p&gt;请看 &lt;a class=&#34;link&#34; href=&#34;https://twikoo.js.org/quick-start.html#%E4%BA%91%E5%87%BD%E6%95%B0%E9%83%A8%E7%BD%B2&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;twikoo 官方文档&lt;/a&gt; ，我选的是 vercel 部署方式，视频教程：&lt;a class=&#34;link&#34; href=&#34;https://www.bilibili.com/video/BV1Fh411e7ZH&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Twikoo Vercel 部署教程&lt;/a&gt;    👇&lt;/p&gt;
&lt;h2 id=&#34;2-添加代码&#34;&gt;2. 添加代码
&lt;/h2&gt;&lt;p&gt;Hugo 的 PaperMod 主题添加 twikoo 代码的位置：layouts/partials/comments. Html&lt;/p&gt;
&lt;p&gt;推荐添加在自己博客站点下的 layouts 文件夹，不要添加到主题里的 layouts 文件夹，否则更新主题时会被覆盖&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;!-- Twikoo --&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;lt;div class=&amp;#34;pagination__title&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;lt;span class=&amp;#34;pagination__title-h&amp;#34; style=&amp;#34;font-size: 20px;&amp;#34;&amp;gt;💬评论&amp;lt;/span&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;lt;hr /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;lt;div id=&amp;#34;tcomment&amp;#34;&amp;gt;&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;lt;script src=&amp;#34;https://cdn.staticfile.org/twikoo/{{ .Site.Params.twikoo.version }}/twikoo.all.min.js&amp;#34;&amp;gt;&amp;lt;/script&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;lt;script&amp;gt; twikoo.init({
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            envId: &amp;#34;&amp;#34;,  //这里填写自己的envId
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            el: &amp;#34;#tcomment&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            lang: &amp;#39;zh-CN&amp;#39;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            region: &amp;#39;ap-guangzhou&amp;#39;,  //我的区域是广州，可以不填，默认是ap-shanghai
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            path: window.TWIKOO_MAGIC_PATH||window.location.pathname,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        }); &amp;lt;/script&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;调用上述 twikoo 代码的位置：layouts/_default/single. Html&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;article class=&amp;#34;post-single&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  // 这里是默认的其他代码
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  // twikoo，一般只需要复制以下3行代码，加上其他代码是为了帮助读者确认代码添加的位置
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  {{- if (.Param &amp;#34;comments&amp;#34;) }}
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    {{- partial &amp;#34;comments.html&amp;#34; . }}
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  {{- end }}
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;/article&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;在站点配置文件 config. Yml 的 params 中加上如下代码，版本号自己去 twikoo 的 github 看最新的版本&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;params:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	twikoo:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      version: 1.5.8 // 这个版本号要自己手动修改，和twikoo的版本号要对得上
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;3-邮件提醒&#34;&gt;3. 邮件提醒
&lt;/h2&gt;&lt;p&gt;Twikoo 比较方便，邮件提醒功能只需要在评论里设置就好了&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://www.sulvblog.cn/posts/blog/hugo_twikoo/1.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;会出现这个，里面的配置就不详细讲解了，自带的就讲的很清楚&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://www.sulvblog.cn/posts/blog/hugo_twikoo/2.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Hugo博客使用utterances作为评论系统</title>
        <link>https://blog.ccino.org/p/hugo-blog-uses-utterances-as-comment-system/</link>
        <pubDate>Sat, 05 Oct 2024 20:21:20 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/hugo-blog-uses-utterances-as-comment-system/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/hugo-blog-uses-utterances-as-comment-system/hugo%20blog%20uses%20utterances%20as%20comment%20system.png" alt="Featured image of post Hugo博客使用utterances作为评论系统" /&gt;&lt;p&gt;Hugo 博客上的评论插件一直试了好多，但网上关于 hugo 的评论插件是太少了，找了好长时间都没有值得考究的。如： Disqus、gitment、gitalk、来比力… 这些都是国外的，加载速度确实不敢恭维，就目前为止，Disqus 官网还被墙了，gitment 由于其开发者很久没有维护，gitalk 还算行，gitment、gitalk 这两个评论服务是通过 GitHub 提供的 API 创建含有相应标签的 issue。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;国内其实也有很多评论插件，如：有言（官网已经挂了）、畅言（搜狐出品）。还有来比力（韩国的，之前 hexo 博客用到过，加载速度也好慢），Valine（这个评论插件确实不错，但注册账号后还要用身份证号码信息认证，认证完后还要用支付宝扫码验证是不是本人的，基于安全考虑，暂时还是先不要用这个，不知道一个评论插件还要这么多程序）&lt;/li&gt;
&lt;li&gt;其实第三方插件也还是要承担些安全责任的，发表不好的言论都是有些关系的。&lt;/li&gt;
&lt;li&gt;Hugo 推荐 utterances 和 gitalk 评论插件来使用。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;utterances-是一款基于-github-issues-的评论工具&#34;&gt;Utterances 是一款基于 GitHub issues 的评论工具
&lt;/h2&gt;&lt;p&gt;相比同类的工具 gitment、gitalk 以及 disqus 评论工具，优点如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;极其轻量&lt;/li&gt;
&lt;li&gt;加载非常快&lt;/li&gt;
&lt;li&gt;配置比较简单&lt;/li&gt;
&lt;li&gt;Disqus 这个工具配置也比较简单，也是免费的。但是，广告多，而且加载也比较慢。体验了一把 utterances 后，马上切换到 utterances。&lt;/li&gt;
&lt;li&gt;Utterances 是基于 github issue，拥有多种主题的开源免费小组件。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;hugo-博客配置使用-utterances&#34;&gt;Hugo 博客配置使用 utterances
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;首先在 github 上创建一个空仓库，如：hugoblogtalks，并且初始化设置，仓库必须是 Public，而不是私有的，这样我们的读者才可以查看以及发表评论。
&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/202410052029629.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;接着就是在 hugo 的配置文件（config. Toml）中启用 utterances，打开 config. Toml，添加如下：&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;## 配置 utteranc评论,教程参考 https://utteranc.es/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[params.utteranc]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  enable = true
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  repo = &amp;#34;yunxd/hugoblogtalks&amp;#34; ##换成自己得
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  issueTerm = &amp;#34;pathname&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  theme = &amp;#34;github-light&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Repo 的格式为：github 用户名 / 创建的仓库名&lt;/p&gt;
&lt;h2 id=&#34;github-上安装-utterances&#34;&gt;Github 上安装 utterances
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;首先必须在 github 上进行安装 utterances，访问 &lt;a class=&#34;link&#34; href=&#34;https://cloud.tencent.com/developer/tools/blog-entry?target=https%3A%2F%2Fgithub.com%2Fapps%2Futterances&amp;amp;source=article&amp;amp;objectId=1834230&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;utterances 应用程序&lt;/a&gt; 然后点击 Install 按钮进行安装。&lt;/li&gt;
&lt;li&gt;在这里可以选择可以关联的存储库，可以选择我们所拥有的库 (也包括未来建立的库) 或者某一个仓库，这里只选择某一个需要进行评论的库，这样比较好。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/202410052030935.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;安装完成即可，随后访问 &lt;a class=&#34;link&#34; href=&#34;https://cloud.tencent.com/developer/tools/blog-entry?target=https%3A%2F%2Fgithub.com%2Fapps%2Futterances&amp;amp;source=article&amp;amp;objectId=1834230&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;utterances 应用程序&lt;/a&gt; 就不再是安装而是是执行配置项目。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/202410052031467.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/202410052031677.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;此时服务端配置已经完成，接着访问博客测试下评论。 &lt;a class=&#34;link&#34; href=&#34;https://cloud.tencent.com/developer/tools/blog-entry?target=http%3A%2F%2Fhugo.xdr630.top%2F&amp;amp;source=article&amp;amp;objectId=1834230&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;http://hugo.xdr630.top/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/202410052032764.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Obsidian 配合 hugo、cloudflare：让发布博客简单到不可思议</title>
        <link>https://blog.ccino.org/p/obsidian-with-hugo-and-cloudflare-makes-blogging-incredibly-easy/</link>
        <pubDate>Sat, 05 Oct 2024 17:31:50 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/obsidian-with-hugo-and-cloudflare-makes-blogging-incredibly-easy/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/obsidian-with-hugo-and-cloudflare-makes-blogging-incredibly-easy/Obsidian%20with%20Hugo%20and%20CloudFlare%20Makes%20blogging%20incredibly%20easy.png" alt="Featured image of post Obsidian 配合 hugo、cloudflare：让发布博客简单到不可思议" /&gt;&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/202410070919391.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;自从我更换博客系统到 hugo 之后，我越来越少发博客了。原因除了最近写得少之外，就是发布起来不如之前使用 Gridea 那么方便了。&lt;/p&gt;
&lt;p&gt;参考了几篇文章，现在的发布流程为：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Obsidian 创建文章并写作。&lt;/li&gt;
&lt;li&gt;利用 obsidian-git 插件将文件自动同步到 github&lt;/li&gt;
&lt;li&gt;Cloudflare 自动拉取 github 仓库，并自动构建为 hugo 项目，相当于省略了本地执行 &lt;code&gt;hugo -D&lt;/code&gt; 的过程。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;旧的发布方式为：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Obsidian 中写作文章&lt;/li&gt;
&lt;li&gt;复制文件到 hugo 项目的 content/posts 文件夹&lt;/li&gt;
&lt;li&gt;然后执行 hugo -D 命令，生成静态文件&lt;/li&gt;
&lt;li&gt;再到 public 文件夹下使用 git 将已生成的静态文件上传到 github。Github page 作为博客展示。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这个过程是非常麻烦的。&lt;/p&gt;
&lt;p&gt;今天看到木木的博客中提到的 Cloudflare，就想着改造一下。改造过程如下。&lt;/p&gt;
&lt;h3 id=&#34;使用到的-obsidian-插件&#34;&gt;使用到的 obsidian 插件
&lt;/h3&gt;&lt;h4 id=&#34;image-auto-upload-plugin&#34;&gt;Image auto upload plugin
&lt;/h4&gt;&lt;p&gt;用于自动上传图片到图床。需要配合 picgo 使用。&lt;/p&gt;
&lt;h4 id=&#34;quickadd&#34;&gt;Quickadd
&lt;/h4&gt;&lt;p&gt;用于快速创建一篇新博客。&lt;/p&gt;
&lt;p&gt;下面是我的设置：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;创建一个 &lt;code&gt;Template&lt;/code&gt; 类型的 quickadd 命令&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/202410070920783.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;在根目录新建一个 &lt;code&gt;_Templates&lt;/code&gt; 文件夹，并创建模板文件 &lt;code&gt;hugo博客模板&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;title: {{NAME}}
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tags: [{{VALUE:tag？}}]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;date: {{DATE:YYYY-MM-DD HH:mm:ss}}
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;draft: true
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hideInList: false
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;isTop: false
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;feature: 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Published 字段是发布，默认设置为 false，草稿。等到文章写完并修改无误后，再修改为 true 进行发布。&lt;/p&gt;
&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;设置 quickadd 命令：&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/202410070920356.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;h4 id=&#34;obsidian-git&#34;&gt;Obsidian-git
&lt;/h4&gt;&lt;p&gt;用于自动备份文件到 github。&lt;/p&gt;
&lt;p&gt;插件设置修改如下：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/202410070921551.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;启用-cloudflare&#34;&gt;启用 Cloudflare
&lt;/h3&gt;&lt;p&gt;打开 &lt;a class=&#34;link&#34; href=&#34;https://dash.cloudflare.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Cloudflare Dash&lt;/a&gt; 导航栏 &lt;code&gt;Pages&lt;/code&gt; ，点 &lt;code&gt;创建项目&lt;/code&gt;，授权 Github 项目，选择博客所在仓库，选择正确的分支。&lt;/p&gt;
&lt;p&gt;添加环境变量，指定高版本 &lt;code&gt;HUGO_VERSION&lt;/code&gt; 为 &lt;code&gt;0.92.0&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;然后部署即可。&lt;/p&gt;
&lt;p&gt;部署完成后就可以使用 cloudflare 的二级域名访问博客了。如果你像我一样有自己的独立域名，那么可以进行域名绑定。&lt;/p&gt;
&lt;h3 id=&#34;cloudflare-绑定独立域名&#34;&gt;Cloudflare 绑定独立域名
&lt;/h3&gt;&lt;p&gt;首先第一步，把自己的域名托管到 cloudflare。参考： &lt;a class=&#34;link&#34; href=&#34;https://www.back2me.cn/skills/cloudflare.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;如何将域名托管到 cloudflare&lt;/a&gt; 这篇文章。&lt;/p&gt;
&lt;p&gt;然后打开导航栏 Pages ，在右侧找到刚刚的博客站点，在设置或者部署中找到 【自定义域】，设置自定义域名，输入之前托管进来的域名，按照指引完成绑定。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/202410070921759.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;以上，所有设置都已完成。&lt;/p&gt;
&lt;p&gt;现在我要发布一篇新博客时，只要在 obsidian 中打开 hugo 博客的这个库，然后使用 quickadd 新建一篇博客，写上内容，然后把 yaml 中的 &lt;code&gt;published&lt;/code&gt; 字段值改为 &lt;code&gt;true&lt;/code&gt; 即可（从草稿改为发布）。等待 3 分钟后 obsidian-git 插件自动同步到 github，博客就自动更新发布好了。&lt;/p&gt;
&lt;p&gt;这篇文章就是使用新方式发布的，优雅不是一点点。&lt;/p&gt;
&lt;h3 id=&#34;参考&#34;&gt;参考
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;木木木木木： &lt;a class=&#34;link&#34; href=&#34;https://immmmm.com/hugo-with-obsidian/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hugo With Obsidian&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;木木木木木： &lt;a class=&#34;link&#34; href=&#34;https://immmmm.com/hi-cloudflare/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hi , Cloudflare Pages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.zhangyingwei.com/posts/2022m4d11h19m42s28/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hugo 博客写作最佳实践&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.back2me.cn/skills/cloudflare.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;如何将域名托管到 cloudflare&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Obsidian如何自动发布hugo博客</title>
        <link>https://blog.ccino.org/p/how-to-automatically-publish-hugo-blog-in-obsidian/</link>
        <pubDate>Sat, 05 Oct 2024 17:17:21 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/how-to-automatically-publish-hugo-blog-in-obsidian/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/how-to-automatically-publish-hugo-blog-in-obsidian/How%20to%20automatically%20publish%20hugo%20blog%20in%20obsidian.png" alt="Featured image of post Obsidian如何自动发布hugo博客" /&gt;&lt;p&gt;之前一直使用印象笔记作为主力的笔记软件，但印象笔记这几年广告加的越来越离谱，遂开始寻找其替代品，几经搜索，最终确定将 Obsidian 作为自己的主力笔记软件。&lt;/p&gt;
&lt;p&gt;Obsidian 只是一个本地笔记，如果需要多端同步，那么需要借助 &lt;code&gt;Remotely Save&lt;/code&gt; 等插件实现。由于自己有 NAS，因此在 NAS 上部署了 WebDAV 服务，在 &lt;code&gt;Remotely Save&lt;/code&gt; 插件中配置完毕后，实现了家、手机、公司三端的笔记同步。&lt;/p&gt;
&lt;p&gt;除了使用 Obsidian 记录笔记外，自己还有一个对外的博客，用于发布一些内容上相对还比较完整的文章。&lt;/p&gt;
&lt;p&gt;博客基于 Hugo 静态网站工具生成，Hugo 元数据使用 Git 管理，并托管在 Github 上，这与大部分静态博客的维护方式相同，唯一的区别在于自己的博客没有使用 Github pages，而是部署在了自己的海外服务器上，以便获得相对更好的国内访问体验。&lt;/p&gt;
&lt;p&gt;过去，自己的发布博客的流程是，&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;创建 Hugo 文章目录和 index. Md 文件。&lt;/li&gt;
&lt;li&gt;将 Obsidian 笔记中的内容拷贝到 index. Md 文件中。&lt;/li&gt;
&lt;li&gt;将 obsidna 中依赖的图片（图片存储在本地）拷贝到 Hugo 文章目录下（自己大部分情况下未使用图床，图片直接放在 Hugo 文章目录下，并最终同步到自己的服务器上）。&lt;/li&gt;
&lt;li&gt;修改 index. Md 文章的图片引用方式（Obsidian 基于 &lt;code&gt;![[]]&lt;/code&gt;，而 Hugo 则使用标准 Markdown &lt;code&gt;![]()&lt;/code&gt; 的方式）。&lt;/li&gt;
&lt;li&gt;提交 Hugo 博客文章到 Github，之后基于 WebHook 自动构建博客并同步到自己的服务器上。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果文章内容有更改，那么则，&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;更改 Obsidian 笔记的内容。&lt;/li&gt;
&lt;li&gt;复制拷贝到 Hugo 文章目录下。&lt;/li&gt;
&lt;li&gt;提交 Hugo 博客内容到 Github。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;整个过程相当的繁琐，尤其是涉及文章的内容更新时，很容易出现 Hugo 博客内容改了，但 Obsidian 没改，或是 Obsidian 内容改了，而 Hugo 博客忘了改的情况。&lt;/p&gt;
&lt;p&gt;近段实在不能忍，遂打算将整个流程自动化起来，实现 Obsidian 到 Hugo 博客的自动更新同步。&lt;/p&gt;
&lt;p&gt;网上参考了几篇文章，看到了两种方案。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;将整个 Hugo 仓库当成一个 Obsidian 库，在 Obsidian 编辑后，同步到 Git，然后通过 Git actions 自动将文章构建发布。其中通过 draft 参数控制文章是否发布。
&lt;ol&gt;
&lt;li&gt;相关文章
&lt;ol&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://lillianwho.com/posts/Obsidian-Hugo-cloudflare/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Obsidian 配合 Hugo、cloudflare：让发布博客简单到不可思议&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.zhangyingwei.com/posts/2022m4d11h19m42s28/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hugo 博客写作最佳实践 | 胡说&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;优点：整个方案确实比较流畅自动化。&lt;/li&gt;
&lt;li&gt;缺点：Obsidian 目录结构需要按照 Hugo 规范，不能自定义目录结果。&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;方案 2，使用 hugo-publish 等插件，将 Obsidian 文章转换后同步到 Hugo 目录里。
&lt;ol&gt;
&lt;li&gt;相关文章：
&lt;ol&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://v2ex.com/t/1015313&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;写了一个 Obsidian 插件，能够把 Obsidian 笔记转换为 Hugo blog - V2EX&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;优点：笔记是笔记，博客是博客，两个目录隔离开。&lt;/li&gt;
&lt;li&gt;缺点：同步到博客后，还需手动提交博客目录，才能发布。整个过程不流畅。&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;以上两个方案我都不是很满意，期望实现方式是将两者结合起来。&lt;/p&gt;
&lt;p&gt;依旧分为 Obsidian 笔记库和 Hugo 博客库，在 Obsidian 里编辑笔记并无误后，添加 &lt;code&gt;#blog&lt;/code&gt; 或是其他标志，会自动的将对笔记进行格式转换并把笔记及相关的资源拷贝到 Hugo 库目录，之后自动提交 Hugo 仓库触发静态页面构建，进而更新博客。&lt;/p&gt;
&lt;p&gt;综合上述流程、笔记管理方式以及我的能力，我决定这样实现。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://renyili.org/post/obsidian%E5%A6%82%E4%BD%95%E8%87%AA%E5%8A%A8%E5%8F%91%E5%B8%83hugo%E5%8D%9A%E5%AE%A2/obsidian%E5%A6%82%E4%BD%95%E8%87%AA%E5%8A%A8%E5%8F%91%E5%B8%83hugo%E5%8D%9A%E5%AE%A2-20240526185806662.webp&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;家、公司、手机上的 Obsidian 笔记现在通过 WebDAV 的方式同步到 NAS 上。&lt;/li&gt;
&lt;li&gt;在 NAS 上创建 Hugo 博客仓库。&lt;/li&gt;
&lt;li&gt;实现脚本并部署在 NAS 上，脚本循环执行以下逻辑。
&lt;ol&gt;
&lt;li&gt;遍历 Obsidian 库中的所有笔记，检测笔记是否有 &lt;code&gt;#blog&lt;/code&gt; 标签。&lt;/li&gt;
&lt;li&gt;如果有，那么将笔记的格式转换为 Hugo 博客形式，包括头、引用的链接、图片等。&lt;/li&gt;
&lt;li&gt;将转换后的文章生成到 Hugo 目录下。&lt;/li&gt;
&lt;li&gt;如果文章有引用图片，将图片拷贝到 Hugo 库的文章目录下。&lt;/li&gt;
&lt;li&gt;记录笔记的 md 5 信息，用于后续比对笔记内容是否有更新。&lt;/li&gt;
&lt;li&gt;提交 Hugo 仓库&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Hugo 仓库更新后，触发 Github 上配置的 WebHook，最终触发博客的更新。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;通过以上流程，只需要在我写好的笔记中添加 &lt;code&gt;#blog&lt;/code&gt; 标签，那么等一会，博客就会自动更新。而当我更新笔记后，这个流程也会将更新后的笔记自动更新到我的博客上。实属懒人必备。&lt;/p&gt;
&lt;p&gt;整个流程使用 Python 实现也比较简单，我已经提交到 Github &lt;a class=&#34;link&#34; href=&#34;https://github.com/Expost/obsidian2hugo&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;仓库&lt;/a&gt; 中，可自行阅读调整。&lt;/p&gt;
&lt;p&gt;针对脚本的功能，这里说明几点。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;脚本执行需要 &lt;code&gt;-op&lt;/code&gt;、&lt;code&gt;-hp&lt;/code&gt;、&lt;code&gt;-i&lt;/code&gt; 、&lt;code&gt;-b&lt;/code&gt; 这四个参数，其中，
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;-op&lt;/code&gt; 用来执行 Obsidian 库的根目录。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-hp&lt;/code&gt; 指定 Hugo 库的根目录。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-i&lt;/code&gt; 指定脚本每次循环执行的间隔，单位秒。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-b&lt;/code&gt; 指定 &lt;a class=&#34;link&#34; href=&#34;https://bark.day.app/#/?id=bark-&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Bark&lt;/a&gt; 通知的 URL 地址。&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;脚本会在当前目录下生成 &lt;code&gt;obsidian2hugo_cfg.json&lt;/code&gt; 配置文件，存储已经生成博客的笔记的 MD 5 信息，用于检测博客内容是否有更新。&lt;/li&gt;
&lt;li&gt;脚本解析 Markdown 使用了 mistletoe 库，主要用于解析获取 &lt;code&gt;#blog&lt;/code&gt;、&lt;code&gt;![[]]&lt;/code&gt; 等关键字，没有使用正则替换，避免这些关键字写在代码段中。&lt;/li&gt;
&lt;li&gt;脚本只处理了 &lt;code&gt;#&lt;/code&gt;、&lt;code&gt;![[]]&lt;/code&gt; 关键字，对 &lt;code&gt;[[]]&lt;/code&gt; 关键字没有做任何替换处理，原因是自己没想好该怎么做。一种做法是递归将引用的文章都发表为博客，由于我目前很少使用 &lt;code&gt;[[]]&lt;/code&gt;，因此暂时没有处理。&lt;/li&gt;
&lt;li&gt;脚本使用 &lt;a class=&#34;link&#34; href=&#34;https://bark.day.app/#/?id=bark-&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Bark&lt;/a&gt; 进行了异常通知，如果脚本执行出现异常，那么会将异常的堆栈通过 Bark 进行通知。如果需要使用 Bark，那么就指定 &lt;code&gt;-b&lt;/code&gt; 参数，否则无需指定。如果想要其他通知方式，可自行修改代码。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;https://renyili.org/post/obsidian%E5%A6%82%E4%BD%95%E8%87%AA%E5%8A%A8%E5%8F%91%E5%B8%83hugo%E5%8D%9A%E5%AE%A2/Kapture%202024-05-26%20at%2022.33.31.gif&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;在我脚本写完并开始写整理这篇文章时，我发现已经有现成的工具可以更好的实现我这个需求，而且也是我理想中的形式。&lt;/p&gt;
&lt;p&gt;在&lt;a class=&#34;link&#34; href=&#34;https://www.printlove.cn/obsidian-blog/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;使用 Obsidian 免费建个人博客 | PrintLove&lt;/a&gt; 这篇文章中，介绍了 Github Publisher 插件，这个插件可以将 Obsidian 库中的指定文章 (基于标签) 做一些替换操作后发布到 Github 的指定目录中，而且不需要 NAS、WebDAV 同步中转，对大多数人来说更为友好。&lt;/p&gt;
&lt;p&gt;在自己造轮子前果然还是应该多找一些资料的😭。不过既然代码都写完了，还是整理下自己的方案，给大家一些参考。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Hugo by Github with Cloudflare Pages</title>
        <link>https://blog.ccino.org/p/hugo-by-github-with-cloudflare-pages/</link>
        <pubDate>Sat, 05 Oct 2024 14:27:24 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/hugo-by-github-with-cloudflare-pages/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/hugo-by-github-with-cloudflare-pages/Hugo%20by%20Github.png" alt="Featured image of post Hugo by Github with Cloudflare Pages" /&gt;&lt;p&gt;在线预览：&lt;a class=&#34;link&#34; href=&#34;https://lmm.pages.dev/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://lmm.pages.dev&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;部署全程 Web 端操作，无需本地安装 Hugo 、配置 Git 、连通 Github 等操作。浏览器 OS，飞起！&lt;/p&gt;
&lt;h3 id=&#34;github-导入仓库&#34;&gt;Github 导入仓库
&lt;/h3&gt;&lt;p&gt;点击导入 &lt;a class=&#34;link&#34; href=&#34;https://github.com/new/import&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/new/import&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pic.ccino.win/OB/2024/10/202410051435583.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://github.com/lmm214/cloudflare-hugo-theme-stack
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;填入已配置好主题 ( &lt;a class=&#34;link&#34; href=&#34;https://github.com/CaiJimmy/hugo-theme-stack&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;hugo-theme-stack&lt;/a&gt; ) 的仓库，再给自己的取个仓库名，设置公开、私人都可以。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.immmmm.com/2022/01/cf-hugo-2.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.immmmm.com/2022/01/cf-hugo-3.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;仓库导入完成&lt;/p&gt;
&lt;h3 id=&#34;cloudflare-pages-创建项目&#34;&gt;Cloudflare Pages 创建项目
&lt;/h3&gt;&lt;p&gt;&lt;img src=&#34;https://r2.immmmm.com/2022/01/cf-hugo-4.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;Cloudflare Dash &lt;a class=&#34;link&#34; href=&#34;https://dash.cloudflare.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://dash.cloudflare.com/&lt;/a&gt; 点导航栏 &lt;code&gt;Pages&lt;/code&gt; ，点 &lt;code&gt;创建项目&lt;/code&gt;，授权刚创建的 Github 仓库。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.immmmm.com/2022/01/cf-hugo-5.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.immmmm.com/2022/01/cf-hugo-6.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;修改项目名称&lt;/p&gt;
&lt;p&gt;项目名称可以自定义，我改成了 &lt;code&gt;lmm&lt;/code&gt; ，CF 会分配对应的二级域名供访问。生产分支默认 &lt;code&gt;main&lt;/code&gt; 即可。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.immmmm.com/2022/01/cf-hugo-7.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;框架预设选择 &lt;code&gt;Hugo&lt;/code&gt; ，添加环境变量，指定高版本的 &lt;code&gt;HUGO_VERSION&lt;/code&gt; 为 &lt;code&gt;0.92.0&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.immmmm.com/2022/01/cf-hugo-8.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.immmmm.com/2022/01/cf-hugo-9.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;Pages 创建完成&lt;/p&gt;
&lt;p&gt;撒花 🎉&lt;/p&gt;
&lt;h3 id=&#34;然后然后&#34;&gt;然后，然后
&lt;/h3&gt;&lt;p&gt;了解主题配置 &lt;a class=&#34;link&#34; href=&#34;https://docs.stack.jimmycai.com/zh/configuration/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://docs.stack.jimmycai.com/zh/configuration/&lt;/a&gt; ，修改站点信息。&lt;/p&gt;
&lt;p&gt;日常发文在 &lt;code&gt;content/post&lt;/code&gt; 文件夹下新增 md 文件即可。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>VPS 基本配置：新买的 VPS 怎么整备和调教？</title>
        <link>https://blog.ccino.org/p/basic-vps-configuration-how-to-prepare-and-adjust-the-newly-purchased-vps/</link>
        <pubDate>Sat, 05 Oct 2024 13:40:32 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/basic-vps-configuration-how-to-prepare-and-adjust-the-newly-purchased-vps/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/basic-vps-configuration-how-to-prepare-and-adjust-the-newly-purchased-vps/Basic%20VPS%20configuration.png" alt="Featured image of post VPS 基本配置：新买的 VPS 怎么整备和调教？" /&gt;&lt;p&gt;拿到新机器，咱们二话不说，先 ping 一下 IP，能否连通。连不通的话，可能是被封锁了，新机一般可以免费换 IP，换完接着 ping。&lt;/p&gt;
&lt;p&gt;连通后看看延迟和丢包，延迟太大就得考虑。可能这个机房，它不适合你。&lt;/p&gt;
&lt;p&gt;大家的地区，运营商，节点线路都不大一样，别人吹上天也没用，冷暖自知。&lt;/p&gt;
&lt;p&gt;能接受的话，就 ssh 上去，开始跑测试脚本，是骡子是马，还得看数据。跑完测试觉得机子不行，应该还能赶在截止时间之前退单退款。&lt;/p&gt;
&lt;p&gt;&lt;em&gt;有些鸡贼的商家，使用流量超过 10 G，就不给退单退款，这种就别跑测速了。&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;测速脚本一跑，几十个 GB 就没了，到时候退不了，只能砸自己手里。&lt;/p&gt;
&lt;p&gt;· · ·&lt;/p&gt;
&lt;h2 id=&#34;一脚本测试&#34;&gt;一、脚本测试
&lt;/h2&gt;&lt;p&gt;先别急着装什么面板，测完性能再说，直接上脚本。&lt;/p&gt;
&lt;h3 id=&#34;1-yabs-脚本&#34;&gt;1. Yabs 脚本
&lt;/h3&gt;&lt;p&gt;Yabs 是一个比较常用的综合测试脚本，权威性比较高，一般用来看最后的 cpu 得分。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wget -qO- yabs.sh | bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;2-bench-sh-一键测试脚本&#34;&gt;2. Bench. Sh 一键测试脚本
&lt;/h3&gt;&lt;p&gt;Bench. Sh 也是一个综合测试脚本，历史比较久，大佬一直在维护。&lt;/p&gt;
&lt;p&gt;原作者链接：&lt;a class=&#34;link&#34; href=&#34;https://github.com/teddysun/across/blob/master/bench.sh&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;github.com/teddysun/across&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wget -qO- bench.sh | bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;3-线路测试&#34;&gt;3. 线路测试
&lt;/h3&gt;&lt;p&gt;Besttrace 是专门测试回国线路的脚本，可以看到连接国内几大城市的节点线路和对应延迟。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wget -qO- git.io/besttrace | bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;4-网速测试&#34;&gt;4. 网速测试
&lt;/h3&gt;&lt;p&gt;network-speed，测试 vps 到全球的连接速度，节点比较多，&lt;code&gt;比较耗流量&lt;/code&gt;，成功测完得 20 G 往上。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wget -qO- network-speed.xyz | bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;5-硬盘测试&#34;&gt;5. 硬盘测试
&lt;/h3&gt;&lt;p&gt;这条测试是调用系统的命令，看看到底是 HDD、SSD 还是 NVME 硬盘。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;dd if=/dev/zero of=256 bs=64K count=4K oflag=dsync
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;测试结果参考：1-2 M/s 的是 HDD；20-30 M/s 是普通的 SSD；80 M/s 以上的是好机子。&lt;/p&gt;
&lt;h3 id=&#34;6-内存超售检测&#34;&gt;6. 内存超售检测
&lt;/h3&gt;&lt;p&gt;部分商家会超售内存，可以用该脚本检测。&lt;/p&gt;
&lt;p&gt;至于 CPU、带宽的超售，这个就比较稀松平常了，只能看大家的口碑和商家的良心。&lt;/p&gt;
&lt;p&gt;（脚本的安全性未知，建议看完重装系统部分，再决定要不要跑。）&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl https://raw.githubusercontent.com/uselibrary/memoryCheck/main/memoryCheck.sh | bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;7-流媒体解锁和-openai-解锁测试&#34;&gt;7. 流媒体解锁和 OpenAI 解锁测试
&lt;/h3&gt;&lt;p&gt;检测 VPS 的 IP，能否用来开通流媒体、OpenAI 等订阅服务。（同上，脚本安全性未知。）&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bash &amp;lt;(curl -L -s https://netflix.dad/detect-script)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;8-ip-检测&#34;&gt;8. IP 检测
&lt;/h3&gt;&lt;p&gt;如果对 IP 这个比较看重，怪文再推荐两个小工具，简单调查一下手上的 IP。&lt;/p&gt;
&lt;h4 id=&#34;1-ip-位置&#34;&gt;1) IP 位置
&lt;/h4&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://whatismyipaddress.com/ip&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;whatismyipaddress.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Whatismyipaddress 这个网站可以查到你 VPS 的 IP 所在地，数据比较精准。&lt;/p&gt;
&lt;h4 id=&#34;2-ip-纯净度&#34;&gt;2) IP 纯净度
&lt;/h4&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://scamalytics.com/ip&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;scamalytics.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Scamalytics 这个网站会返回一个分数和一个风险等级，欺诈风险分数一般低于 50 就好。&lt;/p&gt;
&lt;p&gt;当然，分数越低越好，0 分最好。&lt;/p&gt;
&lt;p&gt;&lt;em&gt;scamalytics 可以查到 IP 的纯净程度，这点很重要！&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;IP 越干净，越容易通过流媒体等服务的订阅风控，也不容易弹 Google 和 Cloudflare 的人机验证弹窗，和影响浏览体验的过渡页，代理翻墙的时候体验会更好。&lt;/p&gt;
&lt;p&gt;比如：注册 OpenAI 账号、开通 Plus 订阅，都是很看重 IP 欺诈分的，分数太高的话，申请 API 和 Plus 可能不给通过。&lt;/p&gt;
&lt;p&gt;当然，也可以选择其他方式进行代偿，比如套 wrap，或者用其他优质节点开通服务，后面换回原 IP 继续用，这种绕开方式基本没啥问题，除非原 IP 被墙了。&lt;/p&gt;
&lt;p&gt;· · ·&lt;/p&gt;
&lt;h2 id=&#34;二更新系统&#34;&gt;二、更新系统
&lt;/h2&gt;&lt;h3 id=&#34;1-重装系统&#34;&gt;1. 重装系统
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;建议先跑完测试脚本，再重装系统，也是为了规避脚本的安全性问题。可别以为大家用的脚本就很安全哦，咱还是别轻信外部脚本比较好。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;有些人喜欢跑各种整合过的一键脚本，也不看脚本里面写的啥，难搞&amp;hellip;&amp;hellip;&lt;/p&gt;
&lt;p&gt;一般来说，VPS 厂商给你装的默认操作系统，很可能不是你想要的发行版或者版本号，建议用厂商的面板重新安装一下系统。&lt;/p&gt;
&lt;p&gt;不太建议自己 diy，装些厂商没提供的系统，容易被抓到把柄。&lt;/p&gt;
&lt;h4 id=&#34;系统的选择&#34;&gt;系统的选择
&lt;/h4&gt;&lt;p&gt;服务器端发行版选择很多：Debian，Ubuntu，Rocky Linux，AlmaLinux，Fedora 等等，甚至 CentOS，OpenSUSE Leap 都行，选自己熟悉的就好。&lt;/p&gt;
&lt;p&gt;关于各个发行版的特点和取舍，这里先占个坑，后面来填吧。&lt;/p&gt;
&lt;p&gt;反正有条件的直接上 Red Hat Enterprise Linux（RHEL）就好，免费的哪有这个好啊。&lt;/p&gt;
&lt;p&gt;Ubuntu 因为资料好找，使用起来方便，稳定性也不错，所以怪文也一直用 Ubuntu。&lt;/p&gt;
&lt;p&gt;但自从 Canonical 往 Ubuntu 22.04.3 LTS 里面塞广告，有些广告还无法被移除，吃相有点难看，这种行径和国内厂商有得一拼了。&lt;/p&gt;
&lt;p&gt;目前还在寻找平替，因为系统还没换，下面的 shell 命令，基本都是基于 Ubuntu 的版本。&lt;/p&gt;
&lt;p&gt;如果装的是 Fedora 和 RHEL 系的发行版，比如 CentOS 之类的，请将下面命令中的 &lt;code&gt;apt&lt;/code&gt; 用 &lt;code&gt;yum&lt;/code&gt; 替换。&lt;/p&gt;
&lt;h3 id=&#34;2-更新应用列表升级更新软件&#34;&gt;2. 更新应用列表、升级更新软件
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apt update &amp;amp;&amp;amp; apt upgrade &amp;amp;&amp;amp; apt full-upgrade &amp;amp;&amp;amp; apt autoremove
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;3-安装基础工具包按需安装&#34;&gt;3. 安装基础工具包（按需安装）
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apt install vim curl unzip ufw
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;· · ·&lt;/p&gt;
&lt;h2 id=&#34;三安全配置&#34;&gt;三、安全配置
&lt;/h2&gt;&lt;p&gt;小白最容易忽略的就是安全配置，弱密码什么的就不说了，说一下核心的配置。&lt;/p&gt;
&lt;h3 id=&#34;1-添加新用户&#34;&gt;1. 添加新用户
&lt;/h3&gt;&lt;p&gt;不建议每次都用 root 账号登录，创建新用户，并给它 root 权限比较好。&lt;/p&gt;
&lt;p&gt;首先，添加新用户，并自动创建对应的组，然后根据提示设置密码：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;adduser 新用户名
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;设置新密码之后，继续。除了用户名，其他敲回车默认即可。&lt;/p&gt;
&lt;p&gt;添加新用户到 sudo 用户组，就可以使用 sudo 命令了：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;usermod -aG sudo 新用户名
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;// 相关补充
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;exit            // 用户退出登录
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;passwd p        // 重设密码
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;2-修改-ssh-登录端口&#34;&gt;2. 修改 SSH 登录端口
&lt;/h3&gt;&lt;p&gt;更改端口前，建议把 22 端口先添加上。等 ssh 能通过其他端口连接后，再注释掉 22 端口。&lt;/p&gt;
&lt;p&gt;先打开配置文件：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;vim /etc/ssh/sshd_config
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;找到这行：&lt;/p&gt;
&lt;p&gt;Port 22&lt;/p&gt;
&lt;p&gt;然后在后面追加想要的端口号：&lt;/p&gt;
&lt;p&gt;Port 端口号&lt;/p&gt;
&lt;p&gt;端口号的范围是 0 到 65535，数字别超了，然后还要避开常用的端口。&lt;/p&gt;
&lt;p&gt;加完端口，重启 SSHD 服务，让配置生效：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;systemctl restart sshd.service
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如遇到 ssh 连接总自己断开，还可以继续添加添加配置：&lt;/p&gt;
&lt;p&gt;ClientAliveInterval 30&lt;/p&gt;
&lt;p&gt;ClientAliveCountMax 6&lt;/p&gt;
&lt;h3 id=&#34;3-ssh-免密登录&#34;&gt;3. SSH 免密登录
&lt;/h3&gt;&lt;p&gt;Windows 用户在 /. Ssh 目录生成公钥和私钥：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ssh-keygen
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;再在 vps 上的生成用户的公钥和私钥：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ssh-keygen
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Ssh 目录下面创建名为 authorized_keys 的文件，把 Win 上的公钥复制进 authorized_keys 文件：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cd /当前用户目录/.ssh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;vim authorized_keys
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然后给 authorized_keys 文件设置权限：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;chmod 600 /当前用户目录/.ssh/authorized_keys
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;再重启 ssh：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;systemctl restart sshd
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;最后，在本地测试配置是否成功：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ssh 用户名@IP
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;在本地的 SSH 工具里配置一下登录凭证，就可以免密登录了。&lt;/p&gt;
&lt;h3 id=&#34;4-限制-root-用户直接-ssh-登录或者密码登录&#34;&gt;4. 限制 root 用户直接 ssh 登录或者密码登录
&lt;/h3&gt;&lt;p&gt;修改配置文件：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;vim /etc/ssh/sshd_config
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;加入内容（限制 root 用户直接 ssh 登录，换言之，后面得用新用户登录）：&lt;/p&gt;
&lt;p&gt;PermitRootLogin no&lt;/p&gt;
&lt;p&gt;如果只是想限制 root 用户密码登录，只能用密钥登录，则需要修改配置文件内容为：&lt;/p&gt;
&lt;p&gt;PermitRootLogin without-password&lt;/p&gt;
&lt;p&gt;使修改生效：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;systemctl restart sshd
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;修改文件权限，把 .ssh 目录设为 700：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;chmod 700 /root/.ssh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;5-启用防火墙&#34;&gt;5. 启用防火墙
&lt;/h3&gt;&lt;p&gt;检查防火墙的状态：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ufw status verbose
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;查看所有可用的应用程序配置：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ufw app list
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;查找指定配置文件包含的防火墙规则：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ufw app info &amp;#39;Nginx Full&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;启用防火墙之前，先允许 ssh 应用的默认端口：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ufw allow ssh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果 ssh 监听的是其他端口，就打开那个端口，允许外部访问：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ufw allow 端口
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;还可以指定访问的协议：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ufw allow 端口/协议
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;启用防火墙（启用之前一定要保证，SSH 的端口已经开了，不然登出之后，就登不进来了！）&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ufw enable
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;删除防火墙规则：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ufw delete allow 端口/tcp
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ufw delete 防火墙规则编号
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;关闭防火墙（规则和配置会保留）：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ufw disable
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;重置防火墙设置并停止（配置会重置）：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ufw reset
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;· · ·&lt;/p&gt;
&lt;h2 id=&#34;四基本配置&#34;&gt;四、基本配置
&lt;/h2&gt;&lt;h3 id=&#34;1-设置时区&#34;&gt;1. 设置时区
&lt;/h3&gt;&lt;p&gt;先看下系统的时区：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;timedatectl show
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;再按需修改，下面是按东八区的代号修改：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;timedatectl set-timezone Asia/Shanghai
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;2-修改登录欢迎语可选项&#34;&gt;2. 修改登录欢迎语（可选项）
&lt;/h3&gt;&lt;p&gt;Ubuntu 20.04 登录总提示 New release &amp;lsquo;22.04.3 LTS&amp;rsquo; available，如果不想升级，可以关掉登录后的动态消息。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;vim /etc/pam.d/sshd
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然后注释掉下面这两行：&lt;/p&gt;
&lt;p&gt;Session optional pam_motd. So motd=/run/motd. Dynamic&lt;/p&gt;
&lt;p&gt;Session optional pam_motd. So noupdate&lt;/p&gt;
&lt;p&gt;Ubuntu 22.04 每次登录都弹个很长的欢迎语，里面还有广告，难受。&lt;/p&gt;
&lt;p&gt;好消息是，动态消息也可以像上面 Ubuntu 20.04 那样彻底禁止掉。&lt;/p&gt;
&lt;p&gt;坏消息是，其他夹在 apt 命令中的广告就不那么好弄了。&lt;/p&gt;
&lt;p&gt;不想完全关闭动态消息的话，也有些能做的事，比如欢迎语里面的 K 8 S 推广内容倒是可以手动关闭。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;vim /etc/default/motd-news
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;把文件里的 ENABLED=1 改成 ENABLED=0 就行。&lt;/p&gt;
&lt;h3 id=&#34;3-装面板可选项&#34;&gt;3. 装面板（可选项）
&lt;/h3&gt;&lt;p&gt;如果手上的机器多，或者对命令行终端不感冒，也可以考虑装个面板，比如：1 Panel、宝塔之类的。&lt;/p&gt;
&lt;p&gt;面板安装和使用，又可以写一篇长文了，有需要的手动搜一下吧。&lt;/p&gt;
&lt;p&gt;· · ·&lt;/p&gt;
&lt;h2 id=&#34;五科学配置可选项&#34;&gt;五、科学配置（可选项）
&lt;/h2&gt;&lt;h3 id=&#34;1-bbr-加速&#34;&gt;1. BBR 加速
&lt;/h3&gt;&lt;p&gt;如果系统不支持 BBR 2 或者 BBR Plus，配置 BBR 加速就行了。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;echo &amp;#34;net.core.default_qdisc=fq&amp;#34; &amp;gt;&amp;gt; /etc/sysctl.conf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;echo &amp;#34;net.ipv4.tcp_congestion_control=bbr&amp;#34; &amp;gt;&amp;gt; /etc/sysctl.conf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sysctl -p
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;验证是否成功：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sysctl net.ipv4.tcp_available_congestion_control
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;lsmod | grep bbr
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果系统支持 BBR 2 或者 BBR Plus 的话，可以用一键脚本装内核，开启 BBR 2，至于安全性，那就不清楚了。&lt;/p&gt;
&lt;h3 id=&#34;2-warp&#34;&gt;2. WARP
&lt;/h3&gt;&lt;p&gt;WARP 是 Cloudflare 提供的网络流量安全及加速服务，它基于 WireGuard，能够帮你通过连接到 Cloudflare 的边缘节点，实现隐私保护及链路优化。&lt;/p&gt;
&lt;h3 id=&#34;3-wireguard&#34;&gt;3. WireGuard
&lt;/h3&gt;&lt;p&gt;如果要用 WARP，那肯定要装 WireGuard。&lt;/p&gt;
&lt;p&gt;WARP 的安装，又可以写一篇博文了，有需要的手动搜一下吧。&lt;/p&gt;
&lt;h3 id=&#34;4-v-2-ray&#34;&gt;4. V 2 Ray
&lt;/h3&gt;&lt;p&gt;这个之前整过，就写出来把，用的是官方脚本：&lt;a class=&#34;link&#34; href=&#34;https://github.com/v2fly/fhs-install-v2ray&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/v2fly/fhs-install-v2ray&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;V 2 Ray 的安装倒是很简单：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bash &amp;lt;(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;安装后就可以启动了，但是建议先改下配置文件。（配置内容根据官方的模板，做下调整就好）&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;vim /usr/local/etc/v2ray/config.json
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;改好配置后，先启动测试下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;sudo&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;systemctl&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;daemon&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;reload&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;sudo&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;systemctl&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;start&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;v2ray&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;查看服务状态：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;systemctl status v2ray
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;开机自启，让系统启动时引导 v 2 ray 启动：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl enable v2ray
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;反悔了，不让系统启动时引导 v 2 ray 启动：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;systemctl disable v2ray
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;停止服务：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;systemctl stop v2ray
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;重新加载：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;systemctl&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;reload&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;v2ray&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;V 2 ray 默认的配置路径：&lt;/p&gt;
&lt;p&gt;/usr/local/etc/v 2 ray/config. Json&lt;/p&gt;
&lt;p&gt;V 2 ray 默认的日志路径：&lt;/p&gt;
&lt;p&gt;/var/log/v 2 ray/access. Log&lt;/p&gt;
&lt;p&gt;/var/log/v 2 ray/error. Log&lt;/p&gt;
&lt;p&gt;当然，如果嫌手动配置麻烦的话，也可以选择一键安装和引导配置的脚本，比如下面的这个（安全性未知）：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bash &amp;lt;(wget -qO- -o- https://git.io/v2ray.sh)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;· · ·&lt;/p&gt;
&lt;h2 id=&#34;六推荐软件可选项&#34;&gt;六、推荐软件（可选项）
&lt;/h2&gt;&lt;h3 id=&#34;1-docker-安装&#34;&gt;1. Docker 安装
&lt;/h3&gt;&lt;p&gt;现在干点啥都喜欢上 Docker，服务基本都扔 Docker 里面了，有需要的建议先安上，挺省心的。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://get.docker.com -o get-docker.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo sh get-docker.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;看看安装是否成功：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker --version
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;补充一下，这个脚本是官方的，会自动安装 Docker Compose 组件，调用命令是：&lt;code&gt;docker compose&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果看到别人用的命令是 docker-compose，那替换成 &lt;code&gt;docker compose&lt;/code&gt; 就好，不必再装一个 docker-compose。&lt;/p&gt;
&lt;h3 id=&#34;2-nginx-安装&#34;&gt;2. Nginx 安装
&lt;/h3&gt;&lt;p&gt;把 Nginx 放 Docker 当然也可以，但是对于这种入口级别的中间件，个人还是习惯用原生的。&lt;/p&gt;
&lt;p&gt;安装非常的简单：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install nginx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;看看成功没有：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nginx -V
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;启动 Nginx：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;sudo&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;systemctl&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;daemon&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;reload&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;sudo&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;systemctl&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;start&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;nginx&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;测一下：在浏览器通过 ip 加 80 端口访问，是否是 Nginx 默认欢迎页。&lt;/p&gt;
&lt;p&gt;配置的话，一般直接去 /etc/nginx/conf. D 添加个文件，配一下就好了。&lt;/p&gt;
&lt;p&gt;有静态网站，可以直接扔 /var/www/ 里面，也很方便。&lt;/p&gt;
&lt;p&gt;Nginx 的维护，基本靠系统控制命令就能实现：&lt;/p&gt;
&lt;p&gt;查看服务状态：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;systemctl status nginx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果只修改了配置，Nginx 可以在不中断服务的情况下热加载，这个很好用：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;sudo&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;systemctl&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;reload&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;nginx&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;开启自启，让系统启动时引导 Nginx 启动：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;systemctl enable nginx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;反悔了，不让系统启动时引导 Nginx 启动：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;systemctl disable nginx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;停用 nginx：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;systemctl stop nginx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;3-nvm-安装&#34;&gt;3. Nvm 安装
&lt;/h3&gt;&lt;p&gt;Node. Js 也是火的不行，经常看到一些开源工具，都是放在 Node 里面跑。&lt;/p&gt;
&lt;p&gt;有需要的也可以装上，但不建议直接装 Node. Js，因为版本问题什么的太操心了，直接上 Nvm 更方便。&lt;/p&gt;
&lt;p&gt;还有一点非常的坑，Node. Js 对用户的权限要求有点变态，个人建议用 root 用户安装，启动也是。之前只用其他用户 sudo 安装，结果各种问题。&lt;/p&gt;
&lt;p&gt;从 Github 拉取官方正式版：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;安装 Nvm：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;source ~/.bashrc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;再用 Nvm 安装 Node. Js：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nvm install node
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;看看安装成功没有：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nvm --version
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;node --version
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm --version
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;后面就可以 npm 一把梭了，当然也可以装 yarn 和 pm 2，看个人喜好。&lt;/p&gt;
&lt;p&gt;· · ·&lt;/p&gt;
&lt;h2 id=&#34;七小结&#34;&gt;七、小结
&lt;/h2&gt;&lt;p&gt;最后，终于来到最关键的部分了。其实上面这些整备的过程，一个脚本就可以搞定。&lt;/p&gt;
&lt;p&gt;可以说是一次编写，多次运行，以后拿到新 VPS，直接复制过去就能跑。&lt;/p&gt;
&lt;p&gt;整备的脚本，发个出来，给大家做个参考吧：&lt;/p&gt;
&lt;h4 id=&#34;1-软件更新&#34;&gt;1) 软件更新
&lt;/h4&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apt update &amp;amp;&amp;amp; apt upgrade &amp;amp;&amp;amp; apt full-upgrade &amp;amp;&amp;amp; apt autoremove
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果不想一直蹲那儿按确认，可以强制自动确认（风险还是有的，自己权衡吧）：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apt update -y &amp;amp;&amp;amp; apt upgrade -y &amp;amp;&amp;amp; apt full-upgrade -y &amp;amp;&amp;amp; apt autoremove -y
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id=&#34;2-创建和运行脚本&#34;&gt;2) 创建和运行脚本
&lt;/h4&gt;&lt;p&gt;把脚本复制进去（参考脚本在后面，往下翻）：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;vi ready.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;给执行权限：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;chmod +x ready.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;运行脚本：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;source ready.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;脚本 ready. Sh 的参考内容如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;60
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;61
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;62
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;63
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;64
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;65
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;66
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;67
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;68
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;69
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;70
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;71
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;72
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;73
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;74
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#!/bin/bash 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 一键整备脚本&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 注意：命令里面的汉字部分，需要根据实际替换掉，根据自己的需要来取舍&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 1) 软件更新：建议提前单独执行，可能需要更新内核，重启机器什么的&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 2) 创建脚本：把脚本放到 VPS 上，赋予执行权限并执行。然后后面的步骤就可以完全自动化了&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 3) 安装基础工具&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apt install ufw curl unzip
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 4) 添加新用户&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 添加用户和用户组&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;username&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;新用户&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;password&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;密码&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;useradd -m -s /bin/bash -G sudo &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$username&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 设置用户密码&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$username&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$password&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; chpasswd
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 5) 修改 SSH 登录端口&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sed -i &lt;span class=&#34;s1&#34;&gt;&amp;#39;/#Port 22/a Port 22\nPort 端口号&amp;#39;&lt;/span&gt; /etc/ssh/sshd_config
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 重启 sshd&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;systemctl restart sshd
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 6) shh 免密连 vps&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;public_key&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;本地公钥&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 生成服务器用户的公钥和私钥&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ssh-keygen
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 写入本地的私钥到文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat &lt;span class=&#34;s&#34;&gt;&amp;lt;&amp;lt;EOF &amp;gt; /当前用户目录/.ssh/authorized_keys
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;$public_key
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;EOF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 重启 sshd&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;chmod &lt;span class=&#34;m&#34;&gt;600&lt;/span&gt; /当前用户目录/.ssh/authorized_keys
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;systemctl restart sshd
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 7) 限制 root 用户用用密码登录（如果有设置 shh 免密登录的话）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 使用 sed 替换文件中的内容&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;/etc/ssh/sshd_config&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;search&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;PermitRootLogin yes&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;replace&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;PermitRootLogin without-password&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sed -i &lt;span class=&#34;s2&#34;&gt;&amp;#34;s/&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$search&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$replace&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$file&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 重启 sshd&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;chmod &lt;span class=&#34;m&#34;&gt;700&lt;/span&gt; /当前用户目录/.ssh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;systemctl restart sshd
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 8) 设置防火墙&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 开端口&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ufw allow ssh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ufw allow &lt;span class=&#34;m&#34;&gt;22&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ufw allow 端口号
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 启用防火墙&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ufw &lt;span class=&#34;nb&#34;&gt;enable&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 9) 设置时区&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;timedatectl set-timezone 时区
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 10) 配置 BBR 加速&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;net.core.default_qdisc=fq&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; /etc/sysctl.conf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;net.ipv4.tcp_congestion_control=bbr&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; /etc/sysctl.conf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sysctl -p
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;跑完脚本验证一下配置，比如：新用户登录，root 用户无密码登录等，没问题就可以开始装应用干活了。&lt;/p&gt;
&lt;p&gt;· · ·&lt;/p&gt;
&lt;h2 id=&#34;七相关&#34;&gt;七、相关
&lt;/h2&gt;&lt;h3 id=&#34;补充说明&#34;&gt;补充说明
&lt;/h3&gt;&lt;p&gt;如果是境内 VPS，有些额外的坑：可能需要镜像网站才能访问某些服务。&lt;/p&gt;
&lt;h3 id=&#34;订阅通知&#34;&gt;订阅通知
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;后面还会有几篇 VPS、VPN 相关的的长文，可以订阅怪文的 &lt;a class=&#34;link&#34; href=&#34;https://t.me/guaiwin&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Telegram 电报（纸飞机）&lt;/a&gt; 或者&lt;a class=&#34;link&#34; href=&#34;https://x.com/guaiwin&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;推特&lt;/a&gt; 获取更新通知哦。&lt;/strong&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>大家好，我来了！我叫ccino(奇诺)！</title>
        <link>https://blog.ccino.org/p/about/</link>
        <pubDate>Sat, 05 Oct 2024 11:41:03 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/about/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/about/background.jpg" alt="Featured image of post 大家好，我来了！我叫ccino(奇诺)！" /&gt;&lt;p&gt;从今天起ccino（奇诺）将分享给大家日常生活中所得，可能有技术、娱乐、美食、牢骚、等等等！&lt;/p&gt;
</description>
        </item>
        <item>
        <title>使用 Obsidian 免费建个人博客</title>
        <link>https://blog.ccino.org/p/use-obsidian-to-create-a-free-personal-blog/</link>
        <pubDate>Sat, 05 Oct 2024 11:25:46 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/use-obsidian-to-create-a-free-personal-blog/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/use-obsidian-to-create-a-free-personal-blog/Use%20Obsidian%20to%20create%20a%20free%20personal%20blog.png" alt="Featured image of post 使用 Obsidian 免费建个人博客" /&gt;&lt;p&gt;目前我的网站发布流程就是使用该篇文章技术，如果你使用的 Notion 写文章，可以看看这篇 &lt;a class=&#34;link&#34; href=&#34;https://www.printlove.cn/vercel-notion/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Vercel + Notion 建个人博客&lt;/a&gt; 。&lt;/p&gt;
&lt;p&gt;流程简介：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;选择自己的静态网站生成工具，我选择 Hugo；&lt;/li&gt;
&lt;li&gt;使用 Hugo 初始化好结构然后上传到 Github 仓库；&lt;/li&gt;
&lt;li&gt;Obsidian 写好文章，然后使用插件将指定的文章 (md 格式) 上传到第 2 步的仓库,插件的作用就是将 Obsidian 中的 markdown 内容适配成 Hugo 需要的内容；&lt;/li&gt;
&lt;li&gt;部署仓库，配置域名。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;相关工具&#34;&gt;相关工具
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;Obsidian + Github Publisher 插件，必须&lt;/li&gt;
&lt;li&gt;Hugo + Paper Mod 主题，可选择其它&lt;/li&gt;
&lt;li&gt;Github，必须&lt;/li&gt;
&lt;li&gt;Vercel，可选择其它&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;具体步骤继续往下看。&lt;/p&gt;
&lt;h2 id=&#34;hugo--papermod&#34;&gt;Hugo + PaperMod
&lt;/h2&gt;&lt;p&gt;使用 hugo 初始化一个网站，并配置好你喜欢的主题，并发布到 Github 上，这块具体怎么弄就不展开介绍了。&lt;/p&gt;
&lt;p&gt;可以参考：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;官方主题文档：&lt;a class=&#34;link&#34; href=&#34;https://adityatelange.github.io/hugo-PaperMod/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PaperMod&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;我的仓库：&lt;a class=&#34;link&#34; href=&#34;https://github.com/miaogaolin/workspace-obsidian-publisher&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;miaogaolin/workspace-obsidian-publisher&lt;/a&gt; 稍微改了点官方主题&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;github-publisher&#34;&gt;Github Publisher
&lt;/h2&gt;&lt;p&gt;给 Obsidian 安装 Github Publisher 插件，该插件的作用是将 Obsidian 中的文章和本地附件上传到 Github 仓库，上传前可以指定文件目录、自定义内容替换等操作。&lt;/p&gt;
&lt;h3 id=&#34;github-config&#34;&gt;Github config
&lt;/h3&gt;&lt;p&gt;&lt;img src=&#34;https://cdn.jsdelivr.net/gh/miaogaolin/workspace-obsidian-publisher/static/images/2fd44d1493f8c3f6eb2a342853810937.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Github config&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;Github config&lt;/p&gt;
&lt;p&gt;注意：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;生成的 token 不要放在 Github 的公共仓库，检测到 token 就会失效。&lt;/li&gt;
&lt;li&gt;通过 here 生成 token 时的 &lt;a class=&#34;link&#34; href=&#34;https://github.com/settings/tokens/new?scopes=repo,workflow&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;链接&lt;/a&gt; 会自动带上权限，你只需要设置名字和过期时间即可。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;默认配置&#34;&gt;默认配置
&lt;/h3&gt;&lt;p&gt;根据我的使用情况，我保存了一份设置，你可以直接使用，如果想了解为何这样，可以看看： &lt;a class=&#34;link&#34; href=&#34;https://www.printlove.cn/github-publisher-hugo/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Github Publisher 插件适配 Hugo 的配置&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;前往 &lt;a class=&#34;link&#34; href=&#34;https://github.com/miaogaolin/obsidian-github-publisher-hugo&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;miaogaolin/obsidian-github-publisher-hugo&lt;/a&gt; 拷贝 settings.json 设置，然后粘贴导入插件：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.jsdelivr.net/gh/miaogaolin/workspace-obsidian-publisher/static/images/e391eb4a6c68184f665340c112cffe98.webp&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Import settings&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;Import settings&lt;/p&gt;
&lt;h2 id=&#34;obsidian-文章模板&#34;&gt;Obsidian 文章模板
&lt;/h2&gt;&lt;p&gt;我完整说说我在 obsidian 模板里配置的内容，用于发布文章时统一的设置。 我的配置是和 Hugo 强关联的，如果你用了其它工具，就根据自己的情况调整。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nn&#34;&gt;---&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;date&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;{{date}}&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 创建时间，我这边生成的格式是 YYYY-MM-DDTHH:mm:ssZ&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;tags&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;	&lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;标签1&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;	&lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;标签2&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;{{title}}&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;slug&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;{{time}}&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 自定义 URL 中文章的访问名称，默认用时间戳填充模板格式为X&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;share&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 配合 Github Publisher插件用的,true表示 obsidian 的文章可以发布&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;canonicalURL&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 之前文章在其他地方被发布的地址，避免搜索引擎重复，设置了该属性会优先展示 canonicalURL 执行的文章&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;keywords&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;   &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 用于 SEO 优化，也可以不配置该内容默认会使用 tags 的内容&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;	&lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;关键字1&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;	&lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;关键字2&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 文章的描述 SEO 优化，为空时默认会截取文章前面的内容&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;series&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;系列&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 系列文章&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;lastmod&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 文章最后更新的时间&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;lang&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;cn&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 默认不用写，配置文件会设置默认 cn 中文，en 英文等等&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;cover.image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 文章封面图片地址&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;author&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 作者名称&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;posts&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 搭配 Github Publisher 插件设置文章上传的目录&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nn&#34;&gt;---&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;dir 属性：设置文章的上传目录，以 &lt;code&gt;content/&lt;/code&gt; 为根目录，默认上传到 &lt;code&gt;content/posts&lt;/code&gt; 目录，如果不想在网站页面展示出来选择其它目录即可，例如：&lt;a class=&#34;link&#34; href=&#34;https://www.printlove.cn/about/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;关于我&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://www.printlove.cn/sponsor/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;赞助&lt;/a&gt; 这两篇文章，我设置的就是 &lt;code&gt;dir: ./&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cover.image&lt;/code&gt;：设置封面，在使用 Github Publisher 后会转化为二级 key。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;发布&#34;&gt;发布
&lt;/h2&gt;&lt;h3 id=&#34;obsidian-命令&#34;&gt;Obsidian 命令
&lt;/h3&gt;&lt;p&gt;当然插件的配置也支持菜单模式，配置前往：Plugin settings -&amp;gt; Menu。&lt;/p&gt;
&lt;p&gt;先使用命令行发布，输入 active，然后选择 Github Publisher 即可，记着文章的 share 属性要开启，即 true。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.jsdelivr.net/gh/miaogaolin/workspace-obsidian-publisher/static/images/01bd34047086ccab150386a9fbee2e6a.webp&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;上传文章命令&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;上传文章命令&lt;/p&gt;
&lt;p&gt;右下角会提示上传的进度，如果完成了右上角有提示：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.jsdelivr.net/gh/miaogaolin/workspace-obsidian-publisher/static/images/2f4eaef491242a63a5099537f5ff8a5f.webp&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;成功提示&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;成功提示&lt;/p&gt;
&lt;p&gt;如果你想上传多个 share 为 true 的文章，使用的命令为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Refresh published and upload new notes 将所有 share 为 true 且新更新的文章发布&lt;/li&gt;
&lt;li&gt;Refresh all published notes 将所有 share 为 true 的文章都发布&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;vercel-部署&#34;&gt;Vercel 部署
&lt;/h3&gt;&lt;p&gt;接下来访问 &lt;a class=&#34;link&#34; href=&#34;https://vercel.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;vercel&lt;/a&gt; 官网，然后将上面对应的仓库部署上去即可。&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;你也可以选择 Github Pages、Netlify 部署，甚至自己的服务器也行。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;h4 id=&#34;1-github&#34;&gt;1. Github
&lt;/h4&gt;&lt;p&gt;使用 Github 登录。&lt;/p&gt;
&lt;h4 id=&#34;2-创建项目&#34;&gt;2. 创建项目
&lt;/h4&gt;&lt;p&gt;&lt;img src=&#34;https://cdn.jsdelivr.net/gh/miaogaolin/workspace-obsidian-publisher/static/images/820895b5d2f3b4a8f0cfcbe729713b1b.webp&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;820895b5d2f3b4a8f0cfcbe729713b1b.webp&#34;
	
	
&gt;&lt;/p&gt;
&lt;h4 id=&#34;3-import--deploy&#34;&gt;3. Import &amp;amp; Deploy
&lt;/h4&gt;&lt;p&gt;导入 Github 上 fork 后的项目，&lt;strong&gt;import&lt;/strong&gt; 后再点击 &lt;strong&gt;deploy&lt;/strong&gt;，下来需要耐心等会。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.jsdelivr.net/gh/miaogaolin/workspace-obsidian-publisher/static/images/f82042806c13baba0ff30bf60510df39.webp&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;f82042806c13baba0ff30bf60510df39.webp&#34;
	
	
&gt;注意要设置 Hugo 版本的环境变量：&lt;img src=&#34;https://cdn.jsdelivr.net/gh/miaogaolin/workspace-obsidian-publisher/static/images/7cda90de3afb93df2543fe2009f6e6a7.webp&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;7cda90de3afb93df2543fe2009f6e6a7.webp&#34;
	
	
&gt;&lt;/p&gt;
&lt;h4 id=&#34;4-域名&#34;&gt;4. 域名
&lt;/h4&gt;&lt;p&gt;下来输入自己的域名，然后 ADD，选择推荐的转发规则即可，按照给的提示信息去解析自己的域名。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.jsdelivr.net/gh/miaogaolin/workspace-obsidian-publisher/static/images/c370b2dc6029ed604493b2ec1e1e6e9a.webp&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;c370b2dc6029ed604493b2ec1e1e6e9a.webp&#34;
	
	
&gt;&lt;img src=&#34;https://cdn.jsdelivr.net/gh/miaogaolin/workspace-obsidian-publisher/static/images/e6aee6766b6bfe93a06cae9c8016ac65.webp&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;e6aee6766b6bfe93a06cae9c8016ac65.webp&#34;
	
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;优化内容的相关插件&#34;&gt;优化内容的相关插件
&lt;/h2&gt;&lt;p&gt;这些 Obsidian 插件对于发布网站不是必要的，但是对于优化内容格式还是很有必要的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Obsidian Linter 插件,我只用了在英文两边加空格的设置。&lt;/li&gt;
&lt;li&gt;Image Converter 转化图片格式，我统一转为 webp，并设置了图片分辨率大小。&lt;/li&gt;
&lt;li&gt;Unique attachments 用于将附件的文件名统一为 “字母 + 数字”的格式,记着在配置里加入 webp 图片格式&lt;/li&gt;
&lt;li&gt;Image Inserter 用于找图片，我用于设置文章封面，即设置 &lt;code&gt;cover.image&lt;/code&gt; 属性。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;p&gt;重点学会了 Github Publisher 插件如何将 Obsidian 中的文章格式适配成你最终想要的内容格式即可。&lt;/p&gt;
&lt;p&gt;至于你选择 Hugo 静态网站生成器，还是 Hexo 都是可以的。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Archives</title>
        <link>https://blog.ccino.org/archives/</link>
        <pubDate>Sun, 06 Mar 2022 00:00:00 +0000</pubDate>
        
        <guid>https://blog.ccino.org/archives/</guid>
        <description></description>
        </item>
        <item>
        <title>Links</title>
        <link>https://blog.ccino.org/links/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://blog.ccino.org/links/</guid>
        <description></description>
        </item>
        <item>
        <title>Search</title>
        <link>https://blog.ccino.org/search/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://blog.ccino.org/search/</guid>
        <description></description>
        </item>
        
    </channel>
</rss>
