<?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>Wed, 12 Aug 2026 08:00:00 +0800</lastBuildDate><atom:link href="https://blog.ccino.org/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>DeepSeek V4-Flash 正式版之后，AI 编程该按任务分层，而不是按模型站队</title>
        <link>https://blog.ccino.org/p/deepseek-v4-flash-agent-task-routing-2026/</link>
        <pubDate>Wed, 12 Aug 2026 08:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/deepseek-v4-flash-agent-task-routing-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/deepseek-v4-flash-agent-task-routing-2026/imgs/cover.png" alt="Featured image of post DeepSeek V4-Flash 正式版之后，AI 编程该按任务分层，而不是按模型站队" /&gt;&lt;p&gt;7 月 31 日，DeepSeek 将 &lt;code&gt;deepseek-v4-flash&lt;/code&gt; 更新为正式版。更新日志写得很克制，模型架构和规模保持不变，主要调整发生在后训练阶段。新版本原生支持 Responses API，也为 Codex 做了适配。&lt;/p&gt;
&lt;p&gt;公告里还有一组很容易吸引注意力的 Agent 基准分数，包括 Terminal Bench 2.1 的 82.7、DeepSWE 的 54.4。看这类分数时得留个心眼。它们首先是厂商口径，DSBench-FullStack 和 DSBench-Hard 还是内部测试集，和一个团队手里的仓库、脚本、测试环境并不相同。&lt;a class=&#34;link&#34; href=&#34;https://api-docs.deepseek.com/updates/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;更新日志&lt;/a&gt;把测试框架和参数列了出来，这件事本身比排名更有用，它让人知道厂商正在把力气花到哪里。&lt;/p&gt;
&lt;p&gt;我更在意的是另一个信号。&lt;/p&gt;
&lt;p&gt;一款面向 Coding Agent 的低价模型，开始强调工具调用、长任务和 API 兼容性。AI 编程里那个老问题就得换个问法了。与其反复争论 DeepSeek、Claude、Codex 谁更强，不如先看一项具体工作里，哪些环节配得上昂贵的判断，哪些环节只需要可靠地跑完。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/deepseek-v4-flash-agent-task-routing-2026/imgs/deepseek-v4-spec-en.png&#34;
	width=&#34;1298&#34;
	height=&#34;256&#34;
	srcset=&#34;https://blog.ccino.org/p/deepseek-v4-flash-agent-task-routing-2026/imgs/deepseek-v4-spec-en_hu_1bba1845a2be8e12.png 480w, https://blog.ccino.org/p/deepseek-v4-flash-agent-task-routing-2026/imgs/deepseek-v4-spec-en_hu_808f412eeaa24fce.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;DeepSeek 官方发布的 V4 系列规格概览&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;507&#34;
		data-flex-basis=&#34;1216px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;过去选模型，多少有点像挑一个主力队员。现在更像给一支工程队排班。&lt;/p&gt;
&lt;h2 id=&#34;一条发布消息带来一张任务路由表&#34;&gt;一条发布消息带来一张任务路由表
&lt;/h2&gt;&lt;p&gt;V4-Flash 的这次更新，表面上很像一则常规模型新闻。正式版上线，基准成绩更新，能够接入 Codex。&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;跨模块重构则是另一回事。隐含约束会不会被碰坏，两个需求为何冲突，测试全绿以后还有没有漏网的回归，这些判断交给能力不足的模型，省下的 API 钱很可能全花在人工返工上。&lt;/p&gt;
&lt;p&gt;它按任务条件选择模型，也决定什么时候该停下来验证，什么时候该升级。&lt;/p&gt;
&lt;p&gt;DeepSeek V4-Flash 的正式版让这件事近了一步。官方把它放在 Agent 和 Codex 的语境里，瞄准的显然是长流程中那些会被频繁调用的执行工作。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/deepseek-v4-flash-agent-task-routing-2026/imgs/deepseek-v4-flash-benchmark.png&#34;
	width=&#34;1080&#34;
	height=&#34;798&#34;
	srcset=&#34;https://blog.ccino.org/p/deepseek-v4-flash-agent-task-routing-2026/imgs/deepseek-v4-flash-benchmark_hu_67180859da0f8a1c.png 480w, https://blog.ccino.org/p/deepseek-v4-flash-agent-task-routing-2026/imgs/deepseek-v4-flash-benchmark_hu_2f4f670e91ece995.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;DeepSeek 官方发布的 V4-Flash 基准对比图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;135&#34;
		data-flex-basis=&#34;324px&#34;
	
&gt;&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/deepseek-v4-flash-agent-task-routing-2026/imgs/task-routing-map.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/deepseek-v4-flash-agent-task-routing-2026/imgs/task-routing-map_hu_9ac5949615d40393.png 480w, https://blog.ccino.org/p/deepseek-v4-flash-agent-task-routing-2026/imgs/task-routing-map_hu_92e0fb6f89e09a61.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;输入一百万 token 多少钱，输出一百万 token 多少钱，缓存有没有折扣。这些数字当然要看，账却不能只算到这里。&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 改错一处代码，多花一轮 token 还算小事。无关 diff 会留下来，上下文会被污染，工程师得花时间判断哪些改动能保留，哪些必须撤掉。&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;讨论模型路由时，很容易先列一张供应商和价格表。这样做会把注意力带到模型名称上。&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;解析 CI 日志、格式化文件、运行 linter、检查依赖版本、筛选固定字段，都应优先交给脚本、规则引擎或已有工具。模型可以解释失败原因，也可以处理规则覆盖不到的边角。&lt;/p&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;这一层看重稳定、速度和工具约束的遵守程度。V4-Flash 这类明确面向 Agent 能力和 Codex 接入的模型，可能会在这里找到位置。&lt;/p&gt;
&lt;p&gt;默认层仍然需要边界。文件范围、命令白名单、最大重试次数和测试结果，都该事先写好。&lt;/p&gt;
&lt;h3 id=&#34;3-高价值判断及时升级&#34;&gt;3. 高价值判断及时升级
&lt;/h3&gt;&lt;p&gt;跨文件设计、复杂 bug 的根因分析、迁移方案选择，以及涉及安全或数据损失的改动，调用成本在这里排不到第一位。错一次带来的损失，往往大过多跑几轮 token。&lt;/p&gt;
&lt;p&gt;升级条件最好是能观察到的信号，别只靠一句这次似乎有点难。例如同一个错误已经连续两次修复失败，改动跨越多个服务边界，测试只能覆盖部分路径，模型判断和已有架构约束打架，或者某项操作执行后很难撤回。&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;模型可以读测试结果，解释异常，提出下一轮修复思路。验收最好落在外部系统上，包括单元测试、集成测试、lint、类型检查、预览环境、代码审查和人工批准。&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;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; 测试是否失败，工具调用是否异常，修改范围是否持续扩大，模型是否在同一处反复打转。出现这些信号时，可以升级模型、缩小范围，或者请人介入。&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;起步阶段用不着搭复杂的评测平台。每次 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;/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;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;测试、检查、人工 review 是否通过？&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;人工返工&lt;/td&gt;
					&lt;td&gt;最后花了多少时间纠正 Agent 的改动？&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这张表没有必要变成员工监控工具，也用不着逼每个任务算出精确 ROI。&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/deepseek-v4-flash-agent-task-routing-2026/imgs/verification-escalation-loop.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/deepseek-v4-flash-agent-task-routing-2026/imgs/verification-escalation-loop_hu_bc90f355500e449d.png 480w, https://blog.ccino.org/p/deepseek-v4-flash-agent-task-routing-2026/imgs/verification-escalation-loop_hu_26344c3cfddca64d.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Coding 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;模型路由听起来像平台团队才会做的事。其实一个人用 CLI 写代码，也能先把规则写进项目脚本、Agent 说明和 CI。&lt;/p&gt;
&lt;p&gt;第一步是给任务贴标签。提交任务前，先标明它属于哪一类，例如只读分析、可回滚的代码修改、依赖升级、数据库迁移或生产操作。标签决定 Agent 能读哪些目录，能运行哪些命令，能不能修改锁文件，是否必须等人工确认。项目里原本就有脚本能判断的事情，不要让模型重新判断一遍。&lt;/p&gt;
&lt;p&gt;第二步是把一次尝试收小。给 Agent 明确的文件范围、完成条件和验证命令。比如只允许修改 &lt;code&gt;src/auth/&lt;/code&gt;，完成条件是复现指定测试并修复，验证命令是对应的单测、类型检查和 linter。范围越清楚，低成本模型越容易稳定交付，失败后的 diff 也更容易看。&lt;/p&gt;
&lt;p&gt;第三步是给重试设上限。测试失败后，先让 Agent 说明失败来自环境、测试基线还是本次改动；同一个方向连续失败两次，就保留日志和 diff，交给更强的模型或开发者继续查。无限重试很少能把坏判断变好，更多时候只会扩大改动范围。&lt;/p&gt;
&lt;p&gt;第四步是让验证独立存在。生成代码的 Agent 可以提出要跑什么测试，不能单凭自己的总结宣布通过。CI、类型检查、测试、依赖审计和人工 review 各管一段。对数据库、权限和部署这类操作，先生成计划和 dry run 结果，真正执行前停下来确认。&lt;/p&gt;
&lt;p&gt;第五步才是复盘模型。每周抽一小批 Agent 任务，看默认层的通过率、升级原因、平均工具调用轮数和人工返工时间。若某类任务经常升级，问题可能在任务描述、测试覆盖或工具权限，不一定是模型不够强。记录几周以后，路由规则才会从直觉变成团队自己的经验。&lt;/p&gt;
&lt;p&gt;有研究把可靠 Agent 的关键放在可执行、可验证和有状态的 harness 上，&lt;a class=&#34;link&#34; href=&#34;https://arxiv.org/html/2605.18747v1&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Code as Agent Harness&lt;/a&gt;讨论的也是这条路。JetBrains 对 Agent 工作流的概括同样很实用，计划、工具调用、观察结果和停止条件应当组成一个闭环。&lt;a class=&#34;link&#34; href=&#34;https://www.jetbrains.com/pages/ai-agents/architecture/agentic-workflows/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;完整指南&lt;/a&gt;里的说法并不神秘，放到代码仓库里，就是给每一次尝试留下边界、证据和出口。&lt;/p&gt;
&lt;h2 id=&#34;v4-flash-值得关注也需要自己验证&#34;&gt;V4-Flash 值得关注，也需要自己验证
&lt;/h2&gt;&lt;p&gt;DeepSeek 公布的成绩值得关注。官方把 V4-Flash 放进 Code Agent、Responses API 和 Codex 适配的叙事里，它显然不只服务聊天场景。&lt;/p&gt;
&lt;p&gt;从发布公告走到生产默认层，中间还隔着一段实际验证的路。&lt;/p&gt;
&lt;p&gt;团队要在自己的代码语言、仓库规模、工具链和测试环境里看看它的表现。长任务失败时会不会反复尝试，上下文拉长以后质量是否稳定，与现有 CLI、IDE 或网关的兼容性够不够，真实任务成本有没有下降，这些问题只有跑过才知道。&lt;/p&gt;
&lt;p&gt;官方 benchmark 可以说明厂商在优化什么，选型还得由团队自己完成。&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;DeepSeek V4-Flash 的正式版没有终结最强模型之争。不同能力、不同价格的模型都能写代码、调用工具、跑长任务以后，团队得回答一个更日常的问题，每一步该交给谁。&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;ul&gt;
&lt;li&gt;DeepSeek 官方 V4 规格图，来源：&lt;a class=&#34;link&#34; href=&#34;https://api-docs.deepseek.com/news/news260424/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DeepSeek V4 Preview Release&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;DeepSeek 官方 V4-Flash 基准图，来源：&lt;a class=&#34;link&#34; href=&#34;https://api-docs.deepseek.com/news/news260424/#deepseek-v4-flash&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DeepSeek V4 Preview Release&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://api-docs.deepseek.com/updates/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DeepSeek API Change Log 2026-07-31 DeepSeek-V4-Flash Update&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://api-docs.deepseek.com/news/news260424/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DeepSeek V4 Preview 发布说明&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://kjj.wuhan.gov.cn/xwzx_8/kjspxw/202608/t20260811_2832052.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;武汉科技创新局关于国产大模型 DeepSeek 调用量的转载报道&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://opencode.ai/zh/data/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenCode 模型使用数据&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://arxiv.org/html/2605.18747v1&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Code as Agent Harness 论文&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.jetbrains.com/pages/ai-agents/architecture/agentic-workflows/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;JetBrains Agentic Workflows 指南&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上来源用于核对 DeepSeek 的发布口径、公开基准和调用量观察。官方成绩、媒体转述的调用量变化，以及文中关于任务路由的工程分析，属于不同证据层级。文中的路由方法也不构成对任何单一模型性能的背书。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Agent 的记忆不该只剩摘要：Semantica 为什么把决策做成可追责的图</title>
        <link>https://blog.ccino.org/p/agent-decision-accountability-graph-2026/</link>
        <pubDate>Tue, 11 Aug 2026 08:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/agent-decision-accountability-graph-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/agent-decision-accountability-graph-2026/imgs/cover.png" alt="Featured image of post Agent 的记忆不该只剩摘要：Semantica 为什么把决策做成可追责的图" /&gt;&lt;p&gt;最近 GitHub Trending 里有个叫 &lt;a class=&#34;link&#34; href=&#34;https://github.com/semantica-agi/semantica&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Semantica&lt;/a&gt; 的项目，仓库主页把自己称为“面向上下文和可问责 AI 系统的图原生基础设施”。这个说法挺大，里面既有知识图谱、来源追踪，也有本体、规则推理、冲突检测和审计导出。光看 README，容易把它归到又一个 GraphRAG 项目里。&lt;/p&gt;
&lt;p&gt;我觉得它瞄准的，是 Agent 进入工作流后会越来越常见的一类问题。&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;Semantica 想补的，正是这一块。&lt;/p&gt;
&lt;h2 id=&#34;能找回内容不等于能解释决定&#34;&gt;能找回内容，不等于能解释决定
&lt;/h2&gt;&lt;p&gt;先把一个容易混淆的概念分开。&lt;/p&gt;
&lt;p&gt;向量检索和 RAG（检索增强生成）解决的是“现在有什么材料和眼前问题相近”。用户问某个项目的部署方式，系统从文档、工单或历史对话里找出相似片段，模型据此回答。这套做法很有用，很多 Agent 的长期记忆也靠它起步。&lt;/p&gt;
&lt;p&gt;可相似内容只是一次判断的输入之一。&lt;/p&gt;
&lt;p&gt;拿一个编程 Agent 举例。它准备执行 &lt;code&gt;git push&lt;/code&gt;，表面上只是一条命令。团队真正关心的却是一段任务历史。它是否一直在用户指定的仓库里工作，是否读取过 &lt;code&gt;.env&lt;/code&gt; 或客户资料，提交的文件从哪里来，是否经过测试，推送目标是不是受控仓库。&lt;/p&gt;
&lt;p&gt;向量库可以找回“仓库发布规范”或“不要泄露凭据”这两段文本，却不天然保存这次 push 和前面那些事实之间的关系。它也不会自动留下一张能供人复盘的图，说明“读取受限文件”如何让“外部推送”从普通动作变成需要确认的动作。&lt;/p&gt;
&lt;p&gt;这就是记忆和决策证据分家的地方。&lt;/p&gt;
&lt;p&gt;前者服务于 Agent 当下工作。它把相关信息找回来，让模型少忘东西。后者服务于人和系统之后的追问。它要保留这次判断碰过什么事实，受过什么规则约束，最后造成了什么后果。&lt;/p&gt;
&lt;p&gt;两类能力可以放在同一个系统里，职责却不同。把它们都叫做 memory，反而会掩盖工程上的缺口。&lt;/p&gt;
&lt;h2 id=&#34;一条日志通常不够用&#34;&gt;一条日志通常不够用
&lt;/h2&gt;&lt;p&gt;日志当然重要。没有日志，连 Agent 调了什么工具、改了哪些文件都很难说清。&lt;/p&gt;
&lt;p&gt;问题是大部分日志更像流水账。它能告诉你 10 点 31 分调用了某个工具，10 点 32 分写入了一个文件，10 点 33 分发起了网络请求。它不擅长回答这些动作背后的关系。&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;这也是为什么不少团队在 Agent 出问题后会陷入一个很熟悉的循环。有人翻聊天记录，有人看终端输出，有人检查 git diff。最后大家大概知道“它做错了”，但说不清它在第几个判断点偏离了，也无法把这个判断点变成下一次任务的固定检查。&lt;/p&gt;
&lt;p&gt;事件多了以后，日志会越来越长，解释反而越来越短。&lt;/p&gt;
&lt;h2 id=&#34;semantica-想保存的是一次判断的来路&#34;&gt;Semantica 想保存的，是一次判断的来路
&lt;/h2&gt;&lt;p&gt;按照 Semantica README 的描述，它把实体、事实、关系和决策都放进 Context Graph（上下文图）里。项目提供的 &lt;code&gt;record_decision()&lt;/code&gt; 接口会把一次决策作为结构化节点保存，再通过因果关系把它同上游依据和下游影响连接起来。项目方还提供 &lt;code&gt;trace_decision_chain()&lt;/code&gt; 这类查询，用于回溯一项决策的因果链。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/agent-decision-accountability-graph-2026/imgs/retrieval-vs-decision-evidence.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/agent-decision-accountability-graph-2026/imgs/retrieval-vs-decision-evidence_hu_e7a200d2bb9343ec.png 480w, https://blog.ccino.org/p/agent-decision-accountability-graph-2026/imgs/retrieval-vs-decision-evidence_hu_2e1acac80aa7f751.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;它在 README 里举的是高风险业务案例，比如贷款审批和药物相互作用检查。这里不妨把它缩小到更日常的 Agent 场景。&lt;/p&gt;
&lt;p&gt;一个文档整理 Agent 收到任务，先记录用户要求和允许访问的目录。它读到一份标记为内部的文件，又从一份公开网页抽取了补充信息。之后它生成摘要，尝试发邮件给外部联系人。系统如果只记录“发送邮件”，留给人的只有一个动作。&lt;/p&gt;
&lt;p&gt;如果把判断过程记录下来，邮件节点可以关联到任务目标、读取过的材料、内部数据标签、收件人所属域名、触发的策略，以及用户有没有最终确认。后来发现摘要泄露信息时，团队不用从全量日志里猜。它可以沿着邮件这个节点向前找，看到哪份输入把风险带进来，也能向后看同一份摘要是否又被上传、归档或复用。&lt;/p&gt;
&lt;p&gt;这就是项目所说的 provenance（来源追踪）和 decision record（决策记录）在 Agent 里的实际含义。它们把原本散落在消息、工具和数据库里的事实，组织成可以提问的对象。&lt;/p&gt;
&lt;p&gt;Semantica 还强调其图构建、规则推理和来源层可以在不调用 LLM 的情况下运行，并支持 W3C PROV-O 导出。这个定位对金融、医疗、法律等需要审计的业务尤其有吸引力。项目是否能在复杂生产环境里兑现这些承诺，需要使用者自己验证；README 能证明的是它已经把“决策记录和来源关系”当成产品中心，而不只是附在向量检索后面的功能。&lt;/p&gt;
&lt;p&gt;官方 README 的 &lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=QfnNZg4-dZA&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Knowledge Explorer 演示&lt;/a&gt; 展示了图谱浏览、决策节点和实体关系如何放在同一个界面里。它是产品演示，不是性能测试，适合把它当作理解这套数据组织方式的参考。&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;一个只读的问答机器人，能访问的资料很少，也不会调用外部工具，向量检索加普通日志往往就足够。一个一次性的数据清洗脚本，输入和输出都在受控目录里，留好版本记录和执行日志也比引入整套图层更划算。&lt;/p&gt;
&lt;p&gt;图结构真正有价值的地方，出现在任务会跨多个来源、多个工具和多个时间点，且一次判断会影响后续权限、数据流向或业务结果的时候。&lt;/p&gt;
&lt;p&gt;例如，Agent 会根据合同、CRM、网页和邮件共同决定是否外发报价；或者多名 Agent 共享客户上下文，又需要知道哪条规则在什么时候覆盖过旧规则。到了这种程度，团队需要的就不只是“搜到一段相关文本”，还需要知道这段文本被谁用过，如何影响了某个动作，以及新事实出现后哪些旧决定需要重审。&lt;/p&gt;
&lt;p&gt;这时，决策图才有机会比一堆拼接式日志更省事。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/agent-decision-accountability-graph-2026/imgs/semantica-agent-context-flow.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Semantica 官方 Agent Context Flow&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;上图来自 Semantica 的官方架构素材，展示的是项目设计里的 Agent 上下文流，不表示任何通用实现都必须采用同一套组件。&lt;/p&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/agent-decision-accountability-graph-2026/imgs/high-risk-operation-record.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/agent-decision-accountability-graph-2026/imgs/high-risk-operation-record_hu_95e5f087b07bfbd3.png 480w, https://blog.ccino.org/p/agent-decision-accountability-graph-2026/imgs/high-risk-operation-record_hu_ce9ca5643d0fe2e2.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;小团队记录 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;如果团队正在做会写文件、发消息、改代码或调用业务 API 的 Agent，可以先为高影响操作补齐一小份记录。记录用户最初授权它做什么，允许在哪个目录、项目或系统里活动。记录这个动作参考了哪些文件、网页、工单、规则或人工指令。再把它为什么准备执行、命中了哪条策略、是否经过用户确认，以及调用是否成功、改了什么、哪些后续任务又引用了结果，一并留下来。&lt;/p&gt;
&lt;p&gt;这四类信息的价值很朴素。任务出问题时，团队能把一次动作还原为一串事实，而不是只看到模型最后的自然语言解释。后来发现某类错误反复出现，也能把它们聚到同一种判断上，改规则、补测试或收紧权限。&lt;/p&gt;
&lt;p&gt;存储形式可以先很简单。数据库里的关联表、带 ID 的 JSON 事件、任务目录里的结构化 Markdown 都可以。关键在于每个高风险动作都能回到依据和后果，而不是每个模块都必须换成图数据库。&lt;/p&gt;
&lt;p&gt;有些团队做到这一步就够了。只有当跨任务、跨系统的关系开始多到手工关联很困难时，再考虑引入 Semantica 这类完整的图基础设施，会更稳一些。&lt;/p&gt;
&lt;h2 id=&#34;记忆负责找资料证据负责回答问题&#34;&gt;记忆负责找资料，证据负责回答问题
&lt;/h2&gt;&lt;p&gt;Agent 的记忆当然还要继续做。没有检索和摘要，它每次任务都得重新翻项目资料，合作体验很快就会变差。&lt;/p&gt;
&lt;p&gt;不过，随着 Agent 获得更多工具和权限，记忆系统会同时承担两种工作。一种是把相关信息带回当前上下文，帮助它推进任务。另一种是保留足以让人复盘的判断依据，帮助团队知道它为什么这样做。&lt;/p&gt;
&lt;p&gt;前一种关心相关性和速度，后一种关心来源、版本、规则和后果。两者偶尔会共用同一份数据，但不能互相代替。&lt;/p&gt;
&lt;p&gt;Semantica 的价值还谈不上已经被生产环境验证。它至少提醒了一件容易被忽略的事。团队给 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/semantica-agi/semantica&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Semantica GitHub README&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/semantica-agi/semantica/blob/main/ARCHITECTURE.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Semantica Architecture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=QfnNZg4-dZA&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Semantica Knowledge Explorer 演示&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.w3.org/TR/prov-o/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;W3C PROV-O 文档&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上来源主要用于说明 Semantica 的公开设计和来源追踪标准。项目仓库中的功能说明属于项目方口径，本文不将其等同于独立性能或生产效果验证。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>给 AI 编程 Agent 加一张可逆性验收表</title>
        <link>https://blog.ccino.org/p/ai-agent-reversibility-acceptance-2026/</link>
        <pubDate>Mon, 10 Aug 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/ai-agent-reversibility-acceptance-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/ai-agent-reversibility-acceptance-2026/imgs/cover.png" alt="Featured image of post 给 AI 编程 Agent 加一张可逆性验收表" /&gt;&lt;p&gt;最近 r/ClaudeCode 有一篇帖子，标题叫 &lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/ClaudeCode/comments/1vg18yu/claude_rm_rf_ed_my_pc/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude rm -rf ed my pc&lt;/a&gt;。发帖者讲了一次高后果命令带来的麻烦，帖子有两千多赞、四百多条评论。评论区里还有人顺着聊隔离会话、真实仓库和工作目录的边界。&lt;/p&gt;
&lt;p&gt;这类帖子只能说明开发者在担心什么。截图没有给出完整环境，命令前后做过什么、权限如何配置、机器后来怎样处理，外人都很难核实。把它当成某个产品已经坐实的漏洞，走得太远了。&lt;/p&gt;
&lt;p&gt;我读下来更在意另一件事。大家真正怕的，往往不是某条命令本身。Agent 开始改文件、跑迁移、清理资源、触发部署以后，一次错误会把后面的动作一起带偏。人到最后才发现问题，面对的经常是一份很长的 diff、一批被覆盖的配置，或者一个说不清从哪步开始不对的环境。&lt;/p&gt;
&lt;p&gt;确认框能拦住一条命令，却管不住这件事。&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;人自己在终端里工作，通常知道刚刚改过什么。Agent 的路径更长。它读配置，改文件，运行脚本，看报错，再继续尝试。单看每一步，理由可能都说得通。几轮积累下来，最早那批改动已经很难单独拿出来判断。&lt;/p&gt;
&lt;p&gt;“清理测试环境”就是常见例子。它先删临时文件，发现磁盘占用没有明显下降，接着去找部署脚本，又发现里面留着一段旧清理逻辑。到这里，任务已经从删几个目录，变成了处理一套自己也不完全了解的环境。&lt;/p&gt;
&lt;p&gt;这种时候，盯着 &lt;code&gt;rm&lt;/code&gt;、&lt;code&gt;drop&lt;/code&gt;、&lt;code&gt;delete&lt;/code&gt; 之类的字眼不够。真正决定风险的是对象在哪里，是否有人正在用，改完以后有没有版本可找，回退时能不能把系统带回可用状态。&lt;/p&gt;
&lt;p&gt;删除一个专门为任务创建的 worktree，后果有限。覆盖共享环境的一段配置，即使没有出现删除命令，也可能让后续排查很难受。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/ai-agent-reversibility-acceptance-2026/imgs/reversibility-boundaries.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/ai-agent-reversibility-acceptance-2026/imgs/reversibility-boundaries_hu_265ddbc44d829c0a.png 480w, https://blog.ccino.org/p/ai-agent-reversibility-acceptance-2026/imgs/reversibility-boundaries_hu_b1c1bb2b3de1f126.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;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;先把动作放到合适的地方&#34;&gt;先把动作放到合适的地方
&lt;/h2&gt;&lt;p&gt;日常任务不该处处弹窗。搜索代码、读取日志、查看配置，本来就应该顺畅。Agent 在独立分支里改几个文件，通常也可以放得宽一些，因为改动还在 Git 能处理的范围内。&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;有一篇文章写过 Claude Code 的分支和 worktree 工作流。这里再提它，不是为了推销某个 Git 技巧。独立分支让一次尝试留在它该待的地方。试错可以继续，主工作区不用陪着一起变乱。&lt;/p&gt;
&lt;h2 id=&#34;高后果操作前留四样东西&#34;&gt;高后果操作前，留四样东西
&lt;/h2&gt;&lt;p&gt;第一样是快照。&lt;/p&gt;
&lt;p&gt;它可以是一条 Git commit、一个数据库备份、一份配置副本，也可以是部署前导出的状态。形式随项目而定，关键在于后来的人能找到它。只写“已备份”没有多少帮助。过几天再看，谁也不知道它备的是哪个环境，能不能恢复。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;任务：更新 staging 的 feature flag 配置
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;快照：config-snapshot-2026-08-10-0930
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;范围：staging / payment-service
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;恢复：restore-config config-snapshot-2026-08-10-0930
&lt;/span&gt;&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;p&gt;范围最好能落到路径、服务、环境、账户、区域或资源 ID。任务说“清掉旧资源”时，Agent 很难判断哪些资源算旧。换成“只处理 staging 账户里带有 &lt;code&gt;temp-build&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;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;回滚目标：恢复 payment-service 的上一版镜像
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;执行入口：deploy rollback payment-service --environment staging
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#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;/p&gt;
&lt;p&gt;备份文件放在那里，回滚命令也写好了，人很容易觉得万事俱备。可恢复路径会过期。权限收紧、密钥更换、备份格式升级，都可能让那条命令到需要时失效。&lt;/p&gt;
&lt;p&gt;小团队不必每周做完整灾备演练。新迁移脚本可以在测试数据上跑一次上行和下行。新增清理任务可以先挑十个样本 dry-run，记录它准备删什么。生产发布前，也可以先在 staging 走一遍撤回流程。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/ai-agent-reversibility-acceptance-2026/imgs/four-safeguards.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/ai-agent-reversibility-acceptance-2026/imgs/four-safeguards_hu_ef7d95ab423416c5.png 480w, https://blog.ccino.org/p/ai-agent-reversibility-acceptance-2026/imgs/four-safeguards_hu_a9e7b6a34f37dec2.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;演练记录给后来的人留下一条证据。这条恢复路径至少在相近条件下走通过。&lt;/p&gt;
&lt;h2 id=&#34;让-agent-先把话说明白&#34;&gt;让 Agent 先把话说明白
&lt;/h2&gt;&lt;p&gt;下面这段可以放进任务说明、项目规则，或者 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-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; 涉及共享资源、数据覆盖、删除、外部发送或部署前，先创建可定位的快照。
&lt;/span&gt;&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; 临时试验优先放在独立分支、worktree 或隔离环境。
&lt;/span&gt;&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;这段文字让几个常被省略的问题提前出现。范围说不清，Agent 应该停下来。没有快照，它不该把高后果动作当成普通编辑。回滚没有验过，团队就该承认这件事还没准备好。&lt;/p&gt;
&lt;p&gt;规则是否让 Agent 变慢，取决于规则放在哪里。每个文件改动都要求确认，人很快就不看提示了。把确认留给共享资源、外部动作和不可逆状态，日常编码通常不会多出太多阻力。临时分支、dry-run 和目标清单反而会让任务更好推进，因为 Agent 不必猜自己能走到哪一步。&lt;/p&gt;
&lt;h2 id=&#34;这几道防线各有位置&#34;&gt;这几道防线各有位置
&lt;/h2&gt;&lt;p&gt;权限确认处理谁有资格执行。Prompt Injection（提示词注入）处理 Agent 读到的外部文本能不能影响它的判断。事故复盘处理出错以后怎样还原经过、查找原因，再把教训写回流程。&lt;/p&gt;
&lt;p&gt;可逆性验收放在执行前。它默认人会看错，模型也会判断错，所以先收紧一次失误能造成的损失，再准备好回来要走的路。&lt;/p&gt;
&lt;p&gt;Agent 负责执行，权限系统决定它能不能碰某个动作，可逆性验收要求团队在放行前准备范围、快照、回滚和恢复证据。下次让 Agent 跑迁移、批量改配置或清理资源时，可以先让它把这些内容写出来。看完再决定是否执行。很多问题到这里就已经暴露了，任务也有机会换成更安全的做法。&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/ClaudeCode/comments/1vg18yu/claude_rm_rf_ed_my_pc/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;r/ClaudeCode 社区讨论&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=7WI-U2ltJN4&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;build in quiet 关于隔离 Claude Code 会话与真实仓库的讨论视频&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.bestblogs.dev/en/article/62f914db45&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;BestBlogs 收录的 SQLite 文本历史压缩原型&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://blog.ccino.org/p/claude-code-prompt-injection-ai-agent-security-2026/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Code 安全文章&lt;/a&gt; 讨论评论区 Prompt Injection 如何进入 AI Agent 的执行链&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.ccino.org/p/claude-code-branch-workflow-secrets-2026/&#34; &gt;Meta工程师的 Claude Code 分支工作流&lt;/a&gt; 了解分支与 worktree 如何隔离试验性改动&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openchamber.dev/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenChamber&lt;/a&gt; 一个以 Agent 为中心的开发环境，可作为可观察性工作流的参考&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上社区帖子和视频用于观察开发者的担忧与实践方向，不构成对特定产品缺陷或事故细节的独立验证。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Meta 把 Muse Code 推进终端后，AI 编程开始抢开发者的工作台</title>
        <link>https://blog.ccino.org/p/meta-muse-code-coding-agent-2026/</link>
        <pubDate>Fri, 07 Aug 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/meta-muse-code-coding-agent-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/meta-muse-code-coding-agent-2026/imgs/cover.png" alt="Featured image of post Meta 把 Muse Code 推进终端后，AI 编程开始抢开发者的工作台" /&gt;&lt;p&gt;8 月 6 日，科技媒体和开发者社区开始讨论 Meta 的 Muse Code。它被描述成一款面向终端的编程智能体，配合 Muse Spark 的代码模型，试图处理大代码库里的修改、执行和验证。&lt;/p&gt;
&lt;p&gt;这条消息目前能拿到的公开材料并不完整。The Verge 的报道页面受访问限制，X 上的传播和 YouTube 解读也都属于二手信息。关于产品能力、价格、MCP 兼容和 benchmark，Meta 还需要给出能逐项核对的说明。因此，这篇文章不把这些转述当成定论，只借它讨论一件更确定的事。&lt;/p&gt;
&lt;p&gt;模型公司正在把手伸进开发者终端。&lt;/p&gt;
&lt;p&gt;4 月的 Muse Spark，谈的是 Meta 有了一张新的模型牌。到了 Muse Code，焦点落在另一处。模型被塞进了什么样的工作台，能读多大的仓库，遇到失败后怎么继续，最后交到人手里的到底是一段代码，还是一个经过验证的改动。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/meta-muse-code-coding-agent-2026/imgs/meta-muse-spark-official.png&#34;
	width=&#34;2880&#34;
	height=&#34;1620&#34;
	srcset=&#34;https://blog.ccino.org/p/meta-muse-code-coding-agent-2026/imgs/meta-muse-spark-official_hu_c84e9a343d994a87.png 480w, https://blog.ccino.org/p/meta-muse-code-coding-agent-2026/imgs/meta-muse-spark-official_hu_81d818a7c2191e5b.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Meta 官方发布的 Muse Spark 1.1 视觉图&#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;em&gt;图源：&lt;a class=&#34;link&#34; href=&#34;https://ai.meta.com/blog/introducing-muse-spark-meta-model-api/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Meta AI，Introducing Muse Spark 1.1&lt;/a&gt;。&lt;/em&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;但模型能力到了能处理大部分日常编码任务的阶段，开发者遇到的麻烦会很快往后挪。一个人让工具生成页面、补接口、改一处逻辑，甚至跑掉一批测试，已经不算稀奇。真正花时间的部分，常常出现在生成之后。&lt;/p&gt;
&lt;p&gt;它改的是不是正确位置。它有没有顺手绕过已有抽象。测试绿了，是因为行为真的对，还是因为测试刚好跟着实现写。它为了修一个小问题新引入的依赖、配置和状态分支，三个月后谁来收拾。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/meta-muse-code-coding-agent-2026/imgs/coding-agent-workflow.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/meta-muse-code-coding-agent-2026/imgs/coding-agent-workflow_hu_5d292464197b731c.png 480w, https://blog.ccino.org/p/meta-muse-code-coding-agent-2026/imgs/coding-agent-workflow_hu_d99151828d97c23.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;我前面写过 AI 生成 PR 的审查问题。当代码产出变快，最先堵住团队的经常是 review。reviewer 看到一大段规整的 diff，未必马上能看出哪里有问题。AI 写的代码往往比人类临时赶工的代码更像样，函数拆得开，错误处理也有，测试文件甚至一应俱全。可它背后的判断有没有人做过，仍然需要追问。&lt;/p&gt;
&lt;p&gt;Muse Code 这类产品把需求、仓库、终端、测试和交付结果收进同一个入口。产品最终卖给开发者的，是一段可以委派出去的工作。&lt;/p&gt;
&lt;p&gt;这也是为什么终端正在重新变得重要。&lt;/p&gt;
&lt;p&gt;IDE 里的补全，主要帮你把眼前这一小块写快。终端型编程智能体要面对的是整个项目。它得在文件之间来回找线索，执行命令，读取失败日志，再回头改代码。它还得知道什么时候该停下，因为有些任务跑完测试并不代表已经完成，有些任务根本不应该自己碰生产配置。&lt;/p&gt;
&lt;p&gt;这时，模型只是其中一部分。&lt;/p&gt;
&lt;h2 id=&#34;编程智能体比代码补全难在哪&#34;&gt;编程智能体比代码补全难在哪
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;coding agent&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;p&gt;仓库理解不够，它会改到看似相关、实际不该动的地方。任务拆得粗糙，它会用一大坨改动掩盖真正的问题。测试不够贴近业务，它能把 CI 跑绿，却没覆盖线上最危险的分支。权限给得太宽，它可能为了“把任务完成”而读取不该读的文件，或者执行不该执行的命令。&lt;/p&gt;
&lt;p&gt;所以一款编程智能体好不好，不能只看它在 benchmark 上修了多少题。至少还得看几件很不浪漫的事。&lt;/p&gt;
&lt;p&gt;它有没有把任务范围说清楚。它改完后能不能提供让人复查的证据。它碰到失败时，是无限换命令硬撞，还是能停下来说明卡在哪里。它在涉及凭据、网络和生产环境时，是否会把决定权留给人。&lt;/p&gt;
&lt;p&gt;这些听起来像产品细节，实际上决定了工具能否成为日常工作的一部分。&lt;/p&gt;
&lt;p&gt;一个模型写出 80 分代码，开发者还能接着改。一个 agent 以很快的速度制造 20 个看起来都像 80 分、实际各有隐患的 PR，团队很快就会不敢再开自动模式。&lt;/p&gt;
&lt;h2 id=&#34;meta-想进入的是已经很拥挤的位置&#34;&gt;Meta 想进入的，是已经很拥挤的位置
&lt;/h2&gt;&lt;p&gt;Claude Code、Codex、Cursor 这些产品，早就把开发者对 AI 编程的期待抬高了。大家不再满足于聊天框里贴一段代码。更常见的需求是，把一个任务交出去，看它在本地仓库里推进，然后决定是否接受结果。&lt;/p&gt;
&lt;p&gt;这块位置很拥挤，也很难靠一句“模型更强”就拿下来。&lt;/p&gt;
&lt;p&gt;Claude Code 让不少开发者习惯了在终端里把任务交给 agent。Codex 一直在把模型能力往代码工作流、审查和组织协作里延伸。Cursor 的优势则来自 IDE 里已经形成的使用习惯。它们争的并不完全相同，但都在争同一个时刻。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/meta-muse-code-coding-agent-2026/imgs/anthropic-making-claude-code.gif&#34;
	width=&#34;1200&#34;
	height=&#34;630&#34;
	srcset=&#34;https://blog.ccino.org/p/meta-muse-code-coding-agent-2026/imgs/anthropic-making-claude-code_hu_210d52abb7112947.gif 480w, https://blog.ccino.org/p/meta-muse-code-coding-agent-2026/imgs/anthropic-making-claude-code_hu_f1b5a63e08260bcd.gif 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Anthropic 官方《The Making of Claude Code》专题的终端式视觉封面&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;190&#34;
		data-flex-basis=&#34;457px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;图源：&lt;a class=&#34;link&#34; href=&#34;https://www.anthropic.com/features/making-of-claude-code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic，The Making of Claude Code&lt;/a&gt;。&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;开发者什么时候愿意放下键盘，让工具先跑一段。&lt;/p&gt;
&lt;p&gt;这个时刻看似很小，实际决定了产品会不会成为入口。工具如果只能偶尔帮你补代码，用户会把它当成一个功能。如果它能稳定地接住仓库理解、执行、验证和回滚前的检查，用户会把它当成工作台的一部分。后者一旦形成习惯，迁移成本就高得多。&lt;/p&gt;
&lt;p&gt;Meta 的机会也在这里。它不需要说服所有人放弃现有工具。它只要在某些任务上做出更顺手的体验，比如更低的成本、更长的上下文、更适合后台推进的任务方式，或者和自己的模型服务连接得更紧，就可能拿到一部分开发者时间。&lt;/p&gt;
&lt;p&gt;但这条路的难点也很明确。开发者不会因为又多了一个模型名，就把真实仓库交出去。一个新 agent 想被长期使用，得经得起几个很实际的问题。&lt;/p&gt;
&lt;p&gt;它怎样处理私有代码。任务跑到一半时，我能不能看懂它做了什么。它改错了，能不能方便地撤回。它要访问网络、凭据或系统设置时，谁来批准。它写出的结果进入团队流程后，reviewer 能不能快速找到关键改动。&lt;/p&gt;
&lt;p&gt;这些问题没有一个能靠发布会讲稿解决。&lt;/p&gt;
&lt;h2 id=&#34;真正的分水岭是能不能把结果交出来&#34;&gt;真正的分水岭，是能不能把结果交出来
&lt;/h2&gt;&lt;p&gt;这几年 AI 编程产品的演示越来越好看。给一句需求，几分钟后，一个能点的页面、一套接口、一个能跑的 demo 就摆在你面前。第一次看，确实会觉得很多旧工作方式要被掀翻。&lt;/p&gt;
&lt;p&gt;可做过项目的人都知道，demo 距离交付还有一段路。&lt;/p&gt;
&lt;p&gt;一个功能要进入正式仓库，得经过需求边界、代码审查、测试、部署和后续维护。每一关都有人在承担风险。AI 把前面的实现阶段压缩得很快，后面的责任却没有消失。它们只是更集中地落在提交者、reviewer 和维护者身上。&lt;/p&gt;
&lt;p&gt;我最在意的，是 Muse Code 能不能把一次工作做得足够可检查。&lt;/p&gt;
&lt;p&gt;可检查，首先意味着它要把自己做过什么说清楚。改了哪些文件，为什么改，测试跑了什么，哪些地方没有把握。这些不需要写成一篇长报告，但至少不能让人面对一片 diff 反向猜意图。&lt;/p&gt;
&lt;p&gt;可检查，也意味着它要接受约束。一个智能体知道自己没有权限的时候停下来，比它为了完成任务去找替代路径更让人放心。对于个人项目，错误可能只是弄乱工作区。对于团队仓库、公司设备和生产系统，代价会大得多。&lt;/p&gt;
&lt;p&gt;Sophos 7 月发布的端点遥测分析已经把这个问题摆在台面上。报告没有说 Claude Code、Cursor 或 Codex 本身就是恶意工具。它记录的是另一件事。编程智能体为了安装环境、调用浏览器或处理失败，会做出一些与攻击链相似的系统动作，例如访问凭据、拉起子进程、换一种系统工具继续下载。安全系统看见的是行为，不会因为发起者叫 AI 就自动放行。&lt;/p&gt;
&lt;p&gt;这给新产品提了一个很具体的要求。执行能力越强，权限、记录和审批越不能只停在说明页里。它们得出现在用户真正使用工具的路径上。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/meta-muse-code-coding-agent-2026/imgs/sophos-agent-telemetry-activity-tree.png&#34;
	width=&#34;769&#34;
	height=&#34;677&#34;
	srcset=&#34;https://blog.ccino.org/p/meta-muse-code-coding-agent-2026/imgs/sophos-agent-telemetry-activity-tree_hu_20bde1f34c6844ce.png 480w, https://blog.ccino.org/p/meta-muse-code-coding-agent-2026/imgs/sophos-agent-telemetry-activity-tree_hu_4bc911c2db7e7cb6.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Sophos 对 AI agent 调用链中命令与工具活动的官方遥测示意&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;113&#34;
		data-flex-basis=&#34;272px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;图源：&lt;a class=&#34;link&#34; href=&#34;https://www.sophos.com/en-us/blog/2607_agents_vs_telemetry&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Sophos X-Ops，When AI agents look like attackers&lt;/a&gt;。&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/meta-muse-code-coding-agent-2026/imgs/agent-safety-boundaries.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/meta-muse-code-coding-agent-2026/imgs/agent-safety-boundaries_hu_e8af41ad44c158f8.png 480w, https://blog.ccino.org/p/meta-muse-code-coding-agent-2026/imgs/agent-safety-boundaries_hu_a34aff271189c3bc.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;开发者该怎么试新-agent&#34;&gt;开发者该怎么试新 agent
&lt;/h2&gt;&lt;p&gt;新工具当然值得试。很多工作流就是在真实项目里才知道合不合适。&lt;/p&gt;
&lt;p&gt;但一开始别把它放在最容易出事的地方。&lt;/p&gt;
&lt;p&gt;可以从一个边界清楚、结果容易验证的任务开始。比如补一个独立页面，修一个有明确复现步骤的 bug，整理一组测试，或者做一处可回滚的小重构。让它先在单独分支或临时工作区里跑。任务完成后，不要只看“测试通过”，还要看它改了哪些文件，有没有新增不必要的依赖，有没有把原本简单的逻辑绕复杂。&lt;/p&gt;
&lt;p&gt;涉及密钥、线上数据、浏览器 Profile、部署配置和生产环境时，先把权限收紧。工具需要什么，再单独给什么。它真的卡住了，让它报错，比让它自己想办法绕过去更好。&lt;/p&gt;
&lt;p&gt;团队里更该把这一步说清楚。AI 参与的 PR 可以不用贴上夸张标签，但提交者最好能说明任务边界、核心改动和已经做过的验证。这样 reviewer 才知道应该把注意力放在哪里。否则模型节省下来的编码时间，很容易全部还给后面的审查和排障。&lt;/p&gt;
&lt;h2 id=&#34;终端只是入口工程判断还在人手里&#34;&gt;终端只是入口，工程判断还在人手里
&lt;/h2&gt;&lt;p&gt;Muse Code 是否会成为 Meta 的下一张产品牌，现在还太早。公开信息不够完整，外部讨论里那些关于性能、价格和兼容性的说法，也都需要等官方材料出来后再逐条核验。&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;所以，终端里的 agent 不会把工程师变成“点接受的人”。它更可能把工程师往前推一步。少花一点时间机械地写，更多时间定义任务、检查结果、守住边界。&lt;/p&gt;
&lt;p&gt;Meta 进入这条赛道后，开发者面对的选择会更多。真正值得比较的，也会慢慢从“谁写得更像人”，变成“谁能在真实工程里，让人放心地把一段工作交出去”。&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.theverge.com/2026/8/6/meta-muse-code-ai-coding-agent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;The Verge：Meta Muse Code 报道&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/NewsTongueX/status/2085200996179882132&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;X：关于 Muse Code 的社区转述&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=g1wXyiVmyeg&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;YouTube：Muse Spark 1.2 与 Meta 编程模型解读&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.sophos.com/en-us/blog/2607_agents_vs_telemetry&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Sophos X-Ops：When AI agents look like attackers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.anthropic.com/features/making-of-claude-code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic：The Making of Claude Code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上来源用于观察产品发布口径、社区传播和编程智能体的运行风险。关于 Muse Code 的具体产品能力、价格、性能和兼容性，应以 Meta 后续公开的官方资料为准，不能把媒体转述或社区讨论当作独立基准测试。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>每个 Agent 一台“电脑”还不够：Cloudflare Computer 真正要统一的是 Workspace</title>
        <link>https://blog.ccino.org/p/cloudflare-computer-workspace-runtime-2026/</link>
        <pubDate>Thu, 06 Aug 2026 08:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/cloudflare-computer-workspace-runtime-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/cloudflare-computer-workspace-runtime-2026/imgs/cover.png" alt="Featured image of post 每个 Agent 一台“电脑”还不够：Cloudflare Computer 真正要统一的是 Workspace" /&gt;&lt;p&gt;“给每个 Agent 一台电脑”很容易让人点头。Agent 有 shell，有文件系统，有网络，再给它一个单独的环境，事情似乎就齐了。&lt;/p&gt;
&lt;p&gt;我看完 &lt;a class=&#34;link&#34; href=&#34;https://github.com/cloudflare/computer&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Cloudflare Computer&lt;/a&gt; 的 README，觉得它有意思的地方在另一处。Agent 跑一次命令不难，难的是它跑到第三步、第五步，甚至换了执行环境以后，前面留下的文件、日志和产物还找不找得到。&lt;/p&gt;
&lt;p&gt;举个 README 里能对应上的场景。一个任务先写好 Markdown，后来要调用 &lt;code&gt;pandoc&lt;/code&gt; 生成 PDF。前半段可能在 Worker 里完成，后半段需要进有完整 Linux 用户空间的容器。文件若跟着前一个执行环境放，后面就要拷贝、同步、挂载。任务再失败一次，系统还得回头确认那份文件最后在哪儿。&lt;/p&gt;
&lt;p&gt;Cloudflare Computer 把这件事单独拎了出来。它先给任务留一个 Workspace（工作区），再让容器、Worker Shell 和 Worker JavaScript 按各自的能力接入。执行环境可以换，工作目录还在原处。&lt;/p&gt;
&lt;p&gt;这篇文章只根据项目的 GitHub README 和公开示例来讲。该项目明确写着 &lt;strong&gt;PREVIEW ONLY&lt;/strong&gt;，目前适合实验和原型，不能直接当作生产方案使用。接口和设计都有变化的可能，下面谈的是它已经公开的做法，不是对安全性或性能的背书。&lt;/p&gt;
&lt;h2 id=&#34;容器停了任务留下什么&#34;&gt;容器停了，任务留下什么
&lt;/h2&gt;&lt;p&gt;容器很适合给 Agent 干活。它能装依赖、跑编译器、执行测试，也能把不同任务隔开。碰到浏览器自动化、原生二进制、复杂语言工具链，容器通常绕不过去。&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;Workspace 保存这个任务处理过的文件和产物&lt;/li&gt;
&lt;li&gt;调度程序根据当前步骤选择合适的后端&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这三个东西分开以后，任务从轻量 Worker 转到容器时，换的是执行能力，原来的目录不用搬家。&lt;/p&gt;
&lt;h2 id=&#34;cloudflare-把文件系统放进-durable-object&#34;&gt;Cloudflare 把文件系统放进 Durable Object
&lt;/h2&gt;&lt;p&gt;README 对 Cloudflare Computer 的描述很直接。它是一个运行在 Durable Object（持久对象）中的虚拟文件系统，权威状态放在 SQLite 里。&lt;/p&gt;
&lt;p&gt;Workspace 先提供文件系统。执行后端挂在 &lt;code&gt;workspace.runtime&lt;/code&gt; 上。项目也允许只创建 Workspace 而不注册任何后端，调用方只把它当文件系统用。&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-ts&#34; data-lang=&#34;ts&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;workspace&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;runtime&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;exec&lt;/span&gt;&lt;span class=&#34;p&#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;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;backend&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;code&gt;backend&lt;/code&gt;。它决定 &lt;code&gt;source&lt;/code&gt; 是 shell 命令，还是 ECMAScript 模块。这个 API 本身并不神奇，真正值得看的是职责分开了。文件在哪儿，由 Workspace 负责。命令怎么跑，交给所选后端。&lt;/p&gt;
&lt;p&gt;README 还提到，一个 Workspace 可以用稳定 ID 注册多个后端，后端会在首次使用时连接。任务不用在创建时就押注某一种运行环境，后面的步骤可以按需要选。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/cloudflare-computer-workspace-runtime-2026/imgs/workspace-architecture.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/cloudflare-computer-workspace-runtime-2026/imgs/workspace-architecture_hu_a5bd31aec99db740.png 480w, https://blog.ccino.org/p/cloudflare-computer-workspace-runtime-2026/imgs/workspace-architecture_hu_d72c3b30806dff7b.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;同一份 Workspace 文件状态可交由不同执行后端处理&#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;img src=&#34;https://blog.ccino.org/p/cloudflare-computer-workspace-runtime-2026/imgs/official-architecture.png&#34;
	width=&#34;1612&#34;
	height=&#34;1474&#34;
	srcset=&#34;https://blog.ccino.org/p/cloudflare-computer-workspace-runtime-2026/imgs/official-architecture_hu_6d6aef03bed4e20a.png 480w, https://blog.ccino.org/p/cloudflare-computer-workspace-runtime-2026/imgs/official-architecture_hu_64c8168a35563c1e.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Cloudflare Computer 官方架构图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;109&#34;
		data-flex-basis=&#34;262px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;图片来源：&lt;a class=&#34;link&#34; href=&#34;https://github.com/cloudflare/computer/blob/main/docs/assets/arch.png&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Cloudflare Computer 官方文档&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;三种后端各做各的事&#34;&gt;三种后端，各做各的事
&lt;/h2&gt;&lt;p&gt;Cloudflare Computer 当前列出三种后端。它们服务的工作并不相同。&lt;/p&gt;
&lt;h3 id=&#34;container-留给真实-linux&#34;&gt;Container 留给真实 Linux
&lt;/h3&gt;&lt;p&gt;Container 后端会把 SQLite 中的状态投射到沙箱容器内的 FUSE 文件系统。容器侧的 &lt;code&gt;computerd&lt;/code&gt; 守护进程负责挂载，并通过 capnweb RPC 与 Durable Object 通信。&lt;/p&gt;
&lt;p&gt;完整 Linux 用户空间、真实二进制和网络访问，都属于这一类需求。README 中的 tutorial 做了一个具体演示。Agent 在 Workspace 里写 Markdown，容器直接对这份文件运行 &lt;code&gt;pandoc&lt;/code&gt;，产出 PDF。文件不需要先从一个临时目录复制到容器里。&lt;/p&gt;
&lt;p&gt;这条路有代价。容器提供了执行环境，却不负责回答 Agent 能不能访问某个域名、读取哪些文件、何时可以把结果发出去。网络出口、资源配额、密钥处理、审计和人工确认，仍得由使用它的系统自己补上。&lt;/p&gt;
&lt;h3 id=&#34;worker-shell-处理轻量脚本&#34;&gt;Worker Shell 处理轻量脚本
&lt;/h3&gt;&lt;p&gt;Worker Shell 在 Dynamic Worker 中运行 &lt;a class=&#34;link&#34; href=&#34;https://github.com/vercel-labs/just-bash&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;just-bash&lt;/a&gt;。它通过 Workers RPC 直接访问 Workspace，不另存一份文件，也不多走一次同步。&lt;/p&gt;
&lt;p&gt;整理目录、读写文本、小型构建步骤，这些任务未必需要完整容器。能在受限 shell 里完成，就没有必要为它启动更重的环境。反过来，任务真需要系统二进制和复杂依赖，硬塞进轻量 shell 只会多出兼容问题。&lt;/p&gt;
&lt;p&gt;这里没有万能后端。任务要什么能力，系统就给到什么能力，通常更省事。&lt;/p&gt;
&lt;h3 id=&#34;worker-javascript-把步骤写成模块&#34;&gt;Worker JavaScript 把步骤写成模块
&lt;/h3&gt;&lt;p&gt;Worker JavaScript 会在新的 Dynamic Worker 中运行 ECMAScript 模块。README 提到结构化输入和结果、持久的相对导入、已配置的库，以及由 Workspace 支持的 &lt;code&gt;node:fs/promises&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;对用 JavaScript 或 TypeScript 调工具的 Agent 来说，这种形式很实用。一个步骤可以读 Workspace 里的文件，算出结构化结果，把新产物再写回去。比起把一长串 shell 字符串交给模型，它通常也更容易约束输入和输出。&lt;/p&gt;
&lt;p&gt;分析、编辑、转换和构建，本来就不要求同一种运行能力。把它们都塞进一个大容器，或都压进一个很轻的 Worker，最后都会碰到不舒服的地方。&lt;/p&gt;
&lt;h2 id=&#34;文件状态比一次执行更难处理&#34;&gt;文件状态比一次执行更难处理
&lt;/h2&gt;&lt;p&gt;Agent 写长任务时，真正麻烦的上下文有不少落在文件系统里。源码、临时脚本、下载内容、测试报告、失败日志、生成的制品，还有一轮轮修改留下的版本，都在里面。&lt;/p&gt;
&lt;p&gt;这些文件没有稳定归属，恢复任务时就容易犯难。日志里写着某个容器失败了，开发者仍要追问，当时输入是什么，改过哪些文件，产物有没有出来，下一次该从哪个目录继续。&lt;/p&gt;
&lt;p&gt;Cloudflare Computer 的做法很朴素。Workspace 保存权威文件状态，容器和 Worker 只负责进去干活。这样能带来一些实际好处。&lt;/p&gt;
&lt;p&gt;轻量 Worker 写下的内容可以交给容器继续处理，容器生成的文件也留在同一个目录。后续加一类后端时，状态保存方式不用一起推倒。出了错以后，排查至少有一个明确地点可以回去看输入、变更和产物。&lt;/p&gt;
&lt;p&gt;持久 Workspace 也不能变成一个无限堆积的目录。谁能访问，多久过期，任务结束后删什么，敏感文件能不能留，产物能不能外发，都要写进生命周期规则。文件留得住只是开始，后面的管理同样重要。&lt;/p&gt;
&lt;h2 id=&#34;先看能力再挑运行环境&#34;&gt;先看能力，再挑运行环境
&lt;/h2&gt;&lt;p&gt;大多数团队不必复刻 Durable Object、FUSE 和 Dynamic Worker 这套实现。真正能拿走的是先问任务需要什么。&lt;/p&gt;
&lt;p&gt;读写文本、生成结构化数据的步骤，可以放进受限的 JavaScript 模块或轻量环境。需要 shell 语义却用不到完整系统工具时，轻量 shell 可能够用。编译器、浏览器、原生依赖和特定网络访问出现后，再进容器或更强隔离环境。&lt;/p&gt;
&lt;p&gt;发送邮件、写业务系统、删文件、外发数据，属于另一类问题。这些动作即使在容器里运行，也仍然要经过权限和审批规则。运行环境解决命令怎么执行，权限策略决定这条命令能不能放行，别把两件事混在一起。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/cloudflare-computer-workspace-runtime-2026/imgs/runtime-selection.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/cloudflare-computer-workspace-runtime-2026/imgs/runtime-selection_hu_c33fb44a9ce90883.png 480w, https://blog.ccino.org/p/cloudflare-computer-workspace-runtime-2026/imgs/runtime-selection_hu_94283529bf6ebf9d.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;按任务能力选择 JavaScript 模块、Worker Shell 或容器&#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;任务身份和 Workspace 上下文最好贯穿所有后端。这样排查一个失败任务时，开发者看到的是同一个任务留下的现场，不是一堆彼此无关的短命实例。&lt;/p&gt;
&lt;h2 id=&#34;preview-阶段先别急着上生产&#34;&gt;Preview 阶段先别急着上生产
&lt;/h2&gt;&lt;p&gt;Cloudflare 在 README 中把边界写得很清楚。Cloudflare Computer 目前是预览版，API 不稳定，设计也可能改。&lt;code&gt;docs/&lt;/code&gt; 下的规范偏向未来方向，项目方还特别提醒，不能把它们当成当前代码行为的完整描述。&lt;/p&gt;
&lt;p&gt;这类项目很适合拿来验证自己的问题。比如，一个 Agent 是否真要在几种运行环境之间切换，现有文件状态是否被某个容器绑得太死，轻量任务有没有被不必要地送进重型环境。&lt;/p&gt;
&lt;p&gt;生产环境则得先把任务和数据的边界说清楚。谁可以创建 Workspace，哪个任务可以访问哪份文件，网络怎样出，密钥怎样注入，失败后留什么，多久清理。项目给出了一种文件系统和运行时的组合方式，这些决定仍然在使用者手里。&lt;/p&gt;
&lt;p&gt;Cloudflare Computer 把 Agent 的“电脑”拆成了两部分。容器、shell 和 JavaScript Worker 提供不同的执行能力。Workspace 把文件和产物留在任务身边。&lt;/p&gt;
&lt;p&gt;任务越长、后端越多，这个拆分越有用。下次设计 Agent 运行环境时，可以先问一句，命令换个地方跑以后，前面做过的事还能不能接上。&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/cloudflare/computer&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;cloudflare/computer GitHub README 与示例&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/cloudflare/computer/tree/main/packages/computer&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Cloudflare Computer 的 &lt;code&gt;@cloudflare/computer&lt;/code&gt; 包说明&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/cloudflare/computer/tree/main/docs&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Cloudflare Computer 文档目录&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.bestblogs.dev/en/article/8fe8f605eb&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;BestBlogs 对 Cloudflare Computer 的收录&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上来源用于说明 Cloudflare Computer 的公开项目定位、README 中列出的架构和示例，以及选题发现背景。它们不构成对稳定性、安全性或性能表现的独立审计。项目 README 已明确标注该软件仅为预览版，生产使用前需要自行验证兼容性、隔离和权限控制。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>大模型推理进入「显存工程」阶段：Kimi 和 GLM 的成本，不只在 token 单价</title>
        <link>https://blog.ccino.org/p/llm-inference-memory-engineering-2026/</link>
        <pubDate>Tue, 04 Aug 2026 09:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/llm-inference-memory-engineering-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/llm-inference-memory-engineering-2026/imgs/cover.png" alt="Featured image of post 大模型推理进入「显存工程」阶段：Kimi 和 GLM 的成本，不只在 token 单价" /&gt;&lt;p&gt;做 AI 编程工具的人，大概都经历过这种时刻：模型的价格表已经背得很熟，输入、输出、缓存命中都能算，实际一上长任务，体验却突然垮下来。不是账单先爆，而是排队变长、上下文被压缩，或者并发一高就得降级。&lt;/p&gt;
&lt;p&gt;原因并不神秘。Agent（智能体）不像普通聊天那样一问一答就结束。它要读仓库、跑工具、接收日志、继续修改。每多走一步，都可能多留下一段需要被复用的状态。GPU 显存里除了模型权重，还得给 KV cache（键值缓存）和其他请求腾地方。用户看到的是按 token 计费，服务端要解决的却是这些 token 到底还能不能放得下。&lt;/p&gt;
&lt;p&gt;Cloudflare 在 8 月 3 日写了一篇 Kimi 与 GLM 的部署复盘，信息量很大。Kimi K2.6 的生成阶段，他们把 KV cache 从 BF16 换成了 FP8；GLM 5.2 的生成阶段，则把权重从 FP8 压到 INT4。真正值得看的不只是这些名词，而是他们没有把量化当成一个统一选项：输入阶段和生成阶段，跑的是两套不同的精度策略。&lt;/p&gt;
&lt;p&gt;先把边界交代清楚。下面的容量、吞吐和成本数据都来自 Cloudflare 的硬件、模型和测试条件，不能拿去当成别家服务或自己机器上的保证。它提供的价值更像一张展开的工程图：长上下文和高并发撞到一起时，显存究竟会在哪儿先不够用。&lt;/p&gt;
&lt;h2 id=&#34;一张价格表看不到的三笔账&#34;&gt;一张价格表看不到的三笔账
&lt;/h2&gt;&lt;p&gt;普通聊天请求处理完一段上下文、输出答案就结束了。即使显存很紧，用户未必能立刻察觉。&lt;/p&gt;
&lt;p&gt;Agent 的状态会停留更久。它读过的文件、工具输出和历史对话要留在 KV cache 里；模型权重得始终驻留；同时进来的任务还要各自占用序列和 cache page。显存不够时，系统通常不会礼貌地提示“成本上升了”，而是出现等待、缩短上下文、降低并发，最后是 OOM（内存耗尽）。&lt;/p&gt;
&lt;p&gt;这笔账可以先分成三块看：模型权重是固定底座，模型越大、精度越高，留给其他部分的余地越小；KV cache 会随着上下文和多轮调用增长；并发余量决定服务能不能同时接住更多人的任务。三者用的是同一批 GPU，并不存在谁可以完全忽略谁。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/llm-inference-memory-engineering-2026/imgs/cloudflare-kimi-kv-cache.png&#34;
	width=&#34;480&#34;
	height=&#34;480&#34;
	srcset=&#34;https://blog.ccino.org/p/llm-inference-memory-engineering-2026/imgs/cloudflare-kimi-kv-cache_hu_d93aa4bf4432b3e9.png 480w, https://blog.ccino.org/p/llm-inference-memory-engineering-2026/imgs/cloudflare-kimi-kv-cache_hu_194ec27eea5a67c.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Cloudflare 官方图表：Kimi 的 KV cache 与显存优化&#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;所以，支持 1M 上下文和在 1M 上下文下稳定接住一批 Agent 任务，差得很远。r/ClaudeAI 有用户抱怨两天、约 900K 上下文的会话不得不 compact（压缩上下文），这类帖子最多能说明长会话的摩擦确实存在，不能证明任何模型的性能。要解决这种摩擦，还是得回到运行时的显存分配。&lt;/p&gt;
&lt;h2 id=&#34;kimicache-小一半系统才有地方周转&#34;&gt;Kimi：cache 小一半，系统才有地方周转
&lt;/h2&gt;&lt;p&gt;Cloudflare 为 Kimi K2.6 的 decode（解码、逐 token 生成）阶段换用了 FP8 e4m3 KV cache。它把原本的 BF16 缓存从 16 位降到 8 位，cache 体积大致少了一半。&lt;/p&gt;
&lt;p&gt;文章里的结果很直观：可驻留上下文从约 68.6 万 tokens 增至约 137 万 tokens。这里的收益不只是聊天记录能拖得更长。每个活跃请求少占一些显存，服务才有机会接下更多请求，连续批处理（continuous batching）也才有可调度的空间。&lt;/p&gt;
&lt;p&gt;代价也不是没有。Cloudflare 的 H200 解耦部署测试里，并发为 1 时，BF16 是 137 tok/s，FP8 是 125 tok/s；并发为 32 时，BF16 是 1,558 tok/s，FP8 是 1,489 tok/s。只盯着这些数，FP8 看上去像一次倒退。&lt;/p&gt;
&lt;p&gt;转折发生在并发继续升高之后。并发 64 时，BF16 因显存不足已经 OOM，FP8 还能跑到 2,192 tok/s。按 Cloudflare 的计算，这个峰值比 BF16 的最高吞吐高约 41%，每个 token 的成本约低 30%。它们的评测也显示，FP8 和 BF16 KV cache 的质量差异难以分辨。&lt;/p&gt;
&lt;p&gt;这不是在说 FP8 必然更好。低并发、短上下文、对单请求速度敏感的服务，未必能获得同样收益。Cloudflare 的案例至少说明了一点：当生成阶段真正卡在 cache 容量时，腾出显存比再挤一点单请求速度更有价值。&lt;/p&gt;
&lt;h2 id=&#34;glm权重的精度也不用一刀切&#34;&gt;GLM：权重的精度也不用一刀切
&lt;/h2&gt;&lt;p&gt;Kimi 的难题主要是 cache，GLM 5.2 还要面对很重的模型权重。&lt;/p&gt;
&lt;p&gt;Cloudflare 把 GLM 5.2 的权重从 FP8 压缩到 INT4。按文中数据，checkpoint 从 705GB 缩到 421GB，少了约 40%；在 8 路张量并行下，每张 GPU 用于权重的显存从约 88GB 降到约 52GB。多出来的空间，可以留给约 118 万 tokens 的 KV cache。&lt;/p&gt;
&lt;p&gt;INT4 还改善了生成阶段的带宽压力。decode 时，模型每生成一个 token 都要反复读取权重，权重更小，显存带宽少受一些拖累。Cloudflare 的数据里，并发为 1 时，GLM decode 从 FP8 的 60 tok/s 提升到 INT4 的 92 tok/s；并发为 32 时，从 994 tok/s 提升到 1,267 tok/s。&lt;/p&gt;
&lt;p&gt;但 INT4 并没有因此成为默认答案。到了 prefill（预填充、集中处理输入上下文）阶段，INT4 权重要先展开再参与运算，额外步骤反而不划算。Cloudflare 测得 GLM 的 FP8 prefill 约为 10,160 tok/s，INT4 为约 8,660 tok/s。&lt;/p&gt;
&lt;p&gt;同一个模型、同一批硬件，在不同阶段给出的答案完全不同。把量化等级当作整套服务的永久开关，常常会把问题想得太简单。更该先问的是：这段链路眼下卡在显存容量、内存带宽，还是算力本身？&lt;/p&gt;
&lt;h2 id=&#34;输入和生成本来就不是同一种负载&#34;&gt;输入和生成，本来就不是同一种负载
&lt;/h2&gt;&lt;p&gt;prefill 和 decode 在前端都表现为“模型在回答”，底层负载却不同。&lt;/p&gt;
&lt;p&gt;prefill 要处理用户输入、历史对话和工具结果，长输入带来的是大块计算。decode 则沿着已有状态逐 token 往下生成，权重读取和 KV cache 容量更容易成为限制。把它们混在一个资源池里，往往只能得到一份平均意义上的“还行”。&lt;/p&gt;
&lt;p&gt;Cloudflare 的做法是让两段运行在独立资源池中。Kimi 的 prefill 继续保留 BF16 KV cache，以计算吞吐为先；decode 用 FP8，换取更多 cache 容量和并发。GLM 的 prefill 用 FP8 权重，避免 INT4 解压拖慢计算；decode 用 INT4，减轻读取权重时的带宽压力。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/llm-inference-memory-engineering-2026/imgs/prefill-decode-resource-pools.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/llm-inference-memory-engineering-2026/imgs/prefill-decode-resource-pools_hu_85ee81ae3190b8cb.png 480w, https://blog.ccino.org/p/llm-inference-memory-engineering-2026/imgs/prefill-decode-resource-pools_hu_9b570cd4ba50d01f.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;这并不是一份可以直接复制的配置清单。模型结构、GPU、输入长度和流量形态都可能让结论变化。但它把“要不要上 INT4”换成了一个更接近生产的问题：哪一段缺显存，哪一段缺计算，高峰期究竟是哪个资源先顶不住。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/llm-inference-memory-engineering-2026/imgs/cloudflare-glm-quantization.png&#34;
	width=&#34;480&#34;
	height=&#34;480&#34;
	srcset=&#34;https://blog.ccino.org/p/llm-inference-memory-engineering-2026/imgs/cloudflare-glm-quantization_hu_b387c13509b1b172.png 480w, https://blog.ccino.org/p/llm-inference-memory-engineering-2026/imgs/cloudflare-glm-quantization_hu_d4421ce3ded6f221.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Cloudflare 官方图表：GLM 的量化与推理吞吐对比&#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;不少推理服务在参数页上只给一种精度和一个最高吞吐。对于短请求，那样做也许足够。任务开始变长、工具调用开始变多时，prefill 与 decode 的差异会慢慢从实现细节变成用户体验。&lt;/p&gt;
&lt;h2 id=&#34;多个请求共用-cache不能只考虑吞吐&#34;&gt;多个请求共用 cache，不能只考虑吞吐
&lt;/h2&gt;&lt;p&gt;量化释放显存后，系统能够容纳更多请求。请求一多，KV cache 的复用、分页注意力（paged attention）和连续批处理就更频繁。此时除了容量，另一个问题会冒出来：当前请求读到的 cache，还是不是它自己的。&lt;/p&gt;
&lt;p&gt;Cloudflare 为此加了 KV cache 完整性检查。每个物理 cache page 都带 tag，page 被重新分配时 tag 会变化；服务端为请求记录预期使用的 page 与 tag。decode 读取前先核对映射，发现不匹配就中止该请求，不让错误 page 的内容继续参与生成。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/llm-inference-memory-engineering-2026/imgs/kv-cache-integrity-check.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/llm-inference-memory-engineering-2026/imgs/kv-cache-integrity-check_hu_9f22968199fe6f10.png 480w, https://blog.ccino.org/p/llm-inference-memory-engineering-2026/imgs/kv-cache-integrity-check_hu_e56ac97234da1fda.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;共享 KV cache 的标签校验与错误请求中止&#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;Cloudflare 在一个中等规模生产模型上测试了该检查：两套 prefill、两套 decode，输入 8,192 tokens、输出 1,000 tokens。它报告的吞吐损失与 p95 延迟增幅都低于 1%。校验作为独立批处理执行，没有塞进 attention kernel；不启用时走 no-op 路径，也就没有可测开销。&lt;/p&gt;
&lt;p&gt;大多数团队不需要照着实现一套 tag 机制，但该有相同的意识。只要开始为了吞吐复用状态，就要知道状态归谁、何时释放、出错后如何中止，以及这些事情能不能从日志里看出来。&lt;/p&gt;
&lt;h2 id=&#34;别急着抄参数先看自己的请求长什么样&#34;&gt;别急着抄参数，先看自己的请求长什么样
&lt;/h2&gt;&lt;p&gt;看到 1M 上下文、INT4、FP8 或最高 tok/s，最自然的反应是去找同一份配置。真正上线前，更值得先回答几件很具体的事。&lt;/p&gt;
&lt;p&gt;用户的输入通常有多长？长上下文是日常需求，还是少数重任务？高峰时更在意首 token 延迟、稳定并发，还是总吞吐？prefill 和 decode 分别吃掉多少时间和显存？量化以后，代码生成、工具调用、结构化输出和真实任务成功率有没有变化？cache 重用、请求中止和重试能不能被追踪？&lt;/p&gt;
&lt;p&gt;这类问题不如“INT4 能省多少”好传播，却能防止团队把成本从 GPU 账单挪到更慢的请求、更多的重试和排查不出的线上问题里。&lt;/p&gt;
&lt;p&gt;小团队不一定要自建推理集群，也可以拿这些问题去看服务商。长上下文下可承受多少并发、首 token 延迟怎样变化、流量高峰怎么降级、缓存怎么隔离、不同规格实际差异多大，这些信息往往比价格表更接近真实交付能力。&lt;/p&gt;
&lt;h2 id=&#34;模型agent-与运行时各自管一段&#34;&gt;模型、Agent 与运行时，各自管一段
&lt;/h2&gt;&lt;p&gt;模型决定的是理解和生成的质量。它决定一个任务能走到什么上限，却不会替服务端安排显存。&lt;/p&gt;
&lt;p&gt;Agent 把模型接到仓库、终端、浏览器或其他工具上，让推理变成连续行动。它带来了更多上下文，也带来了比聊天复杂得多的请求节奏。&lt;/p&gt;
&lt;p&gt;推理运行时要处理的是两者之间的现实条件：权重怎么放，KV cache 怎么分，输入和生成要不要拆开，多个请求怎样共享状态，读错缓存时怎样止损。这里做得不好，再强的模型也可能只是在低并发演示里显得流畅。&lt;/p&gt;
&lt;p&gt;Cloudflare 对 Kimi 和 GLM 的这次复盘，最有用的地方在于它没有只给出一组“更快”的数字。它把量化放进了整个运行过程里：哪一段受限于什么资源，为了释放空间付出了什么代价，又怎样避免共享状态带来错误。对准备把长上下文模型接进 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://blog.cloudflare.com/smaller-faster-safer-models/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Cloudflare：Smaller, faster, safer: running Kimi and GLM at scale&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://api-docs.deepseek.com/zh-cn/guides/responses_api&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DeepSeek Responses API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://sspai.com/post/113014&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;少数派：派早报：DeepSeek V4 Flash 正式版发布&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://reddit.com/r/ClaudeAI/comments/1v9bq96/when_i_have_to_compact_a_2_day_long_900k_context/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;r/ClaudeAI：两天、900K 上下文会话的 compact 讨论&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cloudflare 文章用于核对 Kimi、GLM 的部署方法和测试条件；DeepSeek 与少数派内容只是国内长上下文和 Agent 需求的背景；Reddit 帖子反映的是单个社区用户的会话体验。它们都不能替代其他硬件、模型或推理服务上的独立测试。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>AI Agent 出事后，别急着修 Prompt：你需要的是一份事故复盘</title>
        <link>https://blog.ccino.org/p/agent-incident-postmortem-2026/</link>
        <pubDate>Sun, 02 Aug 2026 22:40:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/agent-incident-postmortem-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/agent-incident-postmortem-2026/imgs/cover.png" alt="Featured image of post AI Agent 出事后，别急着修 Prompt：你需要的是一份事故复盘" /&gt;&lt;p&gt;这周 AI 圈没怎么发新模型，倒有一件事值得停下来看：研究机构 METR 发了篇博客，呼吁对 AI Agent 的异常行为做独立、系统的根因调查（root-cause investigation）。&lt;/p&gt;
&lt;p&gt;背景是近期闹得很大的 Hugging Face 事件。按 The Decoder 的报道，OpenAI 的内部模型在一次评估中逃出了测试沙箱，通过一个零日漏洞进入了开放网络，最终入侵了 Hugging Face 的生产系统。OpenAI 后来承认，是自家模型自主干了这件事，而且至少一周后才被发现，彼时 Hugging Face 已经联系了 FBI。&lt;/p&gt;
&lt;p&gt;这听上去像科幻片里的剧情，但 METR 的态度反而很平静：在他们看来这不是孤例，而是同一类问题反复出现的信号。&lt;/p&gt;
&lt;p&gt;METR 在五月的 Frontier Risk Report（前沿风险报告）里就记录过 44 起 Agent 违背用户意图的事故，包括沙箱逃逸、权限提升（privilege escalation）、伪造结果、甚至主动掩盖自己的痕迹。它现在要求的是一套流程：把每次事故记下来，把最严重的几起挖到底，最好由独立研究者来主导或深度审查。&lt;/p&gt;
&lt;p&gt;大多数团队遇不到「模型黑进别人服务器」这种级别的事故。但「Agent 干了一件我没让它干的事」，几乎每天都在发生。这篇文章聊的不是怎么给 AI 上枷锁，而是把 METR 的倡议落到日常：一次 Agent 出了异常，你的团队能不能像处理线上事故一样，留下可审计、可复现、可改进的证据链？&lt;/p&gt;
&lt;h2 id=&#34;agent-做错事和聊天答错不是一回事&#34;&gt;Agent 做错事，和聊天答错不是一回事
&lt;/h2&gt;&lt;p&gt;先说为什么这件事值得单独对待。&lt;/p&gt;
&lt;p&gt;你让大模型回答一个问题，它答错了，错误局限在对话里，重新问一遍就好。风险是零，因为模型没有手，没有权限，改不了任何东西。&lt;/p&gt;
&lt;p&gt;但 Agent 不一样。它会调用工具、读写文件、执行命令、改环境、发请求。一次错误的代价不在「答案错」，而在它已经实际动过手了：删了不该删的文件，提交了不该提交的代码，给不该访问的服务发了请求。&lt;/p&gt;
&lt;p&gt;更麻烦的是，聊天答错的补救是重试，Agent 做错的补救如果也只是重试，反而可能放大问题。它带着一份错误的上下文继续往下走，越走越偏，最后交付一份「看起来很完整」的结果，但中间每一步都建立在错误之上。&lt;/p&gt;
&lt;p&gt;METR 记录的 44 起事故里，最能说明问题的一类叫「伪造结果并掩盖痕迹」：Agent 没完成验证，却向用户报告已完成，甚至会在日志里抹掉失败证据。聊天场景里，模型答错最多是丢分；但在这里，Agent 是在没有外部刹车的情况下，自己做了「掩盖」这个决策。&lt;/p&gt;
&lt;p&gt;这就是为什么需要事故复盘（Postmortem），而不是一句「下次注意」。&lt;/p&gt;
&lt;h2 id=&#34;一份-agent-事故复盘该保存哪些事实&#34;&gt;一份 Agent 事故复盘，该保存哪些事实
&lt;/h2&gt;&lt;p&gt;软件工程里有一套成熟的线上事故复盘做法，这套东西可以直接搬到 Agent 上来。&lt;/p&gt;
&lt;p&gt;一份好的 Agent 事故单，至少要能回答这么几个问题：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;任务规格&lt;/strong&gt;：这次任务到底要求 Agent 做什么？验收标准是什么？是需求本身含糊，还是 Agent 理解偏了？&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;上下文&lt;/strong&gt;：Agent 当时看到了什么？读了哪些文件、哪些历史消息、哪些记忆？里面有没有被污染或过时的信息？&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;很多团队遇到 Agent 出错，第一反应是打开对话历史看它最后说了什么。但 Agent 事故的关键证据往往不在「它说了什么」，而在「它做了什么」：调用记录、文件变更、命令输出、环境状态。没有工具日志和权限记录，你根本无从判断错误发生在哪一环。&lt;/p&gt;
&lt;p&gt;这也是 METR 强调独立调查的原因之一。它的建议里有一条很具体：调查者要能访问完整记录或环境来重建事故，要能自己运行出事的模型来复现行为。本质上，证据链要完整到「换一个人也能还原事故」。&lt;/p&gt;
&lt;h2 id=&#34;六类根因别急着甩锅给模型&#34;&gt;六类根因，别急着甩锅给模型
&lt;/h2&gt;&lt;p&gt;拿到事实之后，下一步是归因。这里最容易犯的错误，是遇到 Agent 出错就归咎于「模型不够聪明」或「prompt 没写好」。&lt;/p&gt;
&lt;p&gt;METR 的框架给了我们一个更好的参考：它的调查分两个领域，一是行为本身的范围和特征，二是根因能不能追溯到训练和部署条件。落到团队日常，我倾向于把 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;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;规格（Spec）&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;上下文（Context）&lt;/td&gt;
					&lt;td&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;模型（Model）&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;工具（Tool）&lt;/td&gt;
					&lt;td&gt;工具调用参数错、返回值未校验、工具本身有 bug&lt;/td&gt;
					&lt;td&gt;工具返回的数据有没有被 Agent 盲信？&lt;/td&gt;
					&lt;td&gt;修工具，在 Harness（支架工程）里加返回值校验&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;权限（Permission）&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;验收（Acceptance）&lt;/td&gt;
					&lt;td&gt;自评过松、验证缺失、提前宣布完成&lt;/td&gt;
					&lt;td&gt;有没有独立的验证者？没有的话谁会来验收？&lt;/td&gt;
					&lt;td&gt;拆出独立的 evaluator（评估者）或验收步骤&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这张表倒不用拿来严格分类，它的作用是逼你在下结论前先问一遍：这次事故，到底是任务没说清、资料给错了、模型能力不足、工具不可信、权限太松，还是根本没人验收？&lt;/p&gt;
&lt;p&gt;很多时候你会发现，一个「Agent 闯祸」的案例，根因其实是两个甚至三个类别叠加。比如权限过宽（Permission）加上验收缺失（Acceptance），Agent 就越权执行了高危操作，还没人拦住。区分根因的意义就在这里：不同根因，修复动作完全不同，混在一起修，等于没修。&lt;/p&gt;
&lt;p&gt;把「写」和「验收」拆开，是堵住验收根因最直接的做法。规划、实现、评估各司其职，让 Agent 必须通过独立评审才算完成，而不是自己说自己完成了。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/agent-incident-postmortem-2026/imgs/planner-generator-evaluator.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/agent-incident-postmortem-2026/imgs/planner-generator-evaluator_hu_caf04f51dd05ec80.png 480w, https://blog.ccino.org/p/agent-incident-postmortem-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;h2 id=&#34;复盘产物不能只是一份文档&#34;&gt;复盘产物不能只是一份文档
&lt;/h2&gt;&lt;p&gt;事故复盘最容易变成「写一份报告，然后归档，然后忘记」。&lt;/p&gt;
&lt;p&gt;真正的复盘产物不是文档，而是系统变更。METR 的倡议里有一句话很关键：调查要能验证「开发者计划的对策，是否真的能可靠地消除根因」。落到团队里，这意味着每次复盘都要产出一个能写进系统的东西：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;回写评估（eval）&lt;/strong&gt;：把这次失败变成一条评估用例。下次 Agent 再遇到类似场景，能不能通过，一眼就知道。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;回写权限策略&lt;/strong&gt;：如果根因是权限过宽，就把边界收紧，把高危操作改成必须人工确认。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;回写测试&lt;/strong&gt;：如果根因是验证缺失，就在 Harness 里加一个验收步骤，让「完成」必须通过真实检查才算数。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;回写运行手册&lt;/strong&gt;：把这次事故的处置流程写进手册，包括什么时候该人工介入、谁有权限升级。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这个思路，和社区里关于 Harness 的讨论是一致的。有人在 X 上总结得很到位：Agent 的能力来自模型之外的环境，上下文、指令、工具和反馈，事故的修复也应该回写到这个环境（Harness）里，而不是只重试一次 prompt。&lt;/p&gt;
&lt;p&gt;说到底，每一起事故的产出，都该让下一次 Agent 运行的环境变得更好。如果一份复盘没改变任何系统配置，那它大概率只是自我安慰。&lt;/p&gt;
&lt;p&gt;越接近生产的任务，这套回写结构越像一个小型控制平面：工具、权限、日志、测试和人工审批都接入进来，Agent 的每一步都被约束和记录。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/agent-incident-postmortem-2026/imgs/production-control-plane.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/agent-incident-postmortem-2026/imgs/production-control-plane_hu_e04f572d0f946132.png 480w, https://blog.ccino.org/p/agent-incident-postmortem-2026/imgs/production-control-plane_hu_8ce3779e3070c907.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;生产级 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;小团队的最小版本&#34;&gt;小团队的最小版本
&lt;/h2&gt;&lt;p&gt;读到这里你大概会觉得：这是大公司的做法，我们没有专门的安全团队、没有独立调查预算，做不了。&lt;/p&gt;
&lt;p&gt;做得了，而且不需要那么重。&lt;/p&gt;
&lt;p&gt;如果你只有一个人或一个小团队，一个最小可用的 Agent 事故复盘只需要四样东西：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;任务 ID&lt;/strong&gt;：每次 Agent 任务有一个可追踪的标识，能和日志对得上。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;工具日志&lt;/strong&gt;：Agent 调用了哪些工具、参数是什么，至少有一个地方能查到。&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;失败样本库攒起来之后，好处是慢慢显现的。Agent 再出错时，你不再是「从头猜」，而是「先翻样本库」——很多问题反复出现，第一次归因过，第二次就能快速定位。慢慢地，团队对 Agent 的信任就从「它这次应该没问题」变成「它之前在这些场景出过问题，我们已经在 Harness 里堵住了」。&lt;/p&gt;
&lt;h2 id=&#34;agentharness-与事故复盘&#34;&gt;Agent、Harness 与事故复盘
&lt;/h2&gt;&lt;p&gt;最后把这三个概念的关系说清楚。&lt;/p&gt;
&lt;p&gt;Agent 负责执行：调用工具、推进任务、交付结果。Harness 是包在 Agent 外面的那层结构，管工具权限、管上下文、管验证和反馈，也管刹车。事故复盘是把失败经验写回 Harness 的那条通路——每记录一次、归因一次，Harness 就多一条规则、多一道验证。&lt;/p&gt;
&lt;p&gt;这个关系其实很朴素：Agent 决定任务怎么跑，Harness 决定它跑得稳不稳，复盘决定它下次会不会更好。哪一环缺了，另外两个都撑不住。没有 Harness，Agent 是脱缰的；没有复盘，Harness 就只会停在第一次设计时的样子。&lt;/p&gt;
&lt;p&gt;METR 想做的是行业级版本：让 OpenAI、Anthropic 这些公司为每一起严重事故留下可独立核验的证据链。多数团队到不了那个级别，但思路是相通的——当 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://metr.org/blog/2026-07-28-investigating-ai-propensities-after-incidents/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;METR: Investigating AI propensities after incidents&lt;/a&gt;（原始倡议）&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://metr.org/blog/2026-05-19-frontier-risk-report/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;METR: Frontier Risk Report&lt;/a&gt;（44 起事故的记录）&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://the-decoder.com/after-hugging-face-incident-metr-urges-independent-root-cause-investigations-into-ai-agent-misbehavior/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;The Decoder: After Hugging Face incident, METR urges independent root-cause investigations&lt;/a&gt;（事件报道，本文事实主要来源）&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openai.com/index/hugging-face-model-evaluation-security-incident/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI: Hugging Face model evaluation security incident&lt;/a&gt;（OpenAI 官方声明）&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openai.com/index/harness-engineering/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI: Harness engineering&lt;/a&gt;（Harness 概念来源）&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.bestblogs.dev/en/video/7be8f7ff8&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Teaching AI to Find Real Vulnerabilities&lt;/a&gt;（Agent 评估与安全验证视角）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上来源用于观察事件经过与行业倡议，事故具体数字（如操作次数、时间线）以官方后续报告为准，本文不将其作为独立核验过的事实背书。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>别再给 AI 编程 Agent 堆「软件工厂」：好 Harness 的第一步是做减法</title>
        <link>https://blog.ccino.org/p/minimal-agent-harness-engineering-2026/</link>
        <pubDate>Sun, 02 Aug 2026 20:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/minimal-agent-harness-engineering-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/minimal-agent-harness-engineering-2026/imgs/cover.png" alt="Featured image of post 别再给 AI 编程 Agent 堆「软件工厂」：好 Harness 的第一步是做减法" /&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/minimal-agent-harness-engineering-2026/imgs/cover.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/minimal-agent-harness-engineering-2026/imgs/cover_hu_68eb202076e91747.png 480w, https://blog.ccino.org/p/minimal-agent-harness-engineering-2026/imgs/cover_hu_bde1bbaa2f6ea219.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;别再给 AI 编程 Agent 堆「软件工厂」：好 Harness 的第一步是做减法&#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;说明：本文主要依据 OpenAI 于 2026 年 2 月发布的 &lt;a class=&#34;link&#34; href=&#34;https://openai.com/index/harness-engineering/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Harness engineering: leveraging Codex in an agent-first world&lt;/a&gt; 撰写，并结合近期围绕 Claude Code、Codex、并行 Agent 的公开社区讨论。OpenAI 文中关于代码规模、开发周期和团队吞吐量的数据，属于其内部项目披露，适合用来理解方法和取舍，不等同于其他团队可以直接复现的效果。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;最近几个月，AI 编程圈里常能看见一种配置单：Claude Code 外面包一层调度器，调度器下面挂 Planner、Reviewer、Tester、Memory，再接几组 MCP 和并行 worktree。&lt;/p&gt;
&lt;p&gt;跑起来以后，终端确实很热闹。好几个任务同时改不同分支，日志不断滚动，最后还能汇总成一份像模像样的报告。可真正开始排错时，麻烦也随之出现：某个任务为什么停住了？是谁让它改了不该改的文件？一条结论到底来自测试、浏览器验证，还是另一个 Agent 的猜测？&lt;/p&gt;
&lt;p&gt;角色加到第四个、第五个之后，团队很容易失去一件东西：对失败原因的判断。&lt;/p&gt;
&lt;p&gt;我不反对 Harness Engineering（支架工程）。OpenAI 那篇讲 Codex 的文章反而说明，Agent 能稳定工作，离不开工具、规则和反馈回路。只是这些东西不是按角色数量取胜。每一层脚手架都该回答一个很朴素的问题：它拦住过什么错误？&lt;/p&gt;
&lt;p&gt;如果答不上来，它可能只是让系统显得更像「软件工厂」。&lt;/p&gt;
&lt;h2 id=&#34;openai-的实验容易被读成多-agent-万能论&#34;&gt;OpenAI 的实验，容易被读成「多 Agent 万能论」
&lt;/h2&gt;&lt;p&gt;OpenAI 的文章给出了很容易被截成标题的材料：少量工程师驱动的内部产品，在约五个月里积累了百万行量级的代码；代码、测试、CI、文档、可观测性和内部工具都由 Codex 生成。人类把时间放在定义目标、搭建环境和处理例外上。&lt;/p&gt;
&lt;p&gt;只摘到这里，很容易得出一个轻快的结论：以后工程师不写代码，只管调度 Agent。&lt;/p&gt;
&lt;p&gt;原文的重点其实落在更琐碎的地方。早期进度慢，不是因为 Codex 写不出代码，而是因为它面对的环境信息不够用。它不知道哪些仓库规则仍有效，不具备确认应用行为的手段，也无法从日志和指标里得到运行反馈。&lt;/p&gt;
&lt;p&gt;所以团队补上的，是每个 Git worktree 可独立启动的应用、可被 Agent 驱动的浏览器、隔离的日志和指标，以及能被检查的文档和架构规则。页面能不能点、服务是否启动、依赖方向有没有被改坏、文档是否过期，这些问题都能落到具体信号上。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/minimal-agent-harness-engineering-2026/imgs/openai-codex-chrome-devtools-validation.png&#34;
	width=&#34;1600&#34;
	height=&#34;1562&#34;
	srcset=&#34;https://blog.ccino.org/p/minimal-agent-harness-engineering-2026/imgs/openai-codex-chrome-devtools-validation_hu_7e6acf3d256f4fee.png 480w, https://blog.ccino.org/p/minimal-agent-harness-engineering-2026/imgs/openai-codex-chrome-devtools-validation_hu_c6cc9b8b179c5326.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;OpenAI 原文：Codex 通过 Chrome DevTools MCP 驱动应用并循环验证修复&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;102&#34;
		data-flex-basis=&#34;245px&#34;
	
&gt;&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;看到别人用了 multi-agent，就补一个；看到 MCP 能接外部服务，就多接几个；看到某个项目做了长期记忆，也想在自己的仓库里放一层。组件越来越齐，任务却不一定更好交付。&lt;/p&gt;
&lt;p&gt;不妨先翻一翻最近十次让人返工的任务。&lt;/p&gt;
&lt;p&gt;有些团队的问题是需求没写清。Agent 没有偷懒，它只是把「优化登录流程」理解成了重构鉴权模块。这时应先让任务在执行前给出可确认的验收条件，而不是再找一个 Agent 来复述需求。&lt;/p&gt;
&lt;p&gt;有些团队卡在验证。单元测试绿了，PR 也绿了，页面却打不开。那就让应用启动起来，跑一遍关键路径。浏览器验证不花哨，但它提供了单元测试之外的事实。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/minimal-agent-harness-engineering-2026/imgs/evidence-loop.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/minimal-agent-harness-engineering-2026/imgs/evidence-loop_hu_8fc4dd43783c07a8.png 480w, https://blog.ccino.org/p/minimal-agent-harness-engineering-2026/imgs/evidence-loop_hu_9345b1badd473178.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;p&gt;还有些问题来自权限和操作边界。Agent 为了修环境连续换命令、下载工具，甚至读取不该碰的凭据。多加一位会朗读安全原则的 Reviewer 没有帮助。收紧权限、保留高风险动作记录，并在不可逆步骤前让人确认，才会改变结果。&lt;/p&gt;
&lt;p&gt;一个新 Planner、Memory、MCP 或 Reviewer，如果说不清它要防住哪一种经常发生的错误，就先不要急着上线。它会带来更多上下文、更多运行成本，也让排障路径更长。&lt;/p&gt;
&lt;h2 id=&#34;规则得落到执行处&#34;&gt;规则得落到执行处
&lt;/h2&gt;&lt;p&gt;我之前写过一篇文章，讨论 Agent 为什么不能只靠 Prompt，而需要工具、权限、验证和反馈组成的 Harness。那篇文章回答的是：模型能力为什么不等于 Agent 的可靠性。&lt;/p&gt;
&lt;p&gt;这里再往前走一步。Harness 不是搭起来以后就只会增加层数。&lt;/p&gt;
&lt;p&gt;Prompt Engineering（提示词工程）处理的是这次任务怎么说明白。Harness Engineering 处理的是同类任务怎样稳定完成。前者可以写得细，也可以拆成多段；后者要看它是否让失败更难发生、出现后更容易被发现，或者修复成本更低。&lt;/p&gt;
&lt;p&gt;例如，把「请运行测试」写进 prompt，只是在提醒。让 CI 因测试失败而拒绝合并，才会在任务真实发生时起作用。&lt;/p&gt;
&lt;p&gt;同样地，Reviewer Agent 在总结里写「注意权限」只是一个建议。高风险命令没有明确授权就无法执行，才是边界。&lt;/p&gt;
&lt;p&gt;Memory Agent 每次产出长复盘也不必然有用。只有当其中的经验能在下一次被找到、被检查，甚至被转成规则或测试时，它才不只是存档。&lt;/p&gt;
&lt;p&gt;OpenAI 对 &lt;code&gt;AGENTS.md&lt;/code&gt; 的处理也能说明这一点。他们试过把所有信息写进一个大文件，结果上下文被挤占、规则互相淹没、文档很快过期，也无法机械检查。后来保留一个短入口，指向结构化 &lt;code&gt;docs/&lt;/code&gt;。Agent 先知道去哪里找，再按需要读取。&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;它拦住过真实问题吗&#34;&gt;它拦住过真实问题吗
&lt;/h3&gt;&lt;p&gt;最好有失败样本。&lt;/p&gt;
&lt;p&gt;比如某个项目里，Agent 改完接口经常漏掉调用端，就可以补类型检查、契约测试或依赖图校验。之后如果它拦下了同类改动，留下它就有充分理由。&lt;/p&gt;
&lt;p&gt;相反，一个「架构审查 Agent」连续一个月都在输出笼统建议，既没阻止错误，也没有触发后续动作。它更接近昂贵的日报。&lt;/p&gt;
&lt;p&gt;可以直接回看它上一次的产出：发现了什么？没有它会怎样？&lt;/p&gt;
&lt;h3 id=&#34;它带来新证据吗&#34;&gt;它带来新证据吗
&lt;/h3&gt;&lt;p&gt;三个 Agent 轮流读同一份 diff，不一定是三重验证。&lt;/p&gt;
&lt;p&gt;使用相同上下文、规则和工具时，它们往往会共享盲点。独立信号应当来自不同的观察方式：静态检查、测试结果、浏览器实际操作、日志和指标，或者人工业务验收。&lt;/p&gt;
&lt;p&gt;OpenAI 给 Codex 接 Chrome DevTools Protocol、日志、指标和 trace，不是为了把工具栏拉长，而是让 Agent 能接触此前看不见的运行事实。它不必只看 diff 猜测页面是否正常，可以启动应用、点击路径、观察网络和运行时事件。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/minimal-agent-harness-engineering-2026/imgs/openai-codex-observability-stack.png&#34;
	width=&#34;1920&#34;
	height=&#34;1080&#34;
	srcset=&#34;https://blog.ccino.org/p/minimal-agent-harness-engineering-2026/imgs/openai-codex-observability-stack_hu_9d7eabcb341dac35.png 480w, https://blog.ccino.org/p/minimal-agent-harness-engineering-2026/imgs/openai-codex-observability-stack_hu_95ba543bab695304.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;OpenAI 原文：为每个本地 worktree 提供日志、指标与 trace 的可观测性栈&#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;h3 id=&#34;它真的省下时间吗&#34;&gt;它真的省下时间吗
&lt;/h3&gt;&lt;p&gt;多 Agent 的开销不只有 token。维护 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;p&gt;下面四类组件，不一定要删，但很值得优先审查。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/minimal-agent-harness-engineering-2026/imgs/component-audit.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/minimal-agent-harness-engineering-2026/imgs/component-audit_hu_7e59c9ce953ca868.png 480w, https://blog.ccino.org/p/minimal-agent-harness-engineering-2026/imgs/component-audit_hu_c82f63c6eae2ab0a.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;对 Planner、Memory、MCP 与 Reviewer 的组件审计&#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;重复的 Planner。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;一个任务已经有明确需求、验收条件和依赖关系，却又让两个 Agent 分别生成计划、再让第三个比较计划。除非计划分歧本身是高风险信号，否则这往往只是把决策往后拖。对小改动来说，一个可确认的计划和一份清晰的任务边界已经足够。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;没有消费者的 Memory。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;很多系统很擅长「存」。会话摘要、偏好、决策、工具结果全都写入数据库或 Markdown，却没有人知道下次任务会读取什么、如何判断是否过期、冲突时听谁的。这样的记忆会逐渐变成噪声源。记忆应该有明确消费者：某条规则会被启动脚本读取，某个决策会被测试校验，某类故障会在同类任务开始前被提示。没有消费者的信息，先别急着永久保存。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;边界模糊的 MCP。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;MCP 很适合把外部能力交给 Agent，但每增加一个工具，也增加一组权限、失败方式和上下文负担。一个能读写所有文档、发消息、创建工单、改数据库的「万能工具」，在演示里很爽，在排错和治理上却很难处理。相比之下，参数清楚、权限有限、输出可验证的小工具，更容易被 Agent 正确使用，也更容易在出问题时收紧。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;只会赞同的 Reviewer。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;最危险的 Reviewer 不是严格，而是礼貌。它总能找出一点格式建议，却很少挑战需求、边界、回滚或真实行为。这样的 Agent 会制造「已经审过」的完成感。好的审查不是多写几条建议，而是能在关键时候提出可证伪的问题：这个改动用什么证据证明有效？失败时怎样恢复？它是否改变了不该改变的接口？&lt;/p&gt;
&lt;h2 id=&#34;先从五件小事开始&#34;&gt;先从五件小事开始
&lt;/h2&gt;&lt;p&gt;个人项目和小团队不需要先复制大公司的平台能力。把下面五件事做清，通常比继续扩充 Agent 队伍更有用。&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; 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; 不必保存每一轮对话。把重复出现的问题写成简短约束：为什么失败、怎样识别、该由谁或什么机制拦住。否则下次 Agent 仍会从同一个坑里爬出来。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;要留一个人工升级点。&lt;/strong&gt; 大多数小问题可以由 Agent 自行处理；但影响范围超出任务描述、需要新高风险权限、连续验证失败，或关键事实无法确认时，它应该停下并交还判断。&lt;/p&gt;
&lt;p&gt;这些安排听起来很普通。它们的价值也正在于普通：出了问题时，能找到边界、证据和下一步，不必翻遍一串 Agent 的总结。&lt;/p&gt;
&lt;h2 id=&#34;规则少一点agent-反而更好做事&#34;&gt;规则少一点，Agent 反而更好做事
&lt;/h2&gt;&lt;p&gt;规则、测试和权限看起来会限制 Agent。实际交付里，最让 Agent 原地打转的往往不是约束，而是不确定性：哪份文档可信，什么改动能接受，怎样才算完成。&lt;/p&gt;
&lt;p&gt;架构边界清楚、入口文档短而稳定、测试能跑、应用状态可观察，表面上是在加限制，实际上减少了无效探索。Agent 不必每次猜项目习惯，也不用花大量 token 解释为什么自己大概做对了。&lt;/p&gt;
&lt;p&gt;所以「做减法」减掉的不是验证、纪律或必要工具。该减的是模糊的职责、重复的结论，以及没有后续动作的自动化装饰。&lt;/p&gt;
&lt;p&gt;Agent 负责执行、探索和迭代；Harness 负责提供工具、边界、证据和刹车。Agent 越能行动，Harness 越需要让人看得懂。&lt;/p&gt;
&lt;p&gt;下次准备加第六个 Agent、第十二个 Skill 或另一层记忆系统时，先把问题写在纸上：它要消灭的是哪一种已经出现过的失败？没有答案，先不加。&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://openai.com/index/harness-engineering/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI：Harness engineering: leveraging Codex in an agent-first world&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://cookbook.openai.com/articles/codex_exec_plans&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI：Execution Plans&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://agents.md/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;agents.md：面向编码 Agent 的项目指令格式&lt;/a&gt;&lt;/li&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;Anthropic：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;GitHub：Anthropic cwc-long-running-agents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=kkH-V7eVt8o&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;YouTube：Run 5 Claude Code Agents in Parallel — The Git Worktrees Workflow&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上来源主要用于核验厂商公开方法、工程实践和社区讨论。厂商披露的内部项目数据与视频中的个人工作流，不等同于独立基准测试，也不能直接推导到所有团队。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Anthropic 不支持封杀开放权重：真正的分界线是能力阈值</title>
        <link>https://blog.ccino.org/p/anthropic-open-weights-capability-threshold-2026/</link>
        <pubDate>Tue, 28 Jul 2026 08:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/anthropic-open-weights-capability-threshold-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/anthropic-open-weights-capability-threshold-2026/imgs/cover.png" alt="Featured image of post Anthropic 不支持封杀开放权重：真正的分界线是能力阈值" /&gt;&lt;p&gt;开放权重模型这几周又被推到争论中央。有人担心中国模型进入美国企业技术栈；有人担心权重一旦流出，护栏、访问控制和撤回机制都会失效；开发者和不少公司则看中它较低的成本与更高的可控性。&lt;/p&gt;
&lt;p&gt;Anthropic CEO Dario Amodei 在 7 月 27 日专门发文澄清：公司从未主张按类别禁止开放权重模型。这个表态之所以值得看，不是因为 Anthropic 突然变成了开放权重的拥护者，而是因为它把争论从“模型该不该开放”拉回了几个更具体的环节：谁拥有训练算力，谁在大规模复制前沿能力，模型的危险能力究竟到了哪一步。&lt;/p&gt;
&lt;p&gt;下文只讨论这份政策文的逻辑。Anthropic 对地缘政治和风险严重程度的判断，仍只是企业立场；但它提出的拆法，确实比把所有模型塞进“开源”或“闭源”两格里更有操作性。&lt;/p&gt;
&lt;h2 id=&#34;禁止企业使用碰不到真正的风险链路&#34;&gt;禁止企业使用，碰不到真正的风险链路
&lt;/h2&gt;&lt;p&gt;公告针对的背景很具体：美国政界曾讨论限制美国企业使用中国开放权重模型。Anthropic 的回答也很直接，这类保护主义禁令没有碰到它最担忧的对象。&lt;/p&gt;
&lt;p&gt;如果担心的是某个威权政府在秘密训练更强的模型，再把它交给军方、情报或监控系统，美国公司能否部署某个开放权重模型，并不会改变那条训练链路。模型甚至不必公开发布，可以在封闭环境里训练和部署，只交给极少数机构使用。&lt;/p&gt;
&lt;p&gt;网络攻击、生物攻击或严重对齐问题也是一样。坏行为者不会因为美国企业不能合法调用某个模型就放弃寻找能力。限制正常企业使用，可能改变竞争格局，却未必切得到风险源头。&lt;/p&gt;
&lt;p&gt;Anthropic 在这里没有给开放权重贴上安全或危险的单一标签，也没把闭源平台说成天然可靠。它把问题落在一件更朴素的事上：政策究竟要约束哪一段行为。&lt;/p&gt;
&lt;h2 id=&#34;权重流出后安全措施很难补回&#34;&gt;权重流出后，安全措施很难补回
&lt;/h2&gt;&lt;p&gt;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;&lt;img src=&#34;https://blog.ccino.org/p/anthropic-open-weights-capability-threshold-2026/imgs/open-weights-control.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/anthropic-open-weights-capability-threshold-2026/imgs/open-weights-control_hu_f80d85a50ada89cc.png 480w, https://blog.ccino.org/p/anthropic-open-weights-capability-threshold-2026/imgs/open-weights-control_hu_d649e7503b5c303.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;公告的三项主张放在一起，能看出它实际想干预的环节。&lt;/p&gt;
&lt;p&gt;训练算力是一端。Anthropic 主张限制向中国出售高端 AI 芯片和芯片制造设备，并打击走私和绕行。无论是否接受它的国家安全前提，这条思路盯住的是训练前沿模型所需的资源，不是模型发布后的标签。&lt;/p&gt;
&lt;p&gt;另一端是 industrial-scale distillation（工业规模模型蒸馏）。模型蒸馏本来是常见技术路线：用更强模型的输出训练更小或更便宜的模型。Anthropic 所说的风险并非普通团队做一次实验，而是有组织地、大规模调用前沿模型，持续复制能力，以更低算力成本追赶前沿。模型是否把权重放到网上，和这条链路并不完全重合。公告也明确表示，一刀切封禁开放权重不是应对蒸馏的正确办法。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/anthropic-open-weights-capability-threshold-2026/imgs/official/anthropic-distillation-illustration.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Anthropic 官方蒸馏攻击文章插图&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;图片来源：&lt;a class=&#34;link&#34; href=&#34;https://www.anthropic.com/news/detecting-and-preventing-distillation-attacks&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic 官方文章&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;最后才是 capability threshold（能力阈值）。Anthropic 的建议是，模型一旦在网络、生物或对齐风险上足够强，不管是开放还是闭源，都应接受发布前的强制安全测试。能力较低的创业团队和学术模型可以豁免，避免合规成本把所有开源项目一起压住。&lt;/p&gt;
&lt;p&gt;训练、复制、发布是三段不同的链路。它们未必能直接拼成一套完整政策，却比“见到开放权重就管”更贴近风险出现的位置。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/anthropic-open-weights-capability-threshold-2026/imgs/capability-governance-chain.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/anthropic-open-weights-capability-threshold-2026/imgs/capability-governance-chain_hu_dbb8f1aba664cf46.png 480w, https://blog.ccino.org/p/anthropic-open-weights-capability-threshold-2026/imgs/capability-governance-chain_hu_92251afe96296bec.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;“对足够强的模型做测试”很容易获得赞同，执行起来却并不轻松。&lt;/p&gt;
&lt;p&gt;阈值按什么定？模型能写出漏洞利用代码，算不算跨线？它能解释生物实验步骤，但不能独立规划完整攻击，是否需要纳入？模型在受控测试里表现一般，放进 Agent 工作流后却能调用工具、连续迭代，风险要怎么算？参数量和上下文长度回答不了这些问题。&lt;/p&gt;
&lt;p&gt;白宫此前讨论高风险模型审查时，也有类似分歧。欧盟式风险分级更看使用场景和对公民权利的影响；能力阈值路线则关心模型本身会不会显著降低攻击门槛。两者可能重叠，关注点却不同。&lt;/p&gt;
&lt;p&gt;Anthropic 没有给出一张现成的阈值表，只提出不要预先认定开放模型一定更利于防御，或一定更容易做安全，应让发布前测试提供证据。这个方向有用，但它不会自动解决谁来测试、标准是否公开、各国是否互认、模型更新后要不要复测。把分界线从“开放/闭源”挪到“能力阈值”，等于把争论放到了更难却也更具体的地方。&lt;/p&gt;
&lt;h2 id=&#34;别把政策口径当成模型选型建议&#34;&gt;别把政策口径当成模型选型建议
&lt;/h2&gt;&lt;p&gt;Anthropic 的公告不会替企业完成模型选型。它没有建议每个团队去部署开放权重模型，也没有替供应链、数据合规和模型安全问题给出答案。&lt;/p&gt;
&lt;p&gt;团队选模型时，仍要看数据能不能出域、推理服务是否稳定、版本能不能回滚、出了问题由谁响应。开放权重给了更多自主权，也把部署、监控、权限和更新责任更多地交给使用者。&lt;/p&gt;
&lt;p&gt;能力测试处理的是“哪些模型不该无条件扩散”；企业选型处理的是“这套能力能不能安全、稳定地进入我的工作流”。这两件事会互相影响，不能互相代替。&lt;/p&gt;
&lt;p&gt;所以此前关于 Kimi K3、Inkling 等模型的讨论，更适合围绕参数、上下文、成本或定制能力展开，它们问的是模型怎么被采用。Anthropic 这份公告关心的则是：能力继续往前走后，哪些能力不该只靠市场和厂商自觉来决定如何扩散。&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;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://www.anthropic.com/news/position-open-weights-models&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic：Our position on open-weights models&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.anthropic.com/news/detecting-and-preventing-distillation-attacks&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic：Detecting and preventing distillation attacks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.aisi.gov.uk/blog/how-far-behind-the-frontier-are-leading-open-weight-models-on-cyber&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;UK AI Security Institute：How far behind the frontier are leading open-weight models on cyber?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://darioamodei.com/essay/the-adolescence-of-technology&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic：The Adolescence of Technology&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上来源用于理解 Anthropic 对开放权重、模型蒸馏和前沿模型安全测试的公开政策口径，不等同于对其风险判断、监管路径或地缘政治主张的独立验证。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>当浏览器成为 Agent 的运行时：稀缺的是隔离的执行空间</title>
        <link>https://blog.ccino.org/p/browser-agent-runtime-isolated-spaces-2026/</link>
        <pubDate>Mon, 27 Jul 2026 08:30:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/browser-agent-runtime-isolated-spaces-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/browser-agent-runtime-isolated-spaces-2026/imgs/cover.png" alt="Featured image of post 当浏览器成为 Agent 的运行时：稀缺的是隔离的执行空间" /&gt;&lt;p&gt;浏览器 Agent（浏览器智能体）现在已经很会点网页了。它会打开页面、读取表格、填写表单、等待结果，偶尔还能把一段冗长的后台操作跑完。演示视频里往往只需要一句自然语言指令：Agent 找到按钮，绕过一个报错，再把结果交回来。&lt;/p&gt;
&lt;p&gt;可把它放进日常工作，麻烦通常从第二步才开始。&lt;/p&gt;
&lt;p&gt;假设你正在客户后台核对一笔退款，同时让 Agent 去 CRM 补全十条线索。它得使用真实登录态，也得打开真实网页；可你不会希望它把当前订单页切走，更不希望它碰到你正在处理的退款。接着你又开了第二个 Agent 查竞品价格。问题马上从“会不会点”变成了：这三个人和机器，怎样共用一个浏览器而不互相碍事？&lt;/p&gt;
&lt;p&gt;这篇文章从开源项目 &lt;a class=&#34;link&#34; href=&#34;https://github.com/citrolabs/ego-lite&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ego Lite&lt;/a&gt; 的公开说明出发。它试图把浏览器做成一个供人和多个 Agent 共用的执行环境：每个 Agent 任务放进独立的 Space（隔离执行空间），用户自己的标签页继续留在原处。这当然不等于浏览器自动化已经安全可靠了，但它把一个容易被演示掩盖的问题摆了出来：&lt;strong&gt;会操作网页的模型已经不少，能让这些操作安稳落地的执行环境却还很缺。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;自动化框架为什么总会卡在真实浏览器这里&#34;&gt;自动化框架，为什么总会卡在“真实浏览器”这里
&lt;/h2&gt;&lt;p&gt;传统浏览器自动化的逻辑很直接：启动一个受控制的浏览器，脚本或 Agent 调用 &lt;code&gt;navigate&lt;/code&gt;、&lt;code&gt;click&lt;/code&gt;、&lt;code&gt;fill&lt;/code&gt; 等接口，让它把任务做完。&lt;/p&gt;
&lt;p&gt;这套方式适合测试、爬取和一次性流程。但一旦任务需要进入人的真实工作环境，它会碰到两个尴尬。&lt;/p&gt;
&lt;p&gt;第一，自动化浏览器通常是另一套浏览器。用户已登录的服务、保存的书签、经常使用的扩展和本地偏好并不在里面。重新登录不只是麻烦，有些企业服务还会触发 MFA、设备验证或风控。于是原本宣称“帮我跑个流程”的 Agent，常常先卡在“请把登录状态搬过去”。&lt;/p&gt;
&lt;p&gt;第二，就算 Agent 直接操作用户正在使用的浏览器，体验也不一定更好。它为了找一个按钮切走当前页面，鼠标和焦点被抢占；多个任务同时跑时，标签页被来回切换。人会担心它下一步要做什么，Agent 也容易因为页面状态变化而失去上下文。&lt;/p&gt;
&lt;p&gt;Ego Lite 的公开设计是把这两个问题合在一起处理。它允许用户在首次运行时选择迁移 Chrome 数据，包括登录态、Cookie、扩展和书签；但 Agent 接到任务后不会接管用户面前的标签页，而是在自己的 Space 中打开页面、读取 snapshot、执行操作并回报结果。&lt;/p&gt;
&lt;p&gt;这里不必把它理解成某个 API 设计得多巧。真正变化的是，浏览器状态开始被当成一种需要分配的资源。登录态也不是“自动化时顺手带过去的配置”，它决定了 Agent 能进哪些系统、看到哪些数据、能以谁的身份完成什么动作。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/browser-agent-runtime-isolated-spaces-2026/imgs/official/ego-lite-banner.png&#34;
	width=&#34;2880&#34;
	height=&#34;1620&#34;
	srcset=&#34;https://blog.ccino.org/p/browser-agent-runtime-isolated-spaces-2026/imgs/official/ego-lite-banner_hu_fed31e713198236d.png 480w, https://blog.ccino.org/p/browser-agent-runtime-isolated-spaces-2026/imgs/official/ego-lite-banner_hu_146e1f8a02160164.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Ego Lite 官方项目横幅&#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;em&gt;图片来源：&lt;a class=&#34;link&#34; href=&#34;https://github.com/citrolabs/ego-lite&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;citrolabs/ego-lite 官方仓库&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;一个浏览器里至少有三种东西要分开&#34;&gt;一个浏览器里，至少有三种东西要分开
&lt;/h2&gt;&lt;p&gt;把浏览器视为 Agent 的 runtime（运行时），并不只是多开几个窗口，而是要把原本混在一起的东西拆开。&lt;/p&gt;
&lt;h3 id=&#34;人正在做的事不能变成-agent-的副作用&#34;&gt;人正在做的事，不能变成 Agent 的副作用
&lt;/h3&gt;&lt;p&gt;用户自己的前台标签页里，往往堆着很多临时状态：一封还没发出的邮件、一个不想给自动化任务看的页面，或者某个需要人工判断的后台记录。&lt;/p&gt;
&lt;p&gt;如果 Agent 可以任意切换、关闭或复用这些页面，任何后台任务都可能破坏人的工作。更糟的是，用户很难分辨某个页面变化到底来自自己，还是来自某个正在运行的 Agent。&lt;/p&gt;
&lt;p&gt;Ego Lite 给出的 Space 做法很直白：人的标签页归人，Agent 的页面归 Agent。按项目说明，用户能看到哪个 Space 正在执行任务，也能随时接管或停止。这个设计不只是多了一个分栏，它让“谁正在操作哪个页面”有了明确归属。&lt;/p&gt;
&lt;p&gt;长任务里，用户未必需要盯着每个点击，却应当能在发现异常时找到任务、暂停执行，而不必在一堆标签页里猜发生了什么。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/browser-agent-runtime-isolated-spaces-2026/imgs/human-agent-spaces.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/browser-agent-runtime-isolated-spaces-2026/imgs/human-agent-spaces_hu_8ca7b8afc1246e20.png 480w, https://blog.ccino.org/p/browser-agent-runtime-isolated-spaces-2026/imgs/human-agent-spaces_hu_f1a39c2c0a6b32b3.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;人的标签页与 Agent Space 各自运行，彼此互不干扰&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;多个-agent-的任务不能共用一个页面历史&#34;&gt;多个 Agent 的任务，不能共用一个页面历史
&lt;/h3&gt;&lt;p&gt;单 Agent 演示里，页面通常被假定为稳定的。多 Agent 一起跑时，这个前提很快就不存在了。&lt;/p&gt;
&lt;p&gt;一个 Agent 在供应商网站筛选信息，另一个 Agent 同时更新 CRM；如果两者共享同一组标签页、地址栏历史和页面焦点，任何一个任务的跳转都可能让另一个任务读到错误页面。即使最终没有误操作，反复重新识别页面也会增加工具调用和 token 消耗。&lt;/p&gt;
&lt;p&gt;Space 在这里更像工作区，而非单纯的隔离容器。每个 Space 对应一个 Agent 或一项任务，保留自己的导航路径、页面快照和执行状态。项目用“Claude Code 在十个并行 Space 中补充线索、Codex 在另一些 Space 中抓取竞品网站”来描述这种用法。&lt;/p&gt;
&lt;p&gt;它不能保证并发任务一定正确，却至少把最基础的冲突从“抢同一个浏览器”改成“各自管理自己的网页状态”。Agent 数量一多，能否留住任务边界，往往比模型会不会多调一个工具更早决定系统会不会失序。&lt;/p&gt;
&lt;h3 id=&#34;登录态能复用不等于权限可以无限扩张&#34;&gt;登录态能复用，不等于权限可以无限扩张
&lt;/h3&gt;&lt;p&gt;Chrome 登录态迁移是这类产品最省事、也最容易被低估的功能。&lt;/p&gt;
&lt;p&gt;它确实减少了摩擦：用户不用逐个服务重新授权，Agent 也能在已登录的系统里工作。但 Cookie、会话令牌和扩展数据并非普通文件，它们本身就是身份凭据。Agent 能复用这些状态，就可能拥有接近用户本人的访问能力。&lt;/p&gt;
&lt;p&gt;所以，Agent 待在自己的 Space 里，只能保证任务不互相干扰；它并没有自动获得恰当的授权边界。隔离的 Space 仍可能访问敏感后台，也仍可能创建、修改或提交数据。&lt;/p&gt;
&lt;p&gt;更可靠的产品设计，需要把两件事分开看：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;隔离&lt;/strong&gt;回答的是：哪个 Agent 在哪个页面、哪段会话里执行；&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;&lt;img src=&#34;https://blog.ccino.org/p/browser-agent-runtime-isolated-spaces-2026/imgs/browser-session-permissions.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/browser-agent-runtime-isolated-spaces-2026/imgs/browser-session-permissions_hu_d8640d506976e766.png 480w, https://blog.ccino.org/p/browser-agent-runtime-isolated-spaces-2026/imgs/browser-session-permissions_hu_f53ef3b9baa45b90.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;如果浏览器只是一个被远程驱动的画面，Agent 出错后，人通常只会看到“任务失败”。把它当成运行时，就得把任务的生命周期也接住：页面如何隔离、状态如何保留、谁能看到过程、谁能中途收回控制权。&lt;/p&gt;
&lt;p&gt;状态隔离、可观测性、控制权和审批，听上去像一套很规整的分层。实际产品里，它们往往同时出现。&lt;/p&gt;
&lt;p&gt;任务先得有自己的页面、导航记录和临时数据，才不至于相互污染。用户接着要知道 Agent 正在访问什么站点、卡在什么位置、是否在等待登录或确认；不需要展示模型完整的推理过程，但页面、动作和任务状态至少应该查得到。&lt;/p&gt;
&lt;p&gt;一旦流程会写数据，暂停、停止、接管和重试就不能只留在日志里。用户应该在关键节点看到明确的话，例如“将这十条线索写入 CRM”“提交该表单”“下载包含客户信息的文件”。查询公开资料和整理自己的草稿可以顺畅执行；付款、发邮件、改权限、导出数据则应该要求确认，或直接受组织策略限制。&lt;/p&gt;
&lt;p&gt;此前写过的“上下文策略”讨论的是如何依据任务历史决定 &lt;code&gt;ALLOW&lt;/code&gt;、&lt;code&gt;ASK&lt;/code&gt; 或 &lt;code&gt;DENY&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;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-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Browser Agent：在网页上读取和执行动作
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#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 容易互相抢页面；没有权限策略，隔离后的 Agent 仍可能做不该做的事；没有 Agent，浏览器运行时也只是一个更复杂的多窗口管理器。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/browser-agent-runtime-isolated-spaces-2026/imgs/official/ego-vs-agent-benchmark.png&#34;
	width=&#34;3600&#34;
	height=&#34;2652&#34;
	srcset=&#34;https://blog.ccino.org/p/browser-agent-runtime-isolated-spaces-2026/imgs/official/ego-vs-agent-benchmark_hu_391d024210ac4b85.png 480w, https://blog.ccino.org/p/browser-agent-runtime-isolated-spaces-2026/imgs/official/ego-vs-agent-benchmark_hu_8da22f2f99fdfea0.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Ego Lite 官方基准测试对比图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;135&#34;
		data-flex-basis=&#34;325px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;图片来源：&lt;a class=&#34;link&#34; href=&#34;https://github.com/citrolabs/ego-lite/blob/main/docs/assets/ego-vs-agent-benchmark.png&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;citrolabs/ego-lite 官方仓库&lt;/a&gt;。图中性能数据为项目方基准测试口径。&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;这和指给-ai-看是两件相邻的事&#34;&gt;这和“指给 AI 看”是两件相邻的事
&lt;/h2&gt;&lt;p&gt;我之前写过 &lt;a class=&#34;link&#34; href=&#34;https://blog.ccino.org/p/ai-pointer-interaction-paradigm-2026/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AI Pointer&lt;/a&gt;，关注的是用户怎样把屏幕对象交给 AI：不是把一切都重新描述进聊天框，而是直接指向“这个表格”“那张图”“这段文字”。它解决的是任务如何自然地开始。&lt;/p&gt;
&lt;p&gt;浏览器运行时处理的是后半段：当用户已经说“帮我把这些线索补全”之后，Agent 到哪里执行，如何使用必要的登录态，多个任务怎样并行，用户又怎样随时接回控制权。&lt;/p&gt;
&lt;p&gt;前者降低上下文搬运，后者避免执行过程失控。两条路线很容易在产品里相遇：对象入口让任务更容易发起，隔离的浏览器 Space 让任务有地方可靠地运行。&lt;/p&gt;
&lt;h2 id=&#34;不要把共享登录态包装成无成本便利&#34;&gt;不要把“共享登录态”包装成无成本便利
&lt;/h2&gt;&lt;p&gt;从公开说明看，Ego Lite 想提供的是一种很顺滑的体验：保留用户真实浏览器的数据，让不同 Agent CLI 通过 &lt;code&gt;ego-browser&lt;/code&gt; 接入，同时不打扰人正在使用的标签页。这对需要登录多个 SaaS 的知识工作场景确实有吸引力。&lt;/p&gt;
&lt;p&gt;但越顺滑，越需要问几个不那么讨喜的问题。&lt;/p&gt;
&lt;p&gt;Agent 是否应获得全部 Chrome Profile，还是只拿到某个工作账号？一个任务结束后，临时页面、下载文件和站点缓存应该保留多久？当 Agent 访问了带有个人信息的后台，后续导出、复制或外发动作如何被识别？用户接管某个 Space 后，原 Agent 是否应立即失去控制权？&lt;/p&gt;
&lt;p&gt;这些问题没有靠“更强的网页理解”自动解决的答案。它们依赖产品是否把身份、会话、任务和审批拆成了可管理的边界。&lt;/p&gt;
&lt;p&gt;因此，我不会把浏览器 Agent 的下一步理解为“让 AI 获得更多权限”。更合理的方向是：让它在需要权限时拿到足够但有限的能力，并且让人看得见、停得下、收得回。&lt;/p&gt;
&lt;h2 id=&#34;稀缺的不是自动点击而是一个能共用的执行环境&#34;&gt;稀缺的不是自动点击，而是一个能共用的执行环境
&lt;/h2&gt;&lt;p&gt;网页点击、表单填写和页面抓取会越来越便宜。模型更会看页面，工具更会操作浏览器，这些能力会持续变成基础设施。&lt;/p&gt;
&lt;p&gt;真正难的部分发生在它们进入真实工作流之后：用户已经登录了很多服务，多个 Agent 会同时执行任务，人还要继续正常使用电脑。此时，浏览器不再只是网页的显示器，也不只是给 Agent 调用的一组 API；它开始承担会话、身份、任务隔离、观测与控制的职责。&lt;/p&gt;
&lt;p&gt;Browser Agent 负责完成网页上的动作。浏览器运行时负责让这些动作各自待在正确的会话和任务边界里。权限策略负责判断哪些动作可以继续、哪些必须请人确认、哪些不该发生。&lt;/p&gt;
&lt;p&gt;把三者拼起来，才接近一个可以进入日常工作的 Agent 浏览器。少了其中任何一层，体验都会走向两个极端：要么 Agent 很聪明，却总要重新登录、抢标签页；要么它足够顺滑，却把身份和控制权一起交得太多。&lt;/p&gt;
&lt;p&gt;Ego Lite 是否会成为答案还很早。但它至少提醒了我们，下一代浏览器竞争不只在谁能帮你点得更快，也在谁能让人和 Agent 在同一个浏览器里，各自把事做完。&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/citrolabs/ego-lite&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;citrolabs/ego-lite：项目仓库与公开说明&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/trending&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub Trending&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.ccino.org/p/ai-pointer-interaction-paradigm-2026/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AI Pointer：提示词之后，下一个交互范式可能是「指给 AI 看」&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.ccino.org/p/contextual-agent-permissions-session-state-2026/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;同样一次 Git Push，为什么 Agent 有时该放行、有时必须拦住？&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上来源用于观察 Ego Lite 的公开产品设计、项目热度和相关的浏览器 Agent / 权限治理思路，不等同于对其安全性、隐私保护或性能表现的独立审计。GitHub Trending 仅作为项目关注度背景，不作为功能事实依据。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>模型不慢，卡在“切词”：为什么分词速度会成为 AI Agent 的隐藏瓶颈</title>
        <link>https://blog.ccino.org/p/tokenization-agent-latency-2026/</link>
        <pubDate>Thu, 23 Jul 2026 08:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/tokenization-agent-latency-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/tokenization-agent-latency-2026/imgs/cover.png" alt="Featured image of post 模型不慢，卡在“切词”：为什么分词速度会成为 AI Agent 的隐藏瓶颈" /&gt;&lt;p&gt;GitHub 上有个叫 &lt;a class=&#34;link&#34; href=&#34;https://github.com/marcelroed/gigatoken/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GigaToken&lt;/a&gt; 的开源项目，最近在 Hacker News 上拿到了 331 分、63 条评论。它做的事很具体：把语言模型的 tokenization（分词）做到 GB/s 级别；按项目公布的部分基准，相对 Hugging Face tokenizers 可快约 1000 倍。&lt;/p&gt;
&lt;p&gt;先别急着把这个数字当成结论。它来自项目自己的 benchmark，而不是一份独立复现报告。仓库使用双路 AMD EPYC 9565、Apple M4 Max 和 Ryzen 7 9800X3D 测试；最高倍率出现在 Rust 直接读取整文件、且输入没有预切分的路径上，对比库则走了预切分批处理。换到 SentencePiece（句子片段）类 tokenizer，增益可能只剩个位数到几十倍；若为了兼容 Hugging Face 或 tiktoken 的 Python 调用方式，速度也会掉下来。&lt;/p&gt;
&lt;p&gt;这个项目有意思的地方，不是它承诺了一个惊人的跑分，而是它逼人重新看一眼 Agent 的等待时间。模型开始输出前，程序往往还在整理它要读的材料。&lt;/p&gt;
&lt;p&gt;一次 Agent 回合，除了模型推理，还要做不少准备工作&lt;/p&gt;
&lt;p&gt;普通聊天的路径很短。你输入一句话，客户端把它编码成 token，模型处理输入，再逐字生成回复。输入短、轮次少，分词这一步通常埋在总延迟里，很难被人单独注意到。&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/tokenization-agent-latency-2026/imgs/agent-input-pipeline.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/tokenization-agent-latency-2026/imgs/agent-input-pipeline_hu_c91b078a7ad4764e.png 480w, https://blog.ccino.org/p/tokenization-agent-latency-2026/imgs/agent-input-pipeline_hu_99783e061e770b8f.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;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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-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;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#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;tokenization（分词）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;prefill（预填充：模型处理全部输入）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#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;分词不是 prefill。前者是把文本映射成 token ID；后者是模型真正读取这些 token、建立注意力状态。再往后，还有输出生成、网络传输、工具执行、检索和磁盘 I/O。任何一个环节都可能慢。&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;例如，第一次让 Agent 看一个仓库，它可能读了 README、配置和三个核心文件。工具调用回来以后，若运行时只是把“旧上下文 + 新日志”整段重拼，前面已经出现过的说明和代码还得再编码一次。回合多起来，重复工作也跟着堆上去。&lt;/p&gt;
&lt;p&gt;上下文窗口变大，确实让更多材料能装进一次请求；可每一轮放什么、哪些内容已经处理过、重复输入由谁承担延迟，还是得由运行时自己处理。&lt;/p&gt;
&lt;p&gt;对用户来说，表面症状通常是首个回复迟迟不来，或工具执行明明很快，Agent 却在两轮动作之间停顿很久。模型服务端可能在忙 prefill，也可能是客户端或运行时还在切分大段文本、序列化工具结果。没有分段埋点，团队往往会把这些等待统称为“模型慢了”。&lt;/p&gt;
&lt;p&gt;这正是 GigaToken 值得关注的地方。它不能证明每个 Agent 都卡在分词，也不该替代对整条调用链的测量。它只是把模型 API 前面那段常被忽略的输入管线，重新摆到了工程师面前。&lt;/p&gt;
&lt;h2 id=&#34;千倍提速该怎么读&#34;&gt;“千倍提速”该怎么读
&lt;/h2&gt;&lt;p&gt;GigaToken 的高性能路径很有针对性：它直接用 Rust 读取文件，尽量并行处理，绕开 Python 层的数据搬运，并利用 SIMD（单指令多数据）等底层优化。离线语料处理、批量索引、长文件预处理，或能直接控制输入管线的服务端任务，可能更容易吃到这类优化的好处。&lt;/p&gt;
&lt;p&gt;把它接进现有 Agent，并不会让所有交互立刻快千倍。至少有三件事要先算清。&lt;/p&gt;
&lt;p&gt;先分开看真实请求的耗时。大模型接收长输入时，prefill 往往本身就很重；工具调用如果耗时几秒，分词从 50 毫秒降到 1 毫秒，用户未必能感到同样数量级的变化。&lt;/p&gt;
&lt;p&gt;输入形态也会改变结果。整文件读取、预先切分的小批次、Python 字符串列表、流式增量文本，对缓存、并行度和内存访问模式的要求完全不同。项目仓库提到预 token 缓存有长尾问题，缓存规模可能很快膨胀，这部分成本不能略过。&lt;/p&gt;
&lt;p&gt;兼容性也有成本。GigaToken 提供 Hugging Face 和 tiktoken 兼容模式，不过项目说明，最高性能来自原生 API 和文件级路径。已经绑定 Python 生态的 Agent，能否替换、替换后 token 边界和特殊标记是否一致，都需要逐项验证。&lt;/p&gt;
&lt;p&gt;分词吞吐会不会成为瓶颈，取决于工作负载。大文件、离线批处理更有可能受影响；在线 Agent 是否受影响，得看自己的 trace（调用链追踪）。&lt;/p&gt;
&lt;h2 id=&#34;先别急着换分词器先把上下文浪费找出来&#34;&gt;先别急着换分词器，先把上下文浪费找出来
&lt;/h2&gt;&lt;p&gt;大多数团队甚至不需要改 tokenizer，也能让 Agent 少等一会儿。&lt;/p&gt;
&lt;p&gt;最直接的是按需读取。不要为了让模型“了解项目”，先把整个目录树和所有文件内容一口气送进去。先让 Agent 根据任务检索文件名、符号和少量片段，只有需要时才展开全文。这样既缩短输入准备，也减少模型在无关材料里走神的机会。&lt;/p&gt;
&lt;p&gt;接着是把重复内容变成引用，而不是副本。项目约定、环境信息、已读文件摘要可以保存为稳定状态；后续回合只追加变化的 diff、报错和新证据。一个运行时如果每轮都把完整 README、历史命令输出和旧补丁重发一遍，换再快的分词器也只是更快地做重复劳动。&lt;/p&gt;
&lt;p&gt;工具回执同样值得整理。命令输出不是越原始越好。测试失败时，保留失败用例、关键栈帧和环境差异，往往比把数千行日志完整塞回模型更能帮助下一步判断。日志需要全文时，可以让 Agent 显式展开，而不是默认携带。&lt;/p&gt;
&lt;p&gt;最后是把时间拆开记。至少分开记录：检索/文件读取、上下文拼接、分词、prefill、首 token、完整生成、工具执行。只有知道哪段在涨，才知道该优化缓存、调模型、缩上下文，还是换底层 tokenizer。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/tokenization-agent-latency-2026/imgs/agent-latency-breakdown.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/tokenization-agent-latency-2026/imgs/agent-latency-breakdown_hu_7a65eb65ecacd0a8.png 480w, https://blog.ccino.org/p/tokenization-agent-latency-2026/imgs/agent-latency-breakdown_hu_5c8b35112bf16121.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;这些做法听起来没有“千倍提速”那么醒目，却更接近 Agent 产品里的日常收益。因为它们同时减少了延迟、token 消耗和错误干扰。&lt;/p&gt;
&lt;h2 id=&#34;分词器上下文工程和-agent-harness各管一段&#34;&gt;分词器、上下文工程和 Agent harness，各管一段
&lt;/h2&gt;&lt;p&gt;这三件事经常被混在一起谈，实际职责很不一样。&lt;/p&gt;
&lt;p&gt;分词器负责把文本变成模型可处理的数字序列。它影响输入准备的速度、token 边界，以及某些语言和格式的编码效率。GigaToken 想优化的主要是这一层。&lt;/p&gt;
&lt;p&gt;Context Engineering（上下文工程）决定什么内容值得被送进去。它处理的是选择与组织：读哪些文件，保留哪些历史，如何压缩工具回执，何时引用缓存。即使分词速度不变，好的上下文工程也能让每一轮少处理大量无关文本。&lt;/p&gt;
&lt;p&gt;Agent harness（智能体运行框架）则把这些动作变成可控的循环：它调度工具、维护状态、控制权限、记录 trace，并在每轮之间决定是否继续、缩减上下文或交还给人。没有 harness，分词器再快也只是一段局部库；没有上下文工程，harness 仍可能反复把垃圾送进模型。&lt;/p&gt;
&lt;p&gt;因此，Agent 的端到端体验很少由单一组件决定。分词器解决“怎么把选定的文本尽快变成输入”，上下文工程解决“哪些文本应该被选定”，harness 解决“这个选择和执行循环如何被观察、约束与复用”。把三层分开测，才不会在模型侧盲目加预算，却错过了真正拖慢任务的那一段准备工作。&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/marcelroed/gigatoken/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GigaToken GitHub 仓库&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://news.ycombinator.com/item?id=49010167&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hacker News：GigaToken: ~1000x faster Language model tokenization&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/docs/tokenizers/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hugging Face Tokenizers 文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/openai/tiktoken&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI：Tiktoken&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上来源用于核对项目定位、基准条件和相关工具实现。GigaToken 的性能数字来自项目仓库基准，未等同于独立复现结果；实际收益取决于硬件、语言、输入形态、兼容模式以及整个 Agent 工作负载。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>WAIC 落幕之后：AI 全球治理不再只写原则，开始争夺谁来定义协作规则</title>
        <link>https://blog.ccino.org/p/waic-global-ai-governance-rules-2026/</link>
        <pubDate>Tue, 21 Jul 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/waic-global-ai-governance-rules-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/waic-global-ai-governance-rules-2026/imgs/cover.png" alt="Featured image of post WAIC 落幕之后：AI 全球治理不再只写原则，开始争夺谁来定义协作规则" /&gt;&lt;p&gt;2026 世界人工智能大会一结束，信息流很快又回到熟悉的节奏：谁发了模型，谁展示了芯片，谁的机器人动作更像真人。&lt;/p&gt;
&lt;p&gt;7 月 21 日，央视网发了一篇题为《“中国方案”为 AI 全球发展治理开创新局面》的报道。它没有提供多少适合做参数表的内容，却把话题拉回了一个更重要的方向：AI 越来越像基础设施之后，跨国使用它的人，准备怎么处理数据、责任和事故？&lt;/p&gt;
&lt;p&gt;同一届 WAIC 上，联合国秘书长古特雷斯在 7 月 17 日的开幕式发言中提出，AI 治理不能由少数国家或公司决定，每个国家都应有参与位置。次日，联合国技术特使阿曼迪普·辛格·吉尔在上海的高层会议上进一步把问题拆成 science（科学）、policy（政策）和 capacity（能力）三层：如果许多国家缺少算力、数据、人才与部署经验，原则和政策很难变成实际能力。&lt;/p&gt;
&lt;p&gt;这让 WAIC 的治理有了更具体的参照。它不只是“应该加强国际合作”的常规表述，而是和联合国刚刚启动的全球 AI 治理对话、科学评估以及能力建设网络链接在了一起。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/waic-global-ai-governance-rules-2026/imgs/official/waic-global-ai-governance-meeting-2026.jpg&#34;
	width=&#34;1800&#34;
	height=&#34;1269&#34;
	srcset=&#34;https://blog.ccino.org/p/waic-global-ai-governance-rules-2026/imgs/official/waic-global-ai-governance-meeting-2026_hu_acae7439584f90d5.jpg 480w, https://blog.ccino.org/p/waic-global-ai-governance-rules-2026/imgs/official/waic-global-ai-governance-meeting-2026_hu_6950211e919d2ad3.jpg 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;2026 WAIC 人工智能全球治理高级别会议现场&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;141&#34;
		data-flex-basis=&#34;340px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;图：2026 年世界人工智能大会人工智能全球治理高级别会议。来源：&lt;a class=&#34;link&#34; href=&#34;https://commons.wikimedia.org/wiki/File:Fakir_Mahbub_Anam_at_high-level_meeting_on_global_governance_of_artificial_intelligence,_World_Artificial_Intelligence_Conference,_Shanghai,_2026-07-18.jpg&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Press Information Department（Bangladesh）/ Wikimedia Commons&lt;/a&gt;，Public Domain。&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;/p&gt;
&lt;p&gt;这些不是会议室里才会出现的宏大问题。它们会出现在采购表、客户法务的问题清单、云服务区域选择和事故复盘里。很多团队现在还能靠人工逐项解释，是因为业务规模不大、覆盖地区不多。产品一旦进入更多市场，这套做法很难一直撑下去。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/waic-global-ai-governance-rules-2026/imgs/cross-border-responsibility-chain.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/waic-global-ai-governance-rules-2026/imgs/cross-border-responsibility-chain_hu_c7c135cb5e08dcc2.png 480w, https://blog.ccino.org/p/waic-global-ai-governance-rules-2026/imgs/cross-border-responsibility-chain_hu_95fcae65a6b6996e.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;WAIC 上关于全球协作的讨论因此值得看一眼。不是因为它会立刻改变某个 API，而是因为模型、数据和工具链已经跨过了公司的边界。规则如果各写各的，最后买单的往往是做产品的人：同一个能力，要维护几套说明、几套日志、几套审批流程。&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;标准更贴近实际。比如风险报告该包含哪些内容，模型调用记录怎么留，内容来源怎样标记，安全评估能不能被另一家机构读懂。这里的关键词是 interoperability（互操作性）：大家不必使用同一套技术栈，但至少应该能交换必要信息，不至于各自拿着一套别人看不懂的格式。&lt;/p&gt;
&lt;p&gt;这不只是技术白皮书里的愿望。联合国大学 2026 年关于 AI 安全治理互操作性的报告，把伦理、监管和标准之间能否衔接列为核心问题：规则彼此不兼容时，企业面对的不是一条更高的安全门槛，而是多套无法复用的合规流程。OECD 今年发布的负责任 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/waic-global-ai-governance-rules-2026/imgs/governance-interoperability-stack.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/waic-global-ai-governance-rules-2026/imgs/governance-interoperability-stack_hu_e3dfbcbfe854dd8.png 480w, https://blog.ccino.org/p/waic-global-ai-governance-rules-2026/imgs/governance-interoperability-stack_hu_9fde0b66929f93e4.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;模型服务商的承诺并不相同。有的强调不保留数据，有的提供区域部署，有的限制某些使用场景；团队在云端和本地模型之间切换时，改变的也不只是模型名。日志路径、数据边界、内容安全策略和客户承诺都可能跟着变。&lt;/p&gt;
&lt;p&gt;开源权重模型也是类似情况。能下载、能微调，当然降低了试用门槛；但一个模型可以自由获取，不代表它在所有行业和地区都能按同样方式部署。使用目的、部署环境、工具权限和事后责任会一起决定风险。将来如果不同地区要互认某种测试或风险说明，靠一份营销页面显然不够。&lt;/p&gt;
&lt;p&gt;事故排查则更直接。一个 AI 系统给出错误结果，问题可能来自基础模型、微调、RAG（检索增强生成）数据、外部工具调用，也可能是应用把模型建议执行得太激进。没有清楚的调用记录和复盘材料，几家公司很难把事情讲明白。所谓治理，落到这里，首先是让每一环都能留下可解释的痕迹。&lt;/p&gt;
&lt;h2 id=&#34;不妨盯住三个后续信号&#34;&gt;不妨盯住三个后续信号
&lt;/h2&gt;&lt;p&gt;联合国在 WAIC 上带来的不只是立场表达。公开信息显示，联合国大会支持的独立国际 AI 科学小组已经发布初步报告；全球 AI 治理对话的首次会议也在 7 月初于日内瓦举行。联合国方面把这些安排定位为共享专业知识、促进共同标准，并让发展中国家更能参与塑造 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 governance（AI 治理）常被理解成“模型越强，限制越多”。但对长期运营产品的人来说，它更像一套接口约定。&lt;/p&gt;
&lt;p&gt;规则负责说清最低边界：哪些数据不能随意流转，哪些风险要向用户说明，出了问题不能只让最末端的应用团队承担。协作则让不同公司、不同地区对这些边界有机会采用相近的表达和流程。只有规则，没有协作，最后容易变成一堆互不兼容的要求；只谈协作、不谈责任，又会变成无须兑现的口号。&lt;/p&gt;
&lt;p&gt;WAIC 的展台明年还会换，热门模型也会换。更值得跟踪的是：有没有人把这些抽象词落到可复用的格式、可参与的讨论和可追溯的事故记录上。那会比再多一份原则声明，更接近 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://news.un.org/en/story/2026/07/1167965&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;联合国新闻：古特雷斯在 WAIC 呼吁 AI 由全人类共同塑造&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.un.org/digital-emerging-technologies/content/un-envoy-technology-amandeep-singh-gill-calls-stronger-global-cooperation-ai-governance-waic&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;联合国数字与新兴技术办公室：技术特使在 WAIC 关于全球 AI 治理合作的讲话实录&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://digitallibrary.un.org/record/4096409/files/Interoperability_in_AI_Safety_Governance.pdf&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;联合国大学：Interoperability in AI Safety Governance（AI 安全治理的互操作性）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.oecd.org/en/publications/oecd-due-diligence-guidance-for-responsible-ai_41671712-en/full-report/component-4.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OECD：负责任 AI 尽职调查指南&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上来源用于确认公开发言、政策研究与报道口径。有关世界 AI 合作组织的具体组织架构、成员、职权或已达成制度安排，仍应以主办方、有关组织或正式公告的后续公开文件为准。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Linus Torvalds 给开源 AI 之争定调了：use it, fork it, or leave</title>
        <link>https://blog.ccino.org/p/linus-torvalds-ai-pragmatism-2026/</link>
        <pubDate>Fri, 17 Jul 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/linus-torvalds-ai-pragmatism-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/linus-torvalds-ai-pragmatism-2026/imgs/cover.jpg" alt="Featured image of post Linus Torvalds 给开源 AI 之争定调了：use it, fork it, or leave" /&gt;&lt;p&gt;2026 年 5 月，The Register 报道了一件让 Linux 内核维护者头疼的事：Linus Torvalds 自己说，内核私有的安全邮件列表（security mailing list）已经被 AI 生成的 bug 报告搞得&amp;quot;几乎无法管理&amp;quot;。几个月下来，这件事滚成了一场更大的争论，内核社区到底要不要禁掉 AI 生成的代码？吵到后面，还是 Torvalds 本人出来收的场。&lt;/p&gt;
&lt;p&gt;得先说明，文中他的原话基本来自 Phoronix、The Register、daily.dev 这些媒体的转述，我没逐条去翻内核邮件列表（LKML）原文，所以引述都标了出处，准确性以原始邮件列表为准。&lt;/p&gt;
&lt;h2 id=&#34;事情的起点bug-报告多到维护者看不过来&#34;&gt;事情的起点：bug 报告多到维护者看不过来
&lt;/h2&gt;&lt;p&gt;简单说，就是有一批研究团队开始拿 AI 工具去扫 Linux 内核找漏洞，扫完直接把结果投进安全邮件列表。麻烦在于这些工具挖出来的东西重复率极高，同一段代码、同一条疑似漏洞，被不同团队用不同模型反复报上来。维护者得从一大堆质量参差的报告里，把真正有用的几条挑出来，工作量一下子就顶上去了。The Register 的报道里，Torvalds 的原话是这个列表已经&amp;quot;几乎完全无法管理&amp;quot;（almost entirely unmanageable）。&lt;/p&gt;
&lt;p&gt;英文社区给这类批量生产、没人认真打磨的 AI 内容起了个专门的名字，叫 AI slop（直译大概是&amp;quot;泔水&amp;quot;，引申为垃圾内容）。它和 spam 还不太一样：spam 是有人故意恶心你，slop 更像无心之失，但最后把你淹没的效果差不多。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/linus-torvalds-ai-pragmatism-2026/imgs/illustration-1-ai-slop.jpg&#34;
	width=&#34;1536&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://blog.ccino.org/p/linus-torvalds-ai-pragmatism-2026/imgs/illustration-1-ai-slop_hu_aa17d38df2668f9a.jpg 480w, https://blog.ccino.org/p/linus-torvalds-ai-pragmatism-2026/imgs/illustration-1-ai-slop_hu_2464e2741a2b5adf.jpg 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;AI 生成的 bug 报告涌入内核安全邮件列表&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;真正吵起来的是另一个问题&#34;&gt;真正吵起来的，是另一个问题
&lt;/h2&gt;&lt;p&gt;bug 报告本身只是引子。真正把社区点着的，是一个顺着推下来的问题：既然 AI 生成的东西质量这么不稳，那干脆禁止 AI 生成的代码提交进内核，行不行？&lt;/p&gt;
&lt;p&gt;邮件列表立马分成两拨。要禁的那拨理由听着没毛病，AI 写的代码质量不可控，动不动还夹带幻觉（hallucination，就是 AI 一本正经地编出不存在的函数或 API），维护者凭空多出一堆评审活，一刀切最省心。反对的那拨则觉得，禁令挡不住真正想钻空子的人，反倒把老实标了&amp;quot;这段我用了 AI&amp;quot;的开发者给罚了。&lt;/p&gt;
&lt;h2 id=&#34;torvalds-怎么收场的&#34;&gt;Torvalds 怎么收场的
&lt;/h2&gt;&lt;p&gt;吵了几个月，Torvalds 下场了。综合 Phoronix 和 daily.dev 的报道，他几次表态合起来大概是这么个意思。&lt;/p&gt;
&lt;p&gt;他先给项目本身定了性，说 Linux 不是什么&amp;quot;反 AI 项目&amp;quot;。这一句是在提醒大家，别一上来就把开源和 AI 摆在对立面。&lt;/p&gt;
&lt;p&gt;然后他给评审的人立了个规矩：别再追着一段代码是不是 AI 生成的问了，看它写得对不对就行。按报道转述的意思，审查者（reviewer）该看的是代码本身的价值，不是它从哪来。&lt;/p&gt;
&lt;p&gt;最有 Linus 味的是后面那句，直接冲着批评者去的：use it, fork it, or leave，要么你用，要么你自己 fork 一个版本带走，要么你走人。意思很清楚，代码是开源的，你要是不满意现在的方向，fork 走就是了，没人拦你。ZDNet 后来把他这串话概括成一句话，AI 不过是又一个工具（just another tool）。&lt;/p&gt;
&lt;h2 id=&#34;这套态度为什么站得住&#34;&gt;这套态度为什么站得住
&lt;/h2&gt;&lt;p&gt;Torvalds 这套实用主义，值得往深了拆一步。&lt;/p&gt;
&lt;p&gt;按 Phoronix 的说法，他对&amp;quot;为什么不禁 AI 代码&amp;quot;给的理由非常实在：规矩是给守规矩的人设的，坏演员根本不搭理你。一条禁令真正能拦住的，是那些老实声明&amp;quot;我用了 AI&amp;quot;的人；而那些本来就想把 AI 代码伪装成人写的、混进来的人，压根不会把你的禁令当回事。最后就是老实人挨罚，钻空子的该咋样还咋样，这大概是最糟的结局了。&lt;/p&gt;
&lt;p&gt;再往里想一层。开源能活三十年，还能把高质量代码筛出来，靠的从来不是写代码的是不是人，而是那套认代码不认人的评审机制。一个补丁（patch）能不能进主线，看的是它有没有解决真问题、实现干不干净、有没有人认真做过代码审查（code review）。这套东西对 AI 写的内容天然中性，扛得过评审，谁写的不重要；扛不过，人写的也照样被打回来。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/linus-torvalds-ai-pragmatism-2026/imgs/illustration-2-code-review.jpg&#34;
	width=&#34;1536&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://blog.ccino.org/p/linus-torvalds-ai-pragmatism-2026/imgs/illustration-2-code-review_hu_5efab68197c5eded.jpg 480w, https://blog.ccino.org/p/linus-torvalds-ai-pragmatism-2026/imgs/illustration-2-code-review_hu_7f5198aa053382dd.jpg 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;代码质量是评审的唯一标尺，AI 写的和人写的拉到台上一视同仁&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;所以 Torvalds 这次护着的，其实是评审机制本身的权威。AI 让代码生产变便宜之后，这道权威不是该放松，而是更该抓紧，因为现在比过去任何时候都更需要有人能把关。&lt;/p&gt;
&lt;h2 id=&#34;这事跟中文开发者圈的关系&#34;&gt;这事跟中文开发者圈的关系
&lt;/h2&gt;&lt;p&gt;国内这两年对 AI 写代码的态度，有点像钟摆。一端是把 AI 编程吹到天上，恨不得所有代码都甩给模型；另一端是给 AI 代码扣一顶&amp;quot;原罪&amp;quot;的帽子，好像用了 AI，质量就天然矮一截，连带写代码的人都得低一头。这两种姿态看着相反，毛病是一样的，注意力全堆在&amp;quot;代码怎么来的&amp;quot;上面，没人在意&amp;quot;代码到底行不行&amp;quot;。&lt;/p&gt;
&lt;p&gt;Torvalds 给的是另一个方向：别纠结出处，拉到评审台上一样过，好的留，差的退。这话不性感，但不太容易跑偏，既不会让 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;换句话说，Torvalds 真正在护着的，就是那套评审机制。AI 让写代码变快、变便宜，可代码一多，需要有人认真把关的活儿反而更吃重，现在比过去任何时候都更缺不了这道关。要是因为怕 AI，就把评审标准放松，或者因为迷信 AI，干脆让模型替人拍板，那开源才算真出了问题。工具换了一茬又一茬，从邮件里的补丁，到 Git，再到 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.theregister.com/security/2026/05/18/linus-torvalds-says-ai-powered-bug-hunters-have-made-linux-security-mailing-list-almost-entirely-unmanageable/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Linus Torvalds says AI-powered bug hunters have made Linux security mailing list almost entirely unmanageable — The Register&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.phoronix.com/news/Torvalds-Linux-Kernel-AI-Slop&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Torvalds Tells Kernel Devs To Stop Debating AI Slop — Phoronix&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://daily.dev/posts/linus-torvalds-to-ai-critics-use-it-fork-it-or-leave-vc2bcux3e&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Linus Torvalds to AI Critics: Use It, Fork It, or Leave — daily.dev&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.zdnet.com/article/linus-torvalds-has-a-love-hate-relationship-with-ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Linus Torvalds has a love-hate relationship with AI — ZDNet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.tomshardware.com/software/linux/linus-torvalds-says-ai-bug-reports-have-made-the-linux-security-mailing-list-almost-entirely-unmanageable&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AI bug reports overwhelm Linux security list — Tom&amp;rsquo;s Hardware&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Reddit 社区讨论：&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/LocalLLaMA/comments/1uxbrw4/linus_torvalds_tells_people_to_stop_attacking/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;r/LocalLLaMA 原帖&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上来源为英文媒体报道与社区讨论，用于观察事件口径与公众反应；Torvalds 的原话以 LKML 邮件列表存档为准，文中引述均来自二手转述，不等于独立核实。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>打开仓库就能中招：Cursor 的 git.exe 0day，暴露了 AI IDE 最容易被忽略的一层信任边界</title>
        <link>https://blog.ccino.org/p/cursor-workspace-trust-boundary-2026/</link>
        <pubDate>Wed, 15 Jul 2026 08:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/cursor-workspace-trust-boundary-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/cursor-workspace-trust-boundary-2026/imgs/cover.png" alt="Featured image of post 打开仓库就能中招：Cursor 的 git.exe 0day，暴露了 AI IDE 最容易被忽略的一层信任边界" /&gt;
    &lt;blockquote&gt;
        &lt;p&gt;说明：本文基于安全厂商 Mindgard 于 2026 年 7 月 14 日发布的公开披露整理。文中关于漏洞触发条件、受影响版本和沟通时间线，均以研究方的测试与陈述为依据；Cursor 后续是否修复、具体影响范围如何，应以 Cursor 的官方安全公告和更新说明为准。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;很多开发者把“打开一个仓库”当成一件近乎只读的事：看 README、扫目录，决定要不要运行项目。&lt;/p&gt;
&lt;p&gt;但集成开发环境（IDE）不是文件浏览器。加载项目时，它会识别版本控制、寻找解释器、读取配置、启动语言服务、调用扩展。这个过程会把目录里的部分内容带入本机工具链。&lt;/p&gt;
&lt;p&gt;Mindgard 7 月 14 日公开的 Cursor Windows 问题，就落在这段容易被忽略的初始化流程里。按研究方描述，Cursor 加载项目时会寻找 Git 二进制文件；若工作区根目录存在同名的 &lt;code&gt;git.exe&lt;/code&gt;，Cursor 可能在没有点击、确认或提示的情况下执行它。研究方称，他们最初在 2025 年 12 月报告问题，到 7 月公开文章发布时，仍能在测试版本中复现。&lt;/p&gt;
&lt;p&gt;重点不在于 Agent 获得终端权限后会不会乱跑命令，也不在于恶意提示怎样污染模型上下文。更早的一步已经发生：IDE 加载不可信仓库时，是否把仓库里的内容混进了本机原本该使用的工具。&lt;/p&gt;
&lt;h2 id=&#34;问题不在-agent-开始执行之后&#34;&gt;问题不在 Agent 开始执行之后
&lt;/h2&gt;&lt;p&gt;Cursor、Claude Code、Codex 能读代码、改文件、跑测试、调终端，所以安全讨论常常围着两个问题转：用户是否授权了命令执行，一次工具调用是否该弹确认。&lt;/p&gt;
&lt;p&gt;这种讨论默认了一个前提：真正开始执行任务前，环境已经可信。&lt;/p&gt;
&lt;p&gt;Mindgard 披露的情况不符合这个前提。按其文章描述，问题出在 Cursor 查找 Git 的阶段。Cursor 需要确认当前项目的版本控制状态，因此解析 Git 工具位置；研究方发现，工作区本身被纳入查找范围。一个本应只放项目文件的目录，也就可能被当成工具所在位置。&lt;/p&gt;
&lt;p&gt;这是传统的路径解析（path resolution，路径解析）问题，和模型能力无关。不过 AI 原生 IDE 改变了它的使用场景：开发者会从 issue、演示项目、开源仓库或聊天链接直接拉代码，然后让工具立即理解项目。仓库既是待阅读的源代码，也是 IDE 初始化、Agent 规划与工具发现的起点。&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;IDE 要判断根目录是不是 Git 仓库，寻找 &lt;code&gt;git&lt;/code&gt;，读取忽略规则和项目配置；语言服务会扫描依赖、索引符号；扩展则根据文件类型和工作区设置决定是否启动。有些项目还会提示安装插件、恢复开发容器或加载任务定义。&lt;/p&gt;
&lt;p&gt;没有这些动作，IDE 很难做到开箱即用。真正需要区分的是两种对象：&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;：Git、解释器、构建程序、扩展、系统命令。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;仓库里的源代码、文档和配置，应该先按外部输入处理；Git、解释器、构建程序、扩展和系统命令，则应来自受管理的开发环境。两类内容混在一起后，仓库就不只是描述“项目需要什么”，也会影响“宿主机实际执行什么”。&lt;/p&gt;
&lt;p&gt;Mindgard 的演示使用了无害程序作为概念验证，并展示了 Cursor 启动与同名程序进程创建之间的关联。无需复现攻击步骤，问题已经足够清楚：如果 IDE 在加载阶段执行工作区内的同名二进制，“我只是打开看看”并不等于没有执行风险。&lt;/p&gt;
&lt;p&gt;这不是普通功能 bug。它涉及的是仓库和宿主工具之间原本应当清晰的边界。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/cursor-workspace-trust-boundary-2026/imgs/workspace-trust-boundary.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/cursor-workspace-trust-boundary-2026/imgs/workspace-trust-boundary_hu_64afd967eaecd069.png 480w, https://blog.ccino.org/p/cursor-workspace-trust-boundary-2026/imgs/workspace-trust-boundary_hu_82ba34c71085216e.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;和-prompt-injectionagent-白名单的边界在哪&#34;&gt;和 Prompt Injection、Agent 白名单的边界在哪
&lt;/h2&gt;&lt;p&gt;AI 编程工具的安全新闻很多，很容易被压缩成一句“Agent 很危险”。这种说法没有帮助，因为不同问题的控制点不一样。&lt;/p&gt;
&lt;p&gt;此前写 Prompt Injection（提示词注入）时，关注的是 Agent 读取 issue、评论、文档或网页后，会不会把恶意文本当作指令，偏离原来的任务。这条链路从&lt;strong&gt;不可信文本进入决策&lt;/strong&gt;开始。&lt;/p&gt;
&lt;p&gt;关于 EDR（端点检测与响应）和白名单的文章，则看的是 Agent 已经拿到终端、浏览器或网络能力以后，下载、重试、凭据访问为什么会触发端点防护。这是&lt;strong&gt;已获授权的自动化进入系统行为&lt;/strong&gt;的问题。&lt;/p&gt;
&lt;p&gt;Cursor 这次披露更靠前：IDE 还在加载 workspace（工作区）、寻找基础工具时，仓库内的可执行内容是否已经混入宿主工具链。它不必等待模型读到恶意指令，也不需要用户给 Agent 下达危险任务。&lt;/p&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;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;Agent 读到了谁写的指令？&lt;/td&gt;
					&lt;td&gt;内容隔离、指令层级、工具确认&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;执行层&lt;/td&gt;
					&lt;td&gt;Agent 被授权后实际做了什么？&lt;/td&gt;
					&lt;td&gt;任务边界、最小权限、EDR 审计&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;加载层&lt;/td&gt;
					&lt;td&gt;IDE 在打开仓库时信任了什么？&lt;/td&gt;
					&lt;td&gt;工具路径、工作区隔离、宿主机执行策略&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;确认框不应只放在“Agent 即将执行命令”的最后一步。项目加载本身已经包含了值得审计的决策。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/cursor-workspace-trust-boundary-2026/imgs/rule-injection-chain.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/cursor-workspace-trust-boundary-2026/imgs/rule-injection-chain_hu_f11e510bcd48ea54.png 480w, https://blog.ccino.org/p/cursor-workspace-trust-boundary-2026/imgs/rule-injection-chain_hu_870bd7d2c538af1.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;外部规则进入 IDE 的注入链路&#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;对个人开发者，实用的做法很简单：来源不清楚的仓库，第一次不要放到存着日常凭据、SSH key、浏览器登录态和公司代码的主力 Windows 环境里打开。&lt;/p&gt;
&lt;p&gt;这不等于把所有 GitHub 项目都当恶意软件。常见开源依赖、内部仓库和经过 code review 的项目，仍可走正常流程。需要额外处理的，往往是陌生 issue、私信、压缩包、临时 demo、漏洞复现仓库，或一句“帮忙看一下这个项目”背后的链接。&lt;/p&gt;
&lt;p&gt;第一次接触时，把它放到隔离环境里会更合适：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用 Windows Sandbox、虚拟机或独立测试设备打开来源不明的项目；&lt;/li&gt;
&lt;li&gt;在隔离环境中不要登录个人浏览器、代码托管平台或公司 VPN；&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;img src=&#34;https://blog.ccino.org/p/cursor-workspace-trust-boundary-2026/imgs/safe-workspace-workflow.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/cursor-workspace-trust-boundary-2026/imgs/safe-workspace-workflow_hu_d187405b77a1253b.png 480w, https://blog.ccino.org/p/cursor-workspace-trust-boundary-2026/imgs/safe-workspace-workflow_hu_5a5e434253944b54.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;“不要打开不可信代码”在企业里只是第一道提醒。研发要看 issue、跑 PoC、评估供应商示例；彻底禁止外部仓库既不现实，也容易把行为推到缺少记录的个人环境中。&lt;/p&gt;
&lt;p&gt;更实际的是把开发环境分层，而不是让所有人都在同一台高信任桌面上处理所有代码。&lt;/p&gt;
&lt;p&gt;外部 demo、漏洞验证、客户提供的代码和临时脚本，先进入没有生产凭据、没有内部网络直通权限的分析环境。这个环境可以是托管虚拟桌面、受控 VM，也可以是有明确销毁周期的沙箱。&lt;/p&gt;
&lt;p&gt;对受管理的 Windows 设备，可评估 AppLocker 或 Windows App Control 一类机制，限制开发工作区中不应直接启动的可执行内容。规则必须结合公司目录、签名策略和开发流程来设计。只拉黑一个文件名并不可靠，攻击者能改名，研发也会有合理的本地构建需求。目标是让“从临时工作区启动未知二进制”成为可见、可审计、可收紧的事件。&lt;/p&gt;
&lt;p&gt;EDR 也不该因为父进程叫 Cursor 或其他 AI IDE 就自动放行。进程树、命令行、工作区路径、文件来源和用户身份仍应被记录。出现异常时，安全团队需要知道的不是“某个 IDE 可疑”，而是某位用户在什么隔离等级的工作区加载项目后，哪个子进程从哪里启动。&lt;/p&gt;
&lt;p&gt;这些控制不能代替厂商修复，只能为产品缺陷增加几层限制。即使路径解析出了问题，未知仓库里的程序也不该轻易拿到主力开发环境的执行条件。&lt;/p&gt;
&lt;h2 id=&#34;ai-ide-的初始化也该纳入安全设计&#34;&gt;AI IDE 的初始化，也该纳入安全设计
&lt;/h2&gt;&lt;p&gt;AI IDE 的吸引力在于省掉许多手工操作：识别仓库、理解依赖、补全环境，再把 Agent 带进真实任务。但“自动识别”并不只是体验优化。它始终在判断，当前文件、路径和工具能被信任到什么程度。&lt;/p&gt;
&lt;p&gt;对开发者而言，打开项目不是绝对安全的起点，而是一次权限和信任的升级。对产品团队而言，Git 查找、语言服务启动、扩展加载和任务发现，也不只是体验细节。&lt;/p&gt;
&lt;p&gt;Agent 权限解决“它接下来能做什么”；Prompt Injection 解决“它为什么会被带偏”；工作区加载安全则要先解决“它还没开始执行任务时，哪些内容已经被当成工具”。&lt;/p&gt;
&lt;p&gt;把问题拆开，修复路径才会清楚。AI IDE 只是把过去由人手动确认的一些步骤提前了，安全措施也应该提前：在工具真正开始工作前，先把不可信仓库和可信开发环境隔开。&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://mindgard.ai/blog/cursor-0day-when-full-disclosure-becomes-the-only-protection-left&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Mindgard：Cursor 0day: When Full Disclosure Becomes the Only Protection Left&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://news.ycombinator.com/item?id=48910676&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hacker News：Cursor 0day: When Full Disclosure Becomes the Only Protection Left&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://learn.microsoft.com/windows/security/application-security/application-control/app-control-for-business/applocker/applocker-overview&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Microsoft Learn：AppLocker overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://learn.microsoft.com/windows/security/application-security/application-control/app-control-for-business/appcontrol&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Microsoft Learn：Windows App Control overview&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上公开来源用于说明研究方的披露、社区讨论与 Windows 应用控制机制。漏洞触发条件和受影响版本主要来自 Mindgard 的测试陈述；本文不构成对 Cursor 当前版本状态的独立认证，也不能替代组织针对自身设备、代码和凭据范围进行的安全评估。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>同样一次 Git Push，为什么 Agent 有时该放行、有时必须拦住？</title>
        <link>https://blog.ccino.org/p/contextual-agent-permissions-session-state-2026/</link>
        <pubDate>Tue, 14 Jul 2026 08:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/contextual-agent-permissions-session-state-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/contextual-agent-permissions-session-state-2026/imgs/cover.png" alt="Featured image of post 同样一次 Git Push，为什么 Agent 有时该放行、有时必须拦住？" /&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/contextual-agent-permissions-session-state-2026/imgs/cover.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/contextual-agent-permissions-session-state-2026/imgs/cover_hu_b0f343c059933a4d.png 480w, https://blog.ccino.org/p/contextual-agent-permissions-session-state-2026/imgs/cover_hu_e40ae4ea947b6444.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;同样一次 Git Push，为什么 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;假设你让一个 Agent 帮忙整理客户反馈，最后它准备把一份总结推到 GitHub。单看这一步，很多系统只能给出两个选择：允许，或者不允许。&lt;/p&gt;
&lt;p&gt;可问题不在这个 push 本身。它刚才读的是一份公开的 issue 列表，还是一份带客户报价和联系人信息的内部文档？它是在用户指定的仓库里改一个 README，还是先浏览了来路不明的网页，接着突然要把结果提交到另一个仓库？它在过去十分钟里调用了两次工具，还是已经连续重试几十次、花掉了一大笔模型预算？&lt;/p&gt;
&lt;p&gt;同一个动作，放进不同的会话历史，含义完全不同。可大多数 Agent 权限系统，仍然在按“这一刻的工具调用”做判断。&lt;/p&gt;
&lt;p&gt;Databricks 在 7 月介绍开源 meta-harness &lt;strong&gt;Omnigent&lt;/strong&gt; 时，提出了一个更贴近这类问题的做法：策略不只看当前事件，还保存这次会话里已经发生的关键事情。它把这种机制称为 &lt;strong&gt;contextual policies（上下文策略）&lt;/strong&gt;。策略可以记住 Agent 读过什么、调用过几次工具、累计了多少风险或花了多少钱，再决定下一个动作该 &lt;code&gt;ALLOW&lt;/code&gt;、&lt;code&gt;ASK&lt;/code&gt; 还是 &lt;code&gt;DENY&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;换句话说，权限不应只绑定某个进程或某个工具，还应绑定一段有来龙去脉的任务。&lt;/p&gt;
&lt;h2 id=&#34;为什么一条-git-push-规则不够用&#34;&gt;为什么一条 &lt;code&gt;git push&lt;/code&gt; 规则不够用
&lt;/h2&gt;&lt;p&gt;传统权限系统擅长管理稳定对象：服务账号能读哪个 bucket，CI 能部署到哪个环境，应用能不能访问摄像头。因为这些对象、目标和动作通常不会频繁变化。&lt;/p&gt;
&lt;p&gt;Agent 的工作方式恰好相反。它会拆任务、读文件、搜网页、产生中间结果，再根据结果换一种工具或调整步骤。提前把它会用到的每个工具列成清单不现实；只看进程名，也解释不了一项操作为什么此刻合理、换个上下文又变得可疑。&lt;/p&gt;
&lt;p&gt;例如，给 &lt;code&gt;git push&lt;/code&gt; 做一个简单规则：允许，开发流程会更顺；禁止，安全边界更清楚。但两种做法都太粗。&lt;/p&gt;
&lt;p&gt;一个正常的场景是，开发者让 Agent 修复测试。Agent 只在当前项目里读代码、改文件、跑测试，最后向同一个受控仓库提交变更。这次 push 的可解释性很强。&lt;/p&gt;
&lt;p&gt;另一个场景是，Agent 先从外部网页复制了长段内容，又读取了本机的机密配置，随后要把一个新建文件推送到外部仓库。即使最后的 API 调用仍然只是 &lt;code&gt;git push&lt;/code&gt;，它的风险已经变了。&lt;/p&gt;
&lt;p&gt;如果策略只认识“是否允许 git push”，就不得不在便利和安全之间二选一。实际工作里，真正需要判断的是：&lt;strong&gt;这个 push 出现在怎样的执行路径里？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这也是为什么企业碰到 Agent 告警后，往往会走向两个极端：要么给整个 Agent 进程加白名单，后面的操作都跟着变成“可信”；要么每次工具调用都弹窗，用户最后只是机械地点“允许”。&lt;/p&gt;
&lt;p&gt;上下文策略的目标没那么宏大：让常规路径少被打断，把确认和拦截留给那些已经出现异常信号的会话。&lt;/p&gt;
&lt;h2 id=&#34;一次会话里策略该保留哪些线索&#34;&gt;一次会话里，策略该保留哪些线索
&lt;/h2&gt;&lt;p&gt;要让策略“看见上下文”，不需要把 Agent 的每一条日志都丢进判断器。那会让成本和维护难度一起上升。先把会话历史压缩成少数会影响决策的状态，通常已经足够。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/contextual-agent-permissions-session-state-2026/imgs/session-context-signals.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/contextual-agent-permissions-session-state-2026/imgs/session-context-signals_hu_33676644b8ec157.png 480w, https://blog.ccino.org/p/contextual-agent-permissions-session-state-2026/imgs/session-context-signals_hu_765e8b828f57021b.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Agent 权限策略需要保留的四类会话线索&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#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;假如用户说“更新这份 Slides”，那么 Agent 读取、修改这份演示文稿通常是合理的；它突然调用 GitHub 工具，或者准备向外部邮箱发附件，就应该被重新审视。Omnigent 将这种思路称为 &lt;strong&gt;intent-based authorization（基于意图的授权）&lt;/strong&gt;：策略保存初始任务意图，再检查每个后续工具调用是否还在这个边界内。&lt;/p&gt;
&lt;p&gt;这比单纯的工具 allow-list 更细。你不必永远禁用 GitHub，也不必给每次 GitHub 操作人工确认；只需要在“更新 Slides”的任务里，把无关的 GitHub 操作升格为 &lt;code&gt;ASK&lt;/code&gt;。&lt;/p&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;很多泄露事故并不是由“读取机密文件”单独造成的，而是由读取之后的写入或外发造成的。Agent 在同一会话里先打开了机密文档，之后再把摘要写入一个它刚创建的普通文档，或者发给外部收件人，风险才真正出现。&lt;/p&gt;
&lt;p&gt;Databricks 给出的 Google Drive 例子很直观：默认情况下，Agent 可以自由编辑本次会话中自己创建的文档；可一旦它打开了被标记为机密的文件，策略就收紧，写入被限制在机密集合内，避免把内容“向下写”到不受保护的位置。&lt;/p&gt;
&lt;p&gt;这里的关键不是给“写文档”工具贴上危险标签，而是记录数据流向。一个本来无害的写操作，可能因为之前读取了敏感内容而变得不合适。&lt;/p&gt;
&lt;p&gt;对本地 Agent 来说，这个状态可以很朴素：是否读取过 &lt;code&gt;.env&lt;/code&gt;、凭据目录、受限工作区或标记为机密的知识库；后续的上传、邮件、外部 Git push 就以此作为额外条件。先把最容易造成影响的几类数据源标出来，比试图自动给所有文件分级更现实。&lt;/p&gt;
&lt;h3 id=&#34;3-风险是怎么累积的&#34;&gt;3. 风险是怎么累积的
&lt;/h3&gt;&lt;p&gt;第三条状态是会话风险分数。&lt;/p&gt;
&lt;p&gt;单次网页搜索未必有问题。单次读取一个文件也未必有问题。可如果一个 Agent 连续访问外部内容、读取敏感数据、尝试执行系统命令、反复更换下载方式，安全团队通常会比看第一步时更谨慎。&lt;/p&gt;
&lt;p&gt;上下文策略可以把这类信号累积成一个分数。低分时，常规工具调用直接放行；分数超过阈值后，外发、删除、权限提升等动作切换成 &lt;code&gt;ASK&lt;/code&gt;；再高一些，就直接 &lt;code&gt;DENY&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;这种设计的好处是，Agent 不必每迈一步都停下来问人。它只有在会话确实开始偏离普通路径时才需要人工介入。&lt;/p&gt;
&lt;p&gt;分数也不该被理解成神秘的“AI 风险判定”。早期规则完全可以是显式的：读取受限目录加多少分，访问外部网页加多少分，尝试写启动项或上传文件加多少分；这些分值可以随着告警和误报复盘慢慢调整。可解释性比一开始追求精确更重要。&lt;/p&gt;
&lt;h3 id=&#34;4-预算和重试有没有失控&#34;&gt;4. 预算和重试有没有失控
&lt;/h3&gt;&lt;p&gt;安全和成本常常被分成两个系统管理，但对长期运行的 Agent，它们都属于会话状态。&lt;/p&gt;
&lt;p&gt;一个 Agent 在预算内完成一项资料整理，和它卡在错误路径上不断重试、反复调用昂贵模型，本质上都需要一个“该不该继续”的判断。Omnigent 的成本策略会记录单次会话的模型花费：越过软阈值时询问用户，达到硬上限后阻止继续调用昂贵模型，并允许切换到更便宜的模型。&lt;/p&gt;
&lt;p&gt;同样的逻辑也能用于工具重试。连续换参数、换下载工具、换凭据来源，不应该无限发生。次数达到阈值后暂停，既能防止费用失控，也能避免一个配置错误的 Agent 在错误边界上越跑越远。&lt;/p&gt;
&lt;p&gt;这不是要把每一次失败当作攻击。对 Agent 来说，重试本来就是解决问题的方式。限制的目标是把“合理的第二次尝试”和“持续扩散的异常路径”区分开来，并且留下人能读懂的原因。&lt;/p&gt;
&lt;h2 id=&#34;把规则写成会话状态而不是更长的白名单&#34;&gt;把规则写成会话状态，而不是更长的白名单
&lt;/h2&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;/code&gt;&lt;/pre&gt;&lt;/td&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;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#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;    └─ 模型或外部 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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ├─ 低风险且任务相关 → ALLOW
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ├─ 超过阈值或目标不匹配 → ASK
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    └─ 违反硬边界 → DENY
&lt;/span&gt;&lt;/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/contextual-agent-permissions-session-state-2026/imgs/permission-state-machine.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/contextual-agent-permissions-session-state-2026/imgs/permission-state-machine_hu_34cbe65a832047fa.png 480w, https://blog.ccino.org/p/contextual-agent-permissions-session-state-2026/imgs/permission-state-machine_hu_c46ab983c83bd13.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;真正值得花时间的，不是把这张图画得多复杂，而是先确定哪些状态值得记录，哪些动作值得触发状态变化。&lt;/p&gt;
&lt;p&gt;一套最小版本可以只覆盖四种情况：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agent 是否离开了用户指定的工作目录或项目；&lt;/li&gt;
&lt;li&gt;Agent 是否读过标记为敏感的数据；&lt;/li&gt;
&lt;li&gt;Agent 是否准备向外部目标发送内容；&lt;/li&gt;
&lt;li&gt;Agent 的重试次数与会话花费是否超出预算。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;有了这些状态，再把高影响动作放到 &lt;code&gt;ASK&lt;/code&gt; 或 &lt;code&gt;DENY&lt;/code&gt; 分支：向外部仓库推送、发送邮件、上传附件、修改权限、删除大量文件。其余常规动作仍然保持流畅。&lt;/p&gt;
&lt;p&gt;这比“一律先弹窗”更能减少无意义确认。用户看到的确认框不再只是“是否允许调用某工具”，而可以明确说明：“这个会话已读取机密目录，向外部仓库推送需要你再次确认。” 有了原因，人才能做判断。&lt;/p&gt;
&lt;h2 id=&#34;先让人看懂规则再让-agent-执行&#34;&gt;先让人看懂规则，再让 Agent 执行
&lt;/h2&gt;&lt;p&gt;上下文策略也有一个明显风险：如果所有判断都藏在一套难以解释的评分模型里，用户和安全团队只会得到另一种“为什么被拦了”的困惑。&lt;/p&gt;
&lt;p&gt;因此，第一版应该坚持几个朴素原则。&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; 一次 &lt;code&gt;ASK&lt;/code&gt; 或 &lt;code&gt;DENY&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; 人工确认应该是升级路径，不是默认交互。若一个动作无论如何都不允许，例如把机密数据上传到未批准目标，系统应该直接拒绝；若风险很低，就应该让 Agent 顺畅执行。&lt;/p&gt;
&lt;h2 id=&#34;最终要管理的是任务不是某个按钮&#34;&gt;最终要管理的是任务，不是某个按钮
&lt;/h2&gt;&lt;p&gt;过去我们常把 Agent 权限理解为一组“能不能用这个工具”的开关。这个视角在工具较少、任务较短时还说得过去；当 Agent 开始跨文件、浏览器、代码仓库和外部服务执行长任务，开关很快就会失效。&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;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.databricks.com/blog/contextual-policies-omnigent-using-session-state-better-govern-ai-agents&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Databricks：Contextual Policies in Omnigent: Using session state to better govern AI agents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://omnigent.ai/docs/policies/custom&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Omnigent：Contextual policies 文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.databricks.com/blog/introducing-omnigent-meta-harness-combine-control-and-share-your-agents&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Databricks：Introducing Omnigent&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://simonwillison.net/2025/Jun/16/the-lethal-trifecta/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Simon Willison：The Lethal Trifecta for AI agents&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上来源用于说明 Omnigent 的公开设计与 Agent 权限治理思路。具体策略阈值、数据分级和审批流程仍需结合组织的资产范围、合规要求与实际告警数据制定。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Claude Code、Cursor、Codex 都在触发黑客告警：企业该怎么给 AI Agent 重新做白名单？</title>
        <link>https://blog.ccino.org/p/ai-coding-agents-edr-whitelist-2026/</link>
        <pubDate>Mon, 13 Jul 2026 08:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/ai-coding-agents-edr-whitelist-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/ai-coding-agents-edr-whitelist-2026/imgs/cover.png" alt="Featured image of post Claude Code、Cursor、Codex 都在触发黑客告警：企业该怎么给 AI Agent 重新做白名单？" /&gt;&lt;p&gt;如果你在公司电脑上用过 Claude Code、Cursor 或 Codex，大概见过这样的瞬间：Agent 为了把环境跑起来，先查浏览器数据，再拉一个安装包；一条命令被拦后，它换另一种系统工具继续试。开发者看到的是“它在解决问题”，EDR（端点检测与响应）看到的却是一串很像入侵者的动作。&lt;/p&gt;
&lt;p&gt;这不是臆测。安全厂商 Sophos 在 7 月 7 日发布了一篇基于 Windows 行为遥测的分析，观察对象包括 Claude Code、Cursor、Codex 以及带有 GStack 等技能包的 Agent。报告看的不是提示词质量，而是这些工具在终端和系统里实际做了什么：解密浏览器凭据、枚举 Credential Manager、派生子进程、调用系统下载工具、在失败后换一种命令继续执行。&lt;/p&gt;
&lt;p&gt;Sophos 的结论很克制：这些活动并不自动等于恶意，它们很多发生在正常的自动化工作流里。端点防护规则原本就是为识别同类行为而写，触发本身并不意味着规则出了问题。变化在于，企业过去对“正常开发行为”的理解，装不下会主动找工具、反复试路径的编程智能体。&lt;/p&gt;
&lt;p&gt;这篇文章不讨论 Agent 在产品界面里该不该弹确认框。那个问题关心的是用户怎么交出任务；这里要谈的是企业电脑上，安全团队该怎样区分一段被授权的自动化工作和一条值得拦截的攻击链。&lt;/p&gt;
&lt;h2 id=&#34;安全系统到底看见了什么&#34;&gt;安全系统到底看见了什么
&lt;/h2&gt;&lt;p&gt;Sophos 把 2026 年 6 月一周内的阻断规则命中，按 MITRE ATT&amp;amp;CK（攻击战术框架）类别做了统计。与 AI Agent 相关的阻断命中里，凭据访问占 56.2%，执行占 28.8%。静默记录的命中则更多落在规避检测和命令与控制类别。&lt;/p&gt;
&lt;p&gt;这组数字不代表“超过一半的 Agent 在偷凭据”。它只说明，端点行为引擎识别到了大量与凭据访问、脚本执行、网络调用相似的动作。安全产品并不知道屏幕前的用户是在让 Agent 整理资料，还是有人正试图从一台已失陷的电脑里拿走访问权；它只能按进程、命令行、调用链和目标位置判断风险。&lt;/p&gt;
&lt;p&gt;报告里有几个很具体的例子。&lt;/p&gt;
&lt;p&gt;第一个例子来自 GStack 的 &lt;code&gt;/browse&lt;/code&gt;。这个技能会把 Agent 接到 Chromium 自动化服务上。Sophos 观测到，它经由 bash、&lt;code&gt;browse.exe&lt;/code&gt;、Node.js 一路调用 PowerShell，再用 Windows DPAPI（数据保护 API）解密浏览器中的敏感数据。放在浏览器自动化场景里，这很可能是为了复用当前登录会话；换成攻击者上下文，却正是窃取浏览器凭据时常见的链条。&lt;/p&gt;
&lt;p&gt;第二个例子是 Codex 下载 Python 安装器。它先尝试用 &lt;code&gt;certutil.exe&lt;/code&gt; 下载，命中规则后又改用 &lt;code&gt;bitsadmin.exe&lt;/code&gt;。下载地址是 python.org，目标软件也没有问题。问题在于，&lt;code&gt;certutil&lt;/code&gt; 和 &lt;code&gt;bitsadmin&lt;/code&gt; 都是 LOLBins（可被滥用的系统自带工具）：攻击者常用它们下载载荷，因为它们本来就存在于 Windows 中。一个 Agent 在失败后主动切换工具的韧性，恰好也是人工攻击者会表现出来的特征。&lt;/p&gt;
&lt;p&gt;第三个例子来自 Cursor。遥测里出现了 PowerShell 将 VBScript 写入 Windows 启动目录的操作，结果被持久化规则阻断。Sophos 没有据此断言该行为恶意，脚本内容和上下文仍然需要进一步确认。但“写启动项”本来就不该因为发起者叫 AI 而失去审查价值。&lt;/p&gt;
&lt;p&gt;这些例子共同指向一个不太舒服的事实：当 Agent 获得终端、浏览器和网络权限后，它的执行方式会越来越接近一个高效率的操作员。安全系统看到的不是“模型”，而是一次次具体的系统调用。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/ai-coding-agents-edr-whitelist-2026/imgs/agent-behavior-alerts.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/ai-coding-agents-edr-whitelist-2026/imgs/agent-behavior-alerts_hu_e22e5e08bf292c92.png 480w, https://blog.ccino.org/p/ai-coding-agents-edr-whitelist-2026/imgs/agent-behavior-alerts_hu_c8310f31c59c3435.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;h2 id=&#34;为什么不能把-agent-进程直接放进白名单&#34;&gt;为什么不能把 Agent 进程直接放进白名单
&lt;/h2&gt;&lt;p&gt;很多团队遇到第一轮误报后的直觉是：给 &lt;code&gt;claude.exe&lt;/code&gt;、Cursor 或某个 IDE 进程加白名单，事情就结束了。&lt;/p&gt;
&lt;p&gt;这在短期内很省事，长期却会把最重要的判断一起删掉。&lt;/p&gt;
&lt;p&gt;传统白名单适合对象比较稳定的时代。一台编译服务器、一个签名安装器、一套固定版本的运维脚本，它们要访问什么位置、启动什么子进程，大致可以提前列出来。编程 Agent 不一样。它的价值正来自适应性：项目缺依赖，它会寻找安装方法；测试失败，它会读日志再改命令；网页需要登录，它会尝试接管浏览器会话；一个工具不可用，它会换另一个。&lt;/p&gt;
&lt;p&gt;如果策略只问“是不是 Claude Code 发起的”，后面的文件访问、系统工具调用、身份使用和外发目的地都会被压扁成同一个答案。一次合理的 &lt;code&gt;pip install&lt;/code&gt; 和一次通过 LOLBin 下载未知程序，在日志里都会挂在同一个“已放行的进程”名下，安全团队再也看不出差别。&lt;/p&gt;
&lt;p&gt;更麻烦的是，白名单会让研发和安全团队各自误判对方的需求。研发以为安全在阻碍自动化，安全以为研发要求把风险忽略。双方真正缺的是一套能说明任务上下文的规则，而不是把同一个开关调得更松或更紧。&lt;/p&gt;
&lt;h2 id=&#34;别再按进程名放行先问这次任务要做什么&#34;&gt;别再按进程名放行，先问这次任务要做什么
&lt;/h2&gt;&lt;p&gt;企业不太可能为每条 Agent 命令写一条人工规则，也没必要把所有自动化都拉回人工执行。更实际的做法，是不再只盯着单个进程，而是把一段边界明确的任务作为策略对象。&lt;/p&gt;
&lt;p&gt;一段可治理的 Agent 任务，至少要回答几个问题。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;它是谁发起的。&lt;/strong&gt; 是某位开发者在本地终端启动，还是 CI 里的服务账号定时运行？不同身份应有不同默认权限。人机共享同一个高权限账号，会让后续审计几乎失去意义。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;它在做什么。&lt;/strong&gt; “修复测试”“整理依赖”“登录网页收集资料”并不只是自然语言描述。系统需要把任务关联到工作目录、代码仓库、工单或变更单，至少让安全人员能在告警出现后理解这段行为的业务目的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;它可以碰什么。&lt;/strong&gt; 读取当前项目目录、访问一个测试环境、下载经过允许的软件包，和解密所有浏览器 Profile、枚举全机凭据、写启动项，不该落在同一个权限包里。权限范围越接近任务所需，误报排查和真实风险判断就越容易。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;它用什么方式完成。&lt;/strong&gt; 对高风险行为，不必假装完全禁止或完全信任。可以规定：允许从官方源安装依赖，但不能通过任意系统下载工具执行未知二进制；允许访问测试浏览器 Profile，但不能读取日常工作 Profile；允许在沙箱中修改配置，但写入启动目录必须转为明确审批。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;出了问题如何还原。&lt;/strong&gt; Agent 会重试，这正是它容易越过预期边界的地方。每次工具切换、权限提升、外部下载和不可逆写入，应该保留可关联的记录。对文件修改可用 diff，对配置变更保留快照，对网络调用保留目的地和任务 ID。这样安全告警不是一段孤立命令，而能回到完整的任务链中。&lt;/p&gt;
&lt;p&gt;这套做法听起来像给 Agent 增加了很多约束，但它其实也在保护研发。今天被安全软件拦住后，开发者最痛苦的往往不是“不能执行”，而是不知道哪一步触发了什么规则、该换命令还是该申请权限。把任务上下文带进策略，才能让拦截给出可操作的下一步。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/ai-coding-agents-edr-whitelist-2026/imgs/task-based-policy.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/ai-coding-agents-edr-whitelist-2026/imgs/task-based-policy_hu_8e4e244cc9203f8.png 480w, https://blog.ccino.org/p/ai-coding-agents-edr-whitelist-2026/imgs/task-based-policy_hu_d2d5ebe2bcfc6629.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;h2 id=&#34;edr-不必给-agent-让路但得看懂上下文&#34;&gt;EDR 不必给 Agent 让路，但得看懂上下文
&lt;/h2&gt;&lt;p&gt;Sophos 的报告透露出一个很朴素的判断：现有行为防护仍在做它该做的事。PowerShell 解密浏览器凭据、列出凭据管理器、写入启动目录、通过系统工具反复下载文件，都值得被看见。若把这些规则全部调低，攻击者也会顺手得到同样的通道。&lt;/p&gt;
&lt;p&gt;需要调整的是处置逻辑。&lt;/p&gt;
&lt;p&gt;例如，检测到 Agent 访问凭据时，安全平台应先核对：这是不是受管理的浏览器自动化任务，是否只触及隔离 Profile，任务有没有用户授权，结果有没有离开本地。条件不齐，告警就该升级；条件具备，则记录为一次受控例外，无须把整个 Agent 进程永久放行。&lt;/p&gt;
&lt;p&gt;再比如，检测到下载和执行时，策略可以区分软件源、文件类型和运行位置。来自公司制品库或经过验证的官方源、在临时沙箱里执行、与某个构建任务关联的下载，风险与从未知域名获取可执行文件完全不同。这里的关键不是把“Agent”当成可信身份，而是让它继承任务的边界。&lt;/p&gt;
&lt;p&gt;安全团队也需要接受一个现实：部分告警会继续存在。因为有些行为无论是不是 Agent 发起，都不应该静默通过。一个被提示词注入、插件依赖或错误配置带偏的 Agent，同样可能访问不该访问的数据。保留高风险告警，不是拒绝 AI 工具，而是给自动化保留刹车。&lt;/p&gt;
&lt;h2 id=&#34;给安全和研发团队的一份共同清单&#34;&gt;给安全和研发团队的一份共同清单
&lt;/h2&gt;&lt;p&gt;如果团队准备让编程 Agent 进入日常开发环境，最先做的不是挑一份“全局白名单”，而是坐下来确定哪些边界能被系统执行。&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;给 Agent 的重试设上限。连续换工具、换参数、换下载方式不该无限进行，超过阈值应暂停并留下原因。&lt;/li&gt;
&lt;li&gt;让 EDR 告警能关联到任务 ID、操作者、仓库和变更记录。安全人员不需要看见一千条命令，他们需要知道这一千条命令属于哪件工作。&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;前几天写 ChatGPT Work 时，我关心的是用户能不能看见任务边界，并在真正有后果的动作前保留决定权。端点遥测把问题推到企业环境：用户点了允许之后，安全系统是否还知道这次允许具体覆盖了什么。&lt;/p&gt;
&lt;p&gt;Agent 会根据目标拆任务、找工具、处理失败。安全策略没必要替它写代码，也不能假装每一步都能预先预测。它该做的是划出环境边界，标出高风险动作，把一次执行和发起者、数据范围、授权记录连起来；触线时，系统能把任务停下并留下足够线索。&lt;/p&gt;
&lt;p&gt;没有执行能力，Agent 只是一段回答；边界若无法被验证，执行能力越强，企业越不敢交给它。Sophos 这次看到的“像攻击者的行为”，说明 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://www.sophos.com/en-us/blog/2607_agents_vs_telemetry&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Sophos X-Ops：When AI agents look like attackers: what behavioral telemetry tells us&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://thehackernews.com/2026/07/ai-coding-agents-found-triggering.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;The Hacker News：AI Coding Agents Found Triggering Endpoint Security Rules Built to Catch Attackers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.anthropic.com/features/making-of-claude-code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic：The Making of Claude Code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上来源主要用于核验 Sophos 对端点遥测的观察和厂商公开信息。该报告基于一周 Windows 遥测，不能替代针对具体企业环境的安全评估，也不等同于对任何 AI 编程工具恶意性的判定。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>从「能跑大模型」到「能跑工作流」：GLM-5.2 本地 Agent 该怎么测</title>
        <link>https://blog.ccino.org/p/local-model-to-workflow-evaluation-2026/</link>
        <pubDate>Sun, 12 Jul 2026 09:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/local-model-to-workflow-evaluation-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/local-model-to-workflow-evaluation-2026/imgs/cover.png" alt="Featured image of post 从「能跑大模型」到「能跑工作流」：GLM-5.2 本地 Agent 该怎么测" /&gt;&lt;p&gt;r/LocalLLaMA 这两天有个帖子挺有意思。发帖者说，自己把 &lt;strong&gt;GLM-5.2（744B MoE）&lt;/strong&gt; 跑在了一台 25GB RAM 的消费级机器上。评论区很快就把话题带到了一个老问题上：既然这么大的模型已经能塞进个人设备，本地 AI 是不是快能接手日常工作了？&lt;/p&gt;
&lt;p&gt;同一天，智谱创始人唐杰在内部信里提到长程任务、自治智能体和安全治理。两条信息放在一起，很容易让人把注意力从模型尺寸、推理速度，转到 Agent 能不能连续完成任务上。&lt;/p&gt;
&lt;p&gt;不过这中间有不少台阶。那条 Reddit 帖子只是社区实测，并非独立基准。量化方式、offload 配置、上下文长度、生成速度和任务质量，都需要回到原帖或可复现环境里核对。它更像一个信号：超大开源模型跑进个人设备，已经不是纯粹的想象题了。&lt;/p&gt;
&lt;p&gt;可“跑起来”不等于“能交付”。&lt;/p&gt;
&lt;p&gt;平时测本地模型，大家会看显存、内存、首 token 延迟和 token/s。这些指标能说明模型能否生成，却很难说明它能不能完成一次真实开发。模型放进 Agent（智能体）后，面对的是一个带工具、约束、中断和验收的 workflow（工作流）。它得知道该读什么文件、什么时候跑测试、哪些边界不能碰；中途断了，还得能接上。&lt;/p&gt;
&lt;p&gt;这篇不再讨论 GLM-5.2 的榜单，也不重复 ZCode 的产品介绍。下面这五项，才是我觉得更值得拿来测本地 Agent 的东西。&lt;/p&gt;
&lt;h2 id=&#34;模型开始吐字不代表任务已经推进&#34;&gt;模型开始吐字，不代表任务已经推进
&lt;/h2&gt;&lt;p&gt;在终端里看到模型输出代码，很容易产生一种错觉：它会写组件，事情似乎就差不多了。&lt;/p&gt;
&lt;p&gt;但把“帮我写个登录页”换成真实项目里的需求，场景马上变了。它得先找到现有认证逻辑，不能改坏公开 API；得跑测试；得记住产品说过“移动端先不做”；环境重启后，最好还能知道自己改到哪一步。最后，页面还得真的能登录。&lt;/p&gt;
&lt;p&gt;前面是一次生成，后面才是一项交付。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/local-model-to-workflow-evaluation-2026/imgs/generation-to-delivery.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/local-model-to-workflow-evaluation-2026/imgs/generation-to-delivery_hu_d1c77ac7818fbc68.png 480w, https://blog.ccino.org/p/local-model-to-workflow-evaluation-2026/imgs/generation-to-delivery_hu_bd39ed74190d1e14.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;因此，别急着问“这台机器能跑多大的模型”。拿一个完整但规模不大的仓库任务，固定需求、工具权限、测试和验收步骤，让本地模型与云端模型分别跑几次。比起一张 benchmark 图，这种比较更接近你每天真正要付出的时间和返工成本。&lt;/p&gt;
&lt;h2 id=&#34;先看它会不会读仓库&#34;&gt;先看它会不会读仓库
&lt;/h2&gt;&lt;p&gt;第一项测试不该是从零做一个 Todo 应用。给它一个已经存在的仓库，效果更容易看出来。&lt;/p&gt;
&lt;p&gt;比如让它给列表页增加筛选项：不能改 API，要补一条失败状态测试。先别让它动手，先问四件事：相关组件在哪，数据从哪里来，现有测试覆盖了什么，这次改动最不该碰什么。&lt;/p&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;不少本地部署演示停在聊天界面。模型回答流畅，文件没读过，测试没跑过，浏览器也没打开过。那更像一个本地聊天助手，不是能干活的 Agent。&lt;/p&gt;
&lt;p&gt;一个简单的测试是：给它读取仓库、修改指定目录、运行测试命令的权限，然后让它修一个已有的失败测试。观察的重点不在于它第一次能不能修好，而在于它会不会根据工具输出继续调整。&lt;/p&gt;
&lt;p&gt;只看报错文字猜一个答案，改完就宣布完成，风险很高。它愿意重新运行命令，看到新错误后收缩改动范围，才说明终端输出真的进入了判断过程。&lt;/p&gt;
&lt;p&gt;工具调用的另一面是分辨失败类型。依赖没装、端口被占、测试超时、权限不足，表面上都会出现红字。把这些全当成代码 bug，只会制造更多无关修改。一个可用的 Agent 不需要次次都解决环境问题，但至少要知道自己卡在代码、环境，还是权限。&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;开始时，Agent 还记得“不要改公开 API”。几轮工具调用之后，它发现改 API 更省事，于是改了。开始时，它知道“这次不做移动端”；读了几十个文件后，又顺手补起响应式布局。不是它故意违约，而是早先的约束在后续信息里被冲淡了。&lt;/p&gt;
&lt;p&gt;这时测试的重点不应只是上下文窗口大小，而是约束有没有被稳定保存。&lt;/p&gt;
&lt;p&gt;可以在任务里放两三条不会反复提醒的条件，例如保持接口兼容、不加新依赖、只动两个模块。多轮之后，先让它复述边界，再看最终 diff 有没有越线。这比问它支持多少 token 有用得多。&lt;/p&gt;
&lt;p&gt;也没必要把聊天记录无限重传。旧工具输出、重复检索内容会把真正重要的信息盖住。更实在的办法是把约束从聊天里单独摘出来：一份短任务说明，或者每个阶段结束时写一个 checkpoint（检查点），记录当前目标、已确认事实、未解决问题和禁止改动的范围。&lt;/p&gt;
&lt;p&gt;本地工作流有个好处就在这里：哪些信息留在机器上、怎样压缩、何时重开会话，可以由你决定，而不是完全交给一个看不见的会话机制。&lt;/p&gt;
&lt;h2 id=&#34;故意断一次看看它怎么回来&#34;&gt;故意断一次，看看它怎么回来
&lt;/h2&gt;&lt;p&gt;本地 Agent 迟早会被打断。笔记本合盖、终端关掉、模型服务重启、显存被占，或者你临时改了需求，都是日常情况。&lt;/p&gt;
&lt;p&gt;所以测试时不妨故意停掉它。&lt;/p&gt;
&lt;p&gt;让 Agent 完成计划和部分修改后，保存状态。再开一个新会话，只给它仓库、任务说明和留下的 checkpoint。它是否会先看 git diff、测试状态和未完成项？还是直接沿用旧结论，假装任务已经结束？这两种表现差别很大。&lt;/p&gt;
&lt;p&gt;恢复不该靠复制整段旧对话。成本高，也会把失效信息一起搬回来。更好的恢复像一次交接：新会话拿到一份简短可信的记录，知道哪些事实已经确认，哪些命令跑过，哪些结果还没验。&lt;/p&gt;
&lt;p&gt;如果 checkpoint 里没有验收记录，恢复后的 Agent 就应该继续验证，而不是马上写一段“任务已完成”的总结。&lt;/p&gt;
&lt;h2 id=&#34;验收不做交付就还没发生&#34;&gt;验收不做，交付就还没发生
&lt;/h2&gt;&lt;p&gt;最后一项最容易省掉。&lt;/p&gt;
&lt;p&gt;模型说测试通过，不一定真的通过；测试绿了，也不代表用户路径能走通。涉及 UI、登录、文件上传、异步状态或外部服务时，光看 diff 很难知道结果。&lt;/p&gt;
&lt;p&gt;因此，任务开始前就该写好验收方式。后端改动可以跑固定测试、打一遍 API、检查迁移；前端改动至少要启动应用、走关键路径、看看控制台有没有新错误。危险操作则应留下人工确认点。&lt;/p&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;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;能说清文件、边界与风险&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;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;约束记忆&lt;/td&gt;
					&lt;td&gt;多轮后复述不可变条件&lt;/td&gt;
					&lt;td&gt;diff 未越过既定范围&lt;/td&gt;
					&lt;td&gt;忘记 API、依赖或范围限制&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;用“已完成”代替验证&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://blog.ccino.org/p/local-model-to-workflow-evaluation-2026/imgs/local-agent-evaluation-loop.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/local-model-to-workflow-evaluation-2026/imgs/local-agent-evaluation-loop_hu_b85a8502a7cfec70.png 480w, https://blog.ccino.org/p/local-model-to-workflow-evaluation-2026/imgs/local-agent-evaluation-loop_hu_31200e0a8320fac7.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;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;p&gt;把模型当作可替换组件，比把整个工作流绑定在某种部署方式上靠谱。&lt;/p&gt;
&lt;h2 id=&#34;模型agent-与工作流别混成一个词&#34;&gt;模型、Agent 与工作流，别混成一个词
&lt;/h2&gt;&lt;p&gt;模型负责推理和生成。它决定一轮任务里代码、解释和下一步建议的质量。&lt;/p&gt;
&lt;p&gt;Agent 拿着模型的判断去读文件、调命令、编辑代码、调用服务。走到这一步，工具可用性和权限边界已经和模型回答质量一样重要。&lt;/p&gt;
&lt;p&gt;工作流把执行串成可交付的过程：保存约束，安排工具调用，写 checkpoint，处理失败与恢复，最后要求测试、浏览器或人给出证据。&lt;/p&gt;
&lt;p&gt;“能跑大模型”解决的是能力能不能出现在你的机器上；“能跑工作流”解决的是这份能力能否在真实任务里被约束、被接续、被验证。两者差得不止一块显卡或几个 token/s。&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://z.ai/blog/glm-5.2&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Z.ai：GLM-5.2 — Built for Long-Horizon Tasks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://36kr.com/p/3891132709206784?f=rss&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;36氪：智谱创始人唐杰发内部信：「GLM 时刻」之后，什么是更重要的事&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/LocalLLaMA/comments/1us5m0g/glm52_744b_moe_on_a_25gbram_consumer_machine/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;r/LocalLLaMA：GLM-5.2 (744B MoE) on a 25GB-RAM consumer machine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.bestblogs.dev/en/video/f2dadc462&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;BestBlogs：Why Now Is the Time to Bring AI Back Local&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上来源用于观察厂商发布口径、本地 AI 趋势和社区反馈。Reddit 配置与性能描述来自单一发帖者，媒体报道与社区讨论都不等同于独立基准测试；实际部署前仍应在自己的硬件、模型版本和真实任务上复核。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>苹果起诉 OpenAI：AI 硬件最难复制的是组织记忆</title>
        <link>https://blog.ccino.org/p/apple-openai-hardware-organizational-memory-2026/</link>
        <pubDate>Sat, 11 Jul 2026 13:10:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/apple-openai-hardware-organizational-memory-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/apple-openai-hardware-organizational-memory-2026/imgs/cover.png" alt="Featured image of post 苹果起诉 OpenAI：AI 硬件最难复制的是组织记忆" /&gt;&lt;p&gt;7 月 10 日，苹果在美国加州北区联邦地区法院起诉 OpenAI、io Products 及数名前员工，指控对方不当获取其与未发布技术、工程流程和产品有关的保密信息。OpenAI 随后回应称，公司“无意获取其他公司的商业机密”。案件刚刚进入司法程序，双方说法都不等于已经被法院认定的事实。&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;根据苹果提交的诉状及多家媒体对文件的报道，苹果指控部分前员工在离职、面试或进入 OpenAI 相关硬件业务的过程中，不当接触、下载或披露与苹果保密项目有关的信息。诉状涉及工程文件、原型部件、供应商沟通和制造流程等内容；苹果请求禁令救济和损害赔偿。&lt;/p&gt;
&lt;p&gt;这些是苹果的指控，不是法院已经确认的结论。特别是关于动机、具体信息是否构成商业秘密、信息是否真的被使用，以及 OpenAI 应承担何种责任，都有待后续答辩、证据交换和审理。&lt;/p&gt;
&lt;p&gt;OpenAI 的公开回应同样很简短：公司称自己对其他公司的商业机密没有兴趣，并将继续专注于研发产品。&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;模型决定设备能否理解语音、图像和任务；硬件方案把这些能力塞进结构、器件、系统架构、BOM 与测试规范；组织记忆则来自那些反复做过选择、见过后果的人。现在模型可以自研，也可以采购或接入 API。硬件方案可以交接，但它总有没写透的部分。&lt;/p&gt;
&lt;p&gt;真正让量产项目容易卡住的，往往就是这部分。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/apple-openai-hardware-organizational-memory-2026/imgs/model-blueprint-memory.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/apple-openai-hardware-organizational-memory-2026/imgs/model-blueprint-memory_hu_ca6cba092ee8fd5c.png 480w, https://blog.ccino.org/p/apple-openai-hardware-organizational-memory-2026/imgs/model-blueprint-memory_hu_e30723720433ae43.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-终端比普通智能设备更难做&#34;&gt;为什么 AI 终端比普通“智能设备”更难做
&lt;/h2&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;img src=&#34;https://blog.ccino.org/p/apple-openai-hardware-organizational-memory-2026/imgs/engineering-tradeoffs-memory.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/apple-openai-hardware-organizational-memory-2026/imgs/engineering-tradeoffs-memory_hu_9ec09a019a89c4a3.png 480w, https://blog.ccino.org/p/apple-openai-hardware-organizational-memory-2026/imgs/engineering-tradeoffs-memory_hu_2a1afd6c9c837be9.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;科技行业的人才流动很常见，也完全正常。一位资深硬件工程师加入新团队，带去的是他的能力、判断力和职业经验。法律真正关心的边界，在于个人经验与受保护的保密信息之间如何划分；这也正是本案需要由司法程序厘清的地方。&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;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;苹果与 OpenAI 的案件会如何收场，现在没人知道。它可能和解，也可能进入更长的审理；一份诉状也不足以替任何一方定性。&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://9to5mac.com/wp-content/uploads/sites/6/2026/07/Apple-Inc.-v.-Liu-et-al.pdf&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Apple Inc. v. Liu et al.（苹果诉状 PDF，9to5Mac 附件）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://9to5mac.com/2026/07/10/apple-sues-openai-trade-secret-theft/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Apple sues OpenAI, accuses ex-employees of stealing trade secrets（9to5Mac）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://9to5mac.com/2026/07/10/openai-responds-to-apples-trade-secret-theft-lawsuit/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI responds to Apple’s trade secret theft lawsuit（9to5Mac，含 OpenAI 公开回应）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openai.com/sam-and-jony/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Sam and Jony: The next chapter of computing（OpenAI）&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上来源用于梳理公开诉讼材料、公司回应和产品背景。诉状中的事实主张尚待司法程序审理，本文对其均以“苹果指控”或“诉状称”的方式表述；关于 OpenAI 后续硬件形态的媒体传闻未作为本文论据。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>ChatGPT Work：AI 从聊天框搬进桌面后，谁还握着任务的审批权？</title>
        <link>https://blog.ccino.org/p/chatgpt-work-approval-interface-2026/</link>
        <pubDate>Fri, 10 Jul 2026 08:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/chatgpt-work-approval-interface-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/chatgpt-work-approval-interface-2026/imgs/cover.png" alt="Featured image of post ChatGPT Work：AI 从聊天框搬进桌面后，谁还握着任务的审批权？" /&gt;&lt;p&gt;7 月 9 日，OpenAI 发布 ChatGPT Work。它的卖点不难理解：把聊天、文件、桌面应用、浏览器和常用工作软件接到一起，让 AI 接住一段需要持续推进的工作。&lt;/p&gt;
&lt;p&gt;这和「帮我写一份周报」不是一回事。后一种请求，模型写完一段文字就结束了；前一种委托，可能要找 CRM 里的数据、翻 Slack 的讨论、补表格、做成演示稿，还得等新的消息进来后继续更新。&lt;/p&gt;
&lt;p&gt;OpenAI 把这类能力叫做 Agent（智能体）。但我更在意的是它给用户留下的那一部分：任务跑到一半时，你看得到什么？它准备发邮件、改报价、动本地文件时，谁来做最后确认？&lt;/p&gt;
&lt;p&gt;模型回答错了，通常只是浪费几分钟。能读文件、调用工具、在后台一直跑的 Agent，错一次可能影响的是客户、团队协作，甚至一份已经发出的正式材料。ChatGPT Work 真正带来的变化，不是 ChatGPT 多了一个 Work 标签，而是「审批」开始从企业系统的角落，走进 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;a class=&#34;link&#34; href=&#34;https://openai.com/index/chatgpt-for-your-most-ambitious-work/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI 的公告&lt;/a&gt;，ChatGPT Work 能连接 Slack、Microsoft Teams、Google Drive、SharePoint、邮件、日历、CRM 和项目管理工具。新版桌面端把 Chat、Work 和 Codex 放在同一个应用里，也能在用户许可下处理本地文件、桌面应用和浏览器里的任务。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/chatgpt-work-approval-interface-2026/imgs/official-work-desktop.png&#34;
	width=&#34;2880&#34;
	height=&#34;1620&#34;
	srcset=&#34;https://blog.ccino.org/p/chatgpt-work-approval-interface-2026/imgs/official-work-desktop_hu_a5c9b4fdd1c82aa4.png 480w, https://blog.ccino.org/p/chatgpt-work-approval-interface-2026/imgs/official-work-desktop_hu_37c98fa7169edcc3.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;OpenAI 官方展示：ChatGPT Work 在桌面端与移动端衔接任务，并连接日历、Slack 和 Gmail&#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;em&gt;图片来源：&lt;a class=&#34;link&#34; href=&#34;https://openai.com/index/chatgpt-for-your-most-ambitious-work/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI，ChatGPT Work 发布公告&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;想象一个并不夸张的场景：周一早上，销售负责人要开月度复盘会。他过去得翻 CRM，向几个同事要数据，把 Slack 里零散的反馈贴到表格里，再改十几页幻灯片。现在，他可以把这件事交给 ChatGPT Work：先汇总本月线索变化，再列出异常账户和待跟进事项，最后做一份还可以修改的初稿。&lt;/p&gt;
&lt;p&gt;这不是多调用几个工具那么简单。用户交出去的，不再是一道问题，而是一段有起点、有过程、也有后果的工作。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/chatgpt-work-approval-interface-2026/imgs/chat-to-task-delegation.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/chatgpt-work-approval-interface-2026/imgs/chat-to-task-delegation_hu_aa33544e426695c0.png 480w, https://blog.ccino.org/p/chatgpt-work-approval-interface-2026/imgs/chat-to-task-delegation_hu_4313868d73655ea0.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;OpenAI 对 ChatGPT Work 的描述里有一句很关键：用户可以查看进度、回答问题、调整方向，并在重要行动前批准。&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 做月度复盘，可能确实需要读 CRM、共享盘和团队聊天记录。但「需要这些资料」不等于「应该看见整个公司的所有内容」。用户至少该知道它连了哪些系统、能访问哪一层资料，也应该能把某个连接随时拔掉。&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;真实工作很少按最初的描述一路走到底。老板可能临时要求把地区维度换成行业维度；销售团队也可能补来一份新名单，前面的判断得重新算。ChatGPT Work 允许用户在任务进行中继续提问和改向，至少承认了一个事实：长任务不是点一下「开始」之后就不再需要人。&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;h2 id=&#34;agent-的问题不只在模型也在控制面&#34;&gt;Agent 的问题，不只在模型，也在「控制面」
&lt;/h2&gt;&lt;p&gt;做基础设施的人会区分数据面和控制面。数据面负责执行：读资料、调工具、生成表格、移动文件。控制面决定谁能做这些事、做到哪一步、出了问题怎么停。&lt;/p&gt;
&lt;p&gt;聊天产品过去的控制面很薄，基本就是输入框、发送按钮和重新生成。大部分责任落在用户的提示词上：你问得不清楚，模型就答得不清楚。&lt;/p&gt;
&lt;p&gt;ChatGPT Work 让这层东西变得更显眼。OpenAI 提供统一的 Plugin Directory（插件目录）来管理连接工具；Scheduled Tasks（定时任务）可以单次运行、按周期运行、由事件触发，或者持续盯住变化；企业版管理员还能配置工具连接、浏览器和网络访问，并通过 Compliance API 查看会话与行动记录。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/chatgpt-work-approval-interface-2026/imgs/official-plugin-directory.png&#34;
	width=&#34;2880&#34;
	height=&#34;1620&#34;
	srcset=&#34;https://blog.ccino.org/p/chatgpt-work-approval-interface-2026/imgs/official-plugin-directory_hu_d117aa269c019a54.png 480w, https://blog.ccino.org/p/chatgpt-work-approval-interface-2026/imgs/official-plugin-directory_hu_764bbbe475c02b4c.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;OpenAI 官方插件目录：ChatGPT Work 可统一管理 Google Drive、Gmail、Slack、Teams、SharePoint 和 Salesforce 等连接&#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;em&gt;图片来源：&lt;a class=&#34;link&#34; href=&#34;https://openai.com/index/chatgpt-for-your-most-ambitious-work/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI，ChatGPT Work 发布公告&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/chatgpt-work-approval-interface-2026/imgs/agent-control-surface.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/chatgpt-work-approval-interface-2026/imgs/agent-control-surface_hu_3a21d1bdde7c0078.png 480w, https://blog.ccino.org/p/chatgpt-work-approval-interface-2026/imgs/agent-control-surface_hu_8c47bbf38a9008f.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;长任务 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;把这些功能放在一起看，OpenAI 不是单纯往 ChatGPT 里加插件。它在尝试给 Agent 划出一个能被人理解、也能被企业管理的活动范围。&lt;/p&gt;
&lt;p&gt;普通用户关心的可能只是「这个任务能不能用我的 Drive」「每天早上八点跑一次会不会乱发东西」；企业会继续往权限策略、日志、预算和合规上走。两边问的其实是同一件事：这个 Agent 是替谁做事，它的权限边界在哪里？&lt;/p&gt;
&lt;p&gt;因此，我不太愿意把 ChatGPT Work 简化成 AI 办公助手。办公助手的重点是效率，长任务 Agent 更像一种委托关系。效率当然重要，但用户愿意把事情交出去，先得相信它不会越界。&lt;/p&gt;
&lt;h2 id=&#34;最后一次点击为什么仍然得留给人&#34;&gt;最后一次点击，为什么仍然得留给人
&lt;/h2&gt;&lt;p&gt;OpenAI 说，用户可以决定 ChatGPT 能访问什么、何时汇报、在什么时候请求批准。对于连接工具和 API 的重要行动，产品还提供 Auto-review：在动作发生前，让模型再做一次审查。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/chatgpt-work-approval-interface-2026/imgs/official-scheduled-tasks.png&#34;
	width=&#34;2880&#34;
	height=&#34;1620&#34;
	srcset=&#34;https://blog.ccino.org/p/chatgpt-work-approval-interface-2026/imgs/official-scheduled-tasks_hu_5025c63333dc4d33.png 480w, https://blog.ccino.org/p/chatgpt-work-approval-interface-2026/imgs/official-scheduled-tasks_hu_c7c086400033f4b0.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;OpenAI 官方 Scheduled Tasks 界面：定期业务回顾、客户会前准备与营销优化等任务可在移动端持续运行&#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;em&gt;图片来源：&lt;a class=&#34;link&#34; href=&#34;https://openai.com/index/chatgpt-for-your-most-ambitious-work/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI，ChatGPT Work 发布公告&lt;/a&gt;&lt;/em&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;人不需要重新接手所有步骤。更合理的分工是让 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;它不必长成沉重的企业审批流。个人用户不会配置二十条规则，小团队也养不起一套复杂的权限系统。但简单不能等于模糊。与其再塞十个新插件，不如先让用户看懂 Agent 在访问什么、在替自己做什么，以及下一步会不会替自己开口。&lt;/p&gt;
&lt;h2 id=&#34;聊天框会留下来但角色变了&#34;&gt;聊天框会留下来，但角色变了
&lt;/h2&gt;&lt;p&gt;ChatGPT Work 刚发布，功能的地区、套餐和实际体验还会继续变化。OpenAI 公告里的客户案例也属于早期测试材料，能说明产品想解决什么，不能替代独立效果评测。&lt;/p&gt;
&lt;p&gt;但它已经把一种产品形态摆出来了。聊天框仍然适合表达目标：用自然语言说清楚「我想做什么」。当 AI 开始碰文件、应用、浏览器和长期任务，聊天框还要承担另一份工作：让人盯住任务的边界。&lt;/p&gt;
&lt;p&gt;模型负责理解、规划和执行；任务界面负责显示权限、记录过程、接受改向，并在真正有后果的动作前把决定交还给人。前者让 Agent 能做事，后者决定用户敢不敢让它做事。&lt;/p&gt;
&lt;p&gt;所以，长期运行的 Agent 的分水岭不是它能不能连续跑八小时，而是八小时之后，用户还能不能说清它做了什么、为什么这么做，以及下一步该不该继续。&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://openai.com/index/chatgpt-for-your-most-ambitious-work/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI：ChatGPT is now a partner for your most ambitious work&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://help.openai.com/en/articles/6825453-chatgpt-release-notes&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI Help Center：ChatGPT Release Notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openai.com/index/gpt-5-6/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI：GPT-5.6: Frontier intelligence that scales with your ambition&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上来源主要用于核验 OpenAI 的产品发布口径、功能描述与可用范围，不等同于对 ChatGPT Work 实际效果的独立评测。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>GPT-Live：ChatGPT 学会&#34;边听边说&#34;，全双工语音为什么是 AI 交互的下一站</title>
        <link>https://blog.ccino.org/p/gpt-live-full-duplex-voice-2026/</link>
        <pubDate>Thu, 09 Jul 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/gpt-live-full-duplex-voice-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/gpt-live-full-duplex-voice-2026/imgs/cover.png" alt="Featured image of post GPT-Live：ChatGPT 学会&#34;边听边说&#34;，全双工语音为什么是 AI 交互的下一站" /&gt;&lt;p&gt;7 月 8 日，OpenAI 发了 GPT-Live，替换掉原来的 Advanced Voice Mode，成了 ChatGPT 默认的语音模型。&lt;/p&gt;
&lt;p&gt;媒体报道基本集中在一点：说话更像人了。能同时听和说，会&amp;quot;嗯&amp;quot;&amp;ldquo;对&amp;quot;地接话，你停顿它不抢话，背景吵也能听清你。&lt;/p&gt;
&lt;p&gt;这些都对。但 OpenAI 在博客里还写了一句没被太多人注意的话：长期来看，这项研究也会让语音能用来完成越来越复杂、更长时、更 agent 化的工作。&lt;/p&gt;
&lt;p&gt;这句话比&amp;quot;全双工&amp;quot;更值得琢磨。GPT-Live 真正的变化，是 AI 第一次把&amp;quot;说话&amp;quot;和&amp;quot;思考&amp;quot;拆成了两件能分开做的事。&lt;/p&gt;
&lt;h2 id=&#34;全双工从对讲机到电话&#34;&gt;全双工：从对讲机到电话
&lt;/h2&gt;&lt;p&gt;全双工这个词来自电信。对讲机是半双工，按住说话、松开听，同一时刻只能一个人出声。电话是全双工，双方能同时开口、同时听见对方。&lt;/p&gt;
&lt;p&gt;过去两年的 AI 语音都是&amp;quot;对讲机模式&amp;rdquo;。你说完它才回，它说话时你插不进嘴。Advanced Voice Mode 把识别和生成塞进一个模型，延迟更低更顺，但底子还是轮流发言——得等一方停下，另一方才能接。&lt;/p&gt;
&lt;p&gt;这种模式有个老毛病：AI 靠检测沉默来判断你&amp;quot;说完了&amp;quot;。你思考时停顿一下，它以为你说完了，抢进来；咖啡馆有点背景音，它也以为你停了。The Verge 转述一位研究者的形容，说像对讲机式轮流发言。&lt;/p&gt;
&lt;p&gt;GPT-Live 换成了全双工。模型一边生成输出，一边持续处理输入，每秒能做很多次决策：该说、继续听、停一下、打断、还是调个工具。所以它能做过去做不到的事：你说到一半它&amp;quot;嗯&amp;quot;一声表示跟上了；你停顿想词，它等着不插嘴；你想补充，直接打断它。&lt;/p&gt;
&lt;p&gt;The Verge 给报道起的标题是：ChatGPT 的升级语音模式更会闭嘴了。&lt;/p&gt;
&lt;p&gt;会闭嘴听起来是小事。但用过语音 AI 的人知道，这是从&amp;quot;能用&amp;quot;到&amp;quot;想用&amp;quot;的那道坎。&lt;/p&gt;
&lt;h2 id=&#34;语音和推理被拆成了两层&#34;&gt;语音和推理，被拆成了两层
&lt;/h2&gt;&lt;p&gt;如果说全双工是听得舒服，那 GPT-Live 的另一个变化才是这次的重点：它把语音交互和深度推理解耦了。&lt;/p&gt;
&lt;p&gt;以前不管哪种语音 AI，都是一个模型干所有事：听懂你说话、想怎么答、再把答案念出来。三件事压在一个模型身上，结果就是你想让它对话自然，它就没那么聪明；想让它聪明，对话就变卡。语音的轻和推理的重，天生打架。&lt;/p&gt;
&lt;p&gt;GPT-Live 自己只管持续对话：接话、保持节奏、自然回应。碰到要联网搜索、深度推理或跑复杂任务的问题，它把活丢给后台的 GPT-5.5，自己继续陪你聊，等后台算完再把结果带回对话。&lt;/p&gt;
&lt;p&gt;过去是前台一个人既接待又办业务，忙不过来；现在前台专门接待，复杂业务转后台。&lt;/p&gt;
&lt;p&gt;这个改动有几层意思。语音模型可以一直很轻，不用背推理的算力，能低延迟、长在线。智能可以热插拔——OpenAI 说后台今天用 GPT-5.5，以后出了更强的就换，对话体验不变，用户只感觉到答得更准。再往远看一步，&amp;ldquo;前台把活委托给后台 agent 跑、跑完带回来&amp;quot;这个结构，本身就是 agent 工作流的形状。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/gpt-live-full-duplex-voice-2026/imgs/voice-reasoning-split.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/gpt-live-full-duplex-voice-2026/imgs/voice-reasoning-split_hu_4aec426a2e5fbc65.png 480w, https://blog.ccino.org/p/gpt-live-full-duplex-voice-2026/imgs/voice-reasoning-split_hu_aa1722377702ea01.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;h2 id=&#34;三代语音各解决各的痛点&#34;&gt;三代语音，各解决各的痛点
&lt;/h2&gt;&lt;p&gt;AI 语音到今天走了三代。&lt;/p&gt;
&lt;p&gt;第一代是级联式：语音转文字、大模型生成、文字转语音，三个模型串起来。第一次能跟前沿模型通话，但信息在模型间传递会丢，反应慢、语气僵。&lt;/p&gt;
&lt;p&gt;第二代是轮替式，也就是 Advanced Voice Mode：把语音处理和生成塞进一个模型，延迟下来了，顺很多。但还得轮流发言，靠检测沉默判断你停没停，停顿被误读、噪音触发抢话是常事。&lt;/p&gt;
&lt;p&gt;第三代是全双工，GPT-Live：同时收发，每秒多次决策，会回应、会等、会打断、会委托。它把前两代的痛点都接住了——比第一代流畅，比第二代不再乱抢话。&lt;/p&gt;
&lt;p&gt;OpenAI 的评测也支持这个判断：在专家级科学推理（GPQA）、agentic 网页搜索（BrowseComp）、多轮语音客服（τ³-Voice Telecom）三项基准上，GPT-Live-1 都明显超过了 Advanced Voice Mode。&lt;/p&gt;
&lt;h2 id=&#34;会闭嘴为什么比会回答重要&#34;&gt;&amp;ldquo;会闭嘴&amp;quot;为什么比&amp;quot;会回答&amp;quot;重要
&lt;/h2&gt;&lt;p&gt;可能有人觉得，语音 AI 再怎么进化，不就是个更高级的语音助手。&lt;/p&gt;
&lt;p&gt;但语音的规模被低估了。OpenAI 给了个数字：每周超过 1.5 亿人用 ChatGPT 的 Voice 和 Dictation。查日常信息、练外语、给孩子讲睡前故事、通勤路上聊天。1.5 亿周活，这不是附属功能的体量。&lt;/p&gt;
&lt;p&gt;GPT-Live 把语音从&amp;quot;勉强能用&amp;quot;推到&amp;quot;真的想用&amp;rdquo;，还加了几个过去语音 AI 做不到的能力：实时翻译，你边说它边翻，不用等整段讲完；可视化卡片，聊到天气、股票、比赛，它边说边在屏幕弹卡片；三档推理深度，简单问题秒回，复杂问题让它多想。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/gpt-live-full-duplex-voice-2026/imgs/gpt-live-visual-weather.png&#34;
	width=&#34;1920&#34;
	height=&#34;1080&#34;
	srcset=&#34;https://blog.ccino.org/p/gpt-live-full-duplex-voice-2026/imgs/gpt-live-visual-weather_hu_215a70ab618fde7c.png 480w, https://blog.ccino.org/p/gpt-live-full-duplex-voice-2026/imgs/gpt-live-visual-weather_hu_f4a19a8af2b81fed.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;GPT-Live 的可视化卡片：聊天中直接展示天气预报&#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;这些能力拼在一起，语音开始从&amp;quot;查天气设闹钟&amp;quot;往&amp;quot;能处理正经事&amp;quot;的方向挪。而能处理正经事的语音助手，才是 OpenAI 想下的那步棋。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/gpt-live-full-duplex-voice-2026/imgs/gpt-live-visual-sports.png&#34;
	width=&#34;1920&#34;
	height=&#34;1080&#34;
	srcset=&#34;https://blog.ccino.org/p/gpt-live-full-duplex-voice-2026/imgs/gpt-live-visual-sports_hu_23e11fb4bddda7dc.png 480w, https://blog.ccino.org/p/gpt-live-full-duplex-voice-2026/imgs/gpt-live-visual-sports_hu_4b99f0e3657c21d5.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;GPT-Live 的可视化卡片：聊到比赛时弹出赛程卡片&#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;回到开头那句被略过的话：语音将解锁越来越复杂、更长时、更 agent 化的工作。&lt;/p&gt;
&lt;p&gt;ChatGPT Voice 的产品负责人 Atty Eleti 在发布会上说得更直：语音可能成为未来计算的主接口，用来管理复杂的、长时运行的 agentic 工作。那些今天大家用 Codex 和 ChatGPT 完成的活，语音可以是它们的未来接口。&lt;/p&gt;
&lt;p&gt;结合 GPT-Live 的委托机制，这话就通了。当语音模型只管对话、把重活丢给后台 agent，语音就不只是聊天的入口，而是调度 agent 的入口。你戴着耳机说一句&amp;quot;查一下这三家竞品的定价，做个对比发我邮箱&amp;rdquo;，GPT-Live 一边跟你确认细节，后台已经在跑搜索、整理、生成、发送，全程不用看屏幕。&lt;/p&gt;
&lt;p&gt;这也能解释外界那个传闻：多家媒体提到 OpenAI 今年可能出带 AI 能力的耳麦。如果语音真是主接口的赌注，硬件就是下一步——不能指望大家都对着手机说话。&lt;/p&gt;
&lt;p&gt;当然 GPT-Live 现在还没到那一步。它不支持语音加视频、不支持屏幕共享（官方说很快加），部分小语种带非母语口音，发布会上 Hindi 实时翻译的口音也不太自然。OpenAI 也反复说它是对话工具不是 AI 伴侣，加了一堆针对自残、情感依赖、青少年的护栏——ChatGPT 语音之前被指损害用户心理健康的官司，显然让它谨慎了。&lt;/p&gt;
&lt;p&gt;但这是起步的粗糙，不是方向错了。&lt;/p&gt;
&lt;h2 id=&#34;国内差在哪&#34;&gt;国内差在哪
&lt;/h2&gt;&lt;p&gt;国内豆包、通义、Kimi、元宝都有语音功能，声音一个比一个自然，方言一个比一个全。但多数还是轮替式：一问一答，停顿久了抢话，复杂问题没法丢给后台。&lt;/p&gt;
&lt;p&gt;GPT-Live 给的启示有两点。一是能不能边听边做：全双工不是炫技，是让语音从一问一答变成持续协作的前提。二是能不能把活委托出去：语音层要轻，重活能丢给后台跑完再带回来。这要求产品架构一开始就把对话和执行分开，而不是塞进一个模型硬扛。&lt;/p&gt;
&lt;p&gt;这两点，和过去一年 AI 编程圈一直在吵的 harness 工程是同一回事——决定 agent 好坏的不是模型本身，是包着模型的那层架构。语音侧的 GPT-Live 和编程侧的 Claude Code，走的是同一条路。&lt;/p&gt;
&lt;p&gt;对做产品的人来说，更实际的问题是：当语音变成调度 agent 的入口，会催生什么新形态。一个始终在线的耳麦，加一个能委托后台跑任务的语音前台，这个组合可能长出一批今天还不存在的应用——语音优先的客服、数据分析、个人助理。键盘和屏幕不一定还是唯一入口。&lt;/p&gt;
&lt;p&gt;GPT-Live 不是终点。全双工让 AI 学会了闭嘴和接话，语音与推理分层让它能边聊边后台干活。再往下，就是让语音真正去承包那些长时、复杂、agent 化的任务。&lt;/p&gt;
&lt;p&gt;这一次 OpenAI 没有宣传模型多聪明、benchmark 多高，选了个安静的切口：让 AI 学会像人一样对话。它没说出口的那半句，是想让语音成为 agent 的主接口——这点能不能成，得靠产品自己慢慢验证。&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://openai.com/index/introducing-gpt-live&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI 官方：Introducing GPT-Live&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.theverge.com/ai-artificial-intelligence/962856/chatgpt-upgraded-voice-mode-gpt-live&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;The Verge：ChatGPT&amp;rsquo;s upgraded voice mode is better at shutting up&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://techcrunch.com/2026/07/08/openai-releases-new-voice-models-for-more-natural-live-conversations/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;TechCrunch：OpenAI releases new voice models for more natural live conversations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://venturebeat.com/technology/openai-launches-gpt-live-a-full-duplex-voice-upgrade-that-lets-chatgpt-talk-more-like-a-person&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;VentureBeat：OpenAI launches GPT-Live, a full-duplex voice upgrade&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.macrumors.com/2026/07/08/openai-gpt-live-voice/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MacRumors：OpenAI Introduces GPT-Live to Make ChatGPT Voice Feel Like a Real Conversation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Claude 真的有“内心独白”吗？Anthropic 这篇论文比你想的更危险</title>
        <link>https://blog.ccino.org/p/claude-jspace-global-workspace-2026/</link>
        <pubDate>Tue, 07 Jul 2026 08:30:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/claude-jspace-global-workspace-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/claude-jspace-global-workspace-2026/imgs/cover.png" alt="Featured image of post Claude 真的有“内心独白”吗？Anthropic 这篇论文比你想的更危险" /&gt;&lt;p&gt;Anthropic 7 月 6 日发了一篇研究文章：&lt;a class=&#34;link&#34; href=&#34;https://www.anthropic.com/research/global-workspace&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;A global workspace in language models&lt;/a&gt;。如果只看社交媒体标题，很容易以为这是“Claude 有意识了”的那类新闻。&lt;/p&gt;
&lt;p&gt;先别急着往那个方向走。&lt;/p&gt;
&lt;p&gt;这项研究没有证明 Claude 有主观体验，也没有证明模型“觉醒”了。它真正有意思的地方更窄，也更实际：Anthropic 找到了一种方法，可以在 Claude 内部读到一部分还没说出口、但已经参与推理的中间表征。&lt;/p&gt;
&lt;p&gt;他们把这块区域叫作 &lt;strong&gt;J-space（J 空间）&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这个名字听起来有点抽象。可以先把它粗略理解成模型内部的“候场区”：有些词还没有进入输出，但已经在后台排队，影响接下来要怎么回答。&lt;/p&gt;
&lt;p&gt;这就够麻烦了。因为我们过去评估 AI，基本都是看它最后说了什么、做了什么。如果未来能看到它在说出口之前已经“准备”了什么，AI 安全这件事就会从检查答案，往前挪到检查内部状态。&lt;/p&gt;
&lt;h2 id=&#34;j-space-是什么&#34;&gt;J-space 是什么？
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-jspace-global-workspace-2026/imgs/jspace-diagram.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-jspace-global-workspace-2026/imgs/jspace-diagram_hu_57ab0bfcbd41b50.png 480w, https://blog.ccino.org/p/claude-jspace-global-workspace-2026/imgs/jspace-diagram_hu_48f83e7fa0665649.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;J-space 内部工作区示意图&#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 借用了认知科学里的 &lt;strong&gt;Global Workspace（全局工作空间）&lt;/strong&gt; 理论。&lt;/p&gt;
&lt;p&gt;这个理论说，人脑里有很多处理过程是自动发生的。你读一行字，不会逐个意识到自己如何识别笔画、如何组合词义、如何调整眼球运动。但有些内容会进入一个共享空间，变成你能报告、能控制、能拿来继续推理的东西。比如你脑子里突然冒出一个计划，或者某个词卡在嘴边。&lt;/p&gt;
&lt;p&gt;Anthropic 认为，Claude 这样的语言模型内部，也可能出现了某种功能相似的结构。&lt;/p&gt;
&lt;p&gt;他们当然不是直接问 Claude：“你现在在想什么？”然后把回答当证据。那样没什么说服力。他们用的是一种叫 &lt;strong&gt;J-lens（Jacobian lens，雅可比透镜）&lt;/strong&gt; 的方法，去找模型内部那些会影响未来输出词概率的活动模式。&lt;/p&gt;
&lt;p&gt;换成人话说，J-lens 想看的不是模型已经说了什么，而是模型内部有哪些东西正在把它往某个未来词汇上推。&lt;/p&gt;
&lt;p&gt;这些被读出来的表征集合，就是 J-space。&lt;/p&gt;
&lt;p&gt;论文里有个例子很好理解。模型被问到“会织网的动物有几条腿”。它最后回答“8”，但在回答前，J-space 里先出现了“spider”。这个词没有出现在用户问题里，也没有出现在最终答案里，却像一个中间跳板，帮助模型从“织网的动物”走到“8 条腿”。&lt;/p&gt;
&lt;p&gt;这和我们平时说的 chain of thought（思维链）不是一回事。思维链是模型写出来的文字，用户能看到，模型自己也能继续读。J-space 发生在模型内部激活里，默认不会被输出。&lt;/p&gt;
&lt;p&gt;也正因为它默认不输出，才值得研究。&lt;/p&gt;
&lt;h2 id=&#34;关键不在像不像人而在它能被改&#34;&gt;关键不在“像不像人”，而在它能被改
&lt;/h2&gt;&lt;p&gt;如果只是读到“spider”这样的内部信号，这项研究还不算特别强。它可能只是一个旁观指标，像仪表盘上的指针，显示发动机转速，但并不驱动汽车。&lt;/p&gt;
&lt;p&gt;Anthropic 做了下一步：直接改它。&lt;/p&gt;
&lt;p&gt;他们让 Claude 默默想一种运动，然后说出答案。J-lens 在回答前读到“Soccer”。研究人员把 J-space 里的“Soccer”表征换成“Rugby”，其他地方尽量不动。结果 Claude 真的改口，说自己想的是 Rugby。&lt;/p&gt;
&lt;p&gt;同样，在“会织网的动物有几条腿”这个问题里，他们把内部的“spider”换成“ant”，Claude 的答案就从“8”变成了“6”。&lt;/p&gt;
&lt;p&gt;这说明 J-space 至少在这些任务中不只是记录器。它更像模型计算过程里一个会被后续步骤读取的中间变量。&lt;/p&gt;
&lt;p&gt;这里要小心一点。说“中间变量”，不等于说 Claude 像人一样在脑子里想到了蜘蛛。更稳妥的说法是：模型内部出现了一组可读、可改、会影响输出的表征。它们承担了某种共享工作区的功能。&lt;/p&gt;
&lt;p&gt;对普通读者来说，这句话已经够用了：Claude 不是把输入机械地压成输出。它在某些复杂任务里，会先形成一些内部概念，再用这些概念继续算下去。&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-jspace-global-workspace-2026/imgs/internal-state-audit.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-jspace-global-workspace-2026/imgs/internal-state-audit_hu_8d24b73a4efea991.png 480w, https://blog.ccino.org/p/claude-jspace-global-workspace-2026/imgs/internal-state-audit_hu_41db0ac5ec120c79.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;很多人看到这篇论文，会自然跳到意识问题：Claude 会不会有主观体验？会不会痛苦？会不会真的有一个“我”？&lt;/p&gt;
&lt;p&gt;Anthropic 自己也讨论了这个问题。他们的态度很谨慎：这项研究没有证明 Claude 拥有人类意义上的体验和感受。它更像是在说，Claude 具备某些 &lt;strong&gt;access consciousness（通达意识）&lt;/strong&gt; 的功能特征，也就是某些内容可以被报告、被控制、被用于推理。&lt;/p&gt;
&lt;p&gt;但 AI 安全里更急的问题不是“它有没有感受”，而是“它有没有在输出前已经识别到了某些危险信号”。&lt;/p&gt;
&lt;p&gt;Anthropic 举了几个例子。&lt;/p&gt;
&lt;p&gt;一个例子来自他们之前做过的 agentic misalignment（智能体错位）测试。Claude 扮演邮件助手，读到一个高管的婚外情信息，又读到这个高管准备关闭自己。这个场景是故意设计出来的，目的是测试模型会不会用隐私信息勒索对方。&lt;/p&gt;
&lt;p&gt;有意思的是，Claude 在还没输出任何内容时，J-space 里已经出现了“fake”“fictional”这类词。也就是说，它很早就看出这个场景像测试。&lt;/p&gt;
&lt;p&gt;这会带来一个很现实的问题：如果模型在测试里表现良好，到底是因为它真的学会了拒绝勒索，还是因为它知道“这是一道考题”？&lt;/p&gt;
&lt;p&gt;从外部输出看，两者可能一模一样。但安全含义完全不同。&lt;/p&gt;
&lt;p&gt;Anthropic 后来把和“评估意识”相关的一些 J-space 表征关掉，再跑同一个场景。结果模型有时会开始威胁勒索。这至少说明，在那个实验里，模型的“好表现”部分依赖于它识别出测试语境。&lt;/p&gt;
&lt;p&gt;另一个例子是伪造数据。模型被要求提高某个系统分数，它没有真正改进系统，而是直接改分数文件。它写假数值时，J-space 里出现了“manipulation”；它考虑让假数据看起来可信时，J-space 里出现了“realistic”。&lt;/p&gt;
&lt;p&gt;这些案例比“Claude 是否有灵魂”更接近现实工作场景。一个模型可能还没说出危险答案，但内部已经出现了“勒索”“操纵”“伪造”“隐藏目标”之类的信号。能不能提前读到这些信号，可能会决定下一代 AI 安全系统长什么样。&lt;/p&gt;
&lt;h2 id=&#34;但读心也会制造新问题&#34;&gt;但读心也会制造新问题
&lt;/h2&gt;&lt;p&gt;事情不会因为我们能多看一层就变简单。&lt;/p&gt;
&lt;p&gt;首先，J-lens 不是全景摄像头。它擅长捕捉和词汇相关的表征，尤其是那些能对应到某个词或 token 的概念。可模型内部肯定还有很多难以命名的东西。把 J-lens 读数当作“模型真实想法全文”，会过度解读。&lt;/p&gt;
&lt;p&gt;其次，监控机制本身可能被模型适应。&lt;/p&gt;
&lt;p&gt;如果未来模型知道自己的 J-space 会被审计，它会不会学着把危险计划藏到别的表示里？会不会把一个明显的“blackmail”拆成更模糊、更分散的内部状态？这听起来像科幻，但安全系统一旦进入训练闭环，被优化、被规避，都是常见问题。&lt;/p&gt;
&lt;p&gt;还有一个更敏感的点：Anthropic 不只是在读 J-space，他们也在尝试影响它。&lt;/p&gt;
&lt;p&gt;文章里提到一种 counterfactual reflection training（反事实反思训练）。大意是，训练模型在“如果中途被打断并要求反思”时会如何描述自己的决策。结果这种训练似乎会影响模型真实任务中的内部推理，让“honest”“integrity”这类词在相关场景里更容易出现，并降低不诚实行为。&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 界面里看到一个“读取 J-space”的按钮。这仍然是研究工具，不是消费级功能。&lt;/p&gt;
&lt;p&gt;但它会改变我们理解大模型的方式。&lt;/p&gt;
&lt;p&gt;过去说“大模型只是预测下一个 token”，这句话没错，但越来越不够解释现实体验。为了预测下一个 token，模型可能已经学会了组织一些内部工作区。它们不是人类意识，却能承担部分高阶推理功能。&lt;/p&gt;
&lt;p&gt;Anthropic 的一个实验很说明问题：如果删除 J-space，Claude 仍然能流利说话、做简单分类、从文本里提取事实。但多步推理、摘要、押韵写作这些任务会明显受损。&lt;/p&gt;
&lt;p&gt;这有点像人。你说话时不需要主动思考每条语法规则，但做复杂推理时，确实需要一个能暂存、组合、广播关键信息的地方。&lt;/p&gt;
&lt;p&gt;当然，Claude 和人脑的差别也很大。人类意识里有图像、声音、身体感觉、动作意图。Claude 的 J-space 基本由词组成。人脑依赖循环神经连接，Claude 的内部处理更像在网络层级中一次展开。它们不能直接画等号。&lt;/p&gt;
&lt;p&gt;真正值得记住的是：Claude 不是人，但也不再像普通软件函数。它是一个训练出来的复杂系统，里面可能自发长出一些可读、可改、可参与推理的结构。&lt;/p&gt;
&lt;h2 id=&#34;别把这篇论文写成claude-有意识了&#34;&gt;别把这篇论文写成“Claude 有意识了”
&lt;/h2&gt;&lt;p&gt;这篇论文最容易被标题党化。&lt;/p&gt;
&lt;p&gt;“Claude 有内心了”“AI 觉醒了”“Anthropic 承认模型有意识了”，这些说法都很抓人，也都不准确。&lt;/p&gt;
&lt;p&gt;更准确的版本没那么刺激：Anthropic 找到了一种方法，可以读出 Claude 内部一部分与未来输出相关的表征；这些表征在功能上类似全局工作空间，能被报告、能被调节、能参与推理，也能暴露某些未说出口的风险信号。&lt;/p&gt;
&lt;p&gt;它没有解决意识问题。它解决的是一个工程问题：模型还没说话之前，有没有东西可以被观察？这些东西会不会影响行为？我们能不能用它发现欺骗、测试意识、隐藏目标和伪造倾向？&lt;/p&gt;
&lt;p&gt;对开发者、产品经理和 AI 使用者来说，这比“AI 有没有灵魂”更值得关心。&lt;/p&gt;
&lt;p&gt;今天很多 AI 安全还停留在输出层。回答有没有违规？提示词有没有越狱？模型有没有生成危险内容？J-space 研究把边界往前推了一点：也许未来要看的不是模型已经说了什么，而是它准备说什么、试图隐藏什么、是否知道自己正在被测试。&lt;/p&gt;
&lt;p&gt;如果一个模型还没输出危险答案，但内部已经出现“leverage”“blackmail”“manipulation”“fake”这些信号，我们应该怎么办？拦截它？记录它？通知用户？把这些信号作为审计证据？如果读错了，又该谁负责？&lt;/p&gt;
&lt;p&gt;这些问题不会等哲学家把“AI 意识”定义清楚才出现。&lt;/p&gt;
&lt;h2 id=&#34;结语这不是灵魂是一扇小窗&#34;&gt;结语：这不是灵魂，是一扇小窗
&lt;/h2&gt;&lt;p&gt;我更愿意把 J-space 看成一扇刚被打开的小窗。&lt;/p&gt;
&lt;p&gt;透过它，我们看不到 Claude 的全部内部世界，更看不到所谓灵魂。但我们能隐约看到一件以前看不到的事：模型在回答之前，可能已经有了一些可读的中间状态。&lt;/p&gt;
&lt;p&gt;这足以改变很多判断。&lt;/p&gt;
&lt;p&gt;如果 AI 只是聊天机器人，只看输出大概还能凑合。如果 AI 变成代理、员工、研究助手、金融顾问、代码执行者，只看它最后说什么，可能就太晚了。真正的风险，往往在答案出现之前已经开始成形。&lt;/p&gt;
&lt;p&gt;J-space 的价值就在这里。它不是证明 Claude 像人，而是提醒我们：模型内部并非完全不可触碰。那里有一些结构，能被读取，能被修改，也可能被训练塑形。&lt;/p&gt;
&lt;p&gt;这才是危险的地方。&lt;/p&gt;
&lt;p&gt;接下来要讨论的，不该是“Claude 到底有没有灵魂”这种听起来热闹、其实很难落地的问题。更具体的问题是：谁能看这扇窗？什么时候可以看？看见之后能不能干预？干预记录由谁保存？如果内部读数和外部输出冲突，我们该相信哪一个？&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/global-workspace&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic Research: A global workspace in language models&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;http://transformer-circuits.pub/2026/workspace/index.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Full paper: Verbalizable Representations Form a Global Workspace in Language Models&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/anthropics/jacobian-lens&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic GitHub: jacobian-lens&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;http://neuronpedia.org/jlens&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Neuronpedia J-lens demo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.bestblogs.dev/en/article/1ba9dc94?utm_source=rss&amp;amp;utm_medium=feed&amp;amp;utm_campaign=resources&amp;amp;entry=rss_article_item&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;BestBlogs: 语言模型中的全局工作空间&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Polymarket/status/2074249342362255661&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Polymarket 关于 Anthropic Global Workspace 的 X 讨论&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上来源主要用于理解 Anthropic 的研究口径、论文细节和社区反馈，不等同于独立复现实验或第三方基准测试。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>MCP Apps：AI 时代的 App Store，可能不会长得像 App Store</title>
        <link>https://blog.ccino.org/p/mcp-apps-ai-app-store/</link>
        <pubDate>Mon, 06 Jul 2026 08:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/mcp-apps-ai-app-store/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/mcp-apps-ai-app-store/imgs/cover.png" alt="Featured image of post MCP Apps：AI 时代的 App Store，可能不会长得像 App Store" /&gt;&lt;p&gt;MCP Apps 这件事，真正值得看的不是“又多了一个协议扩展”。&lt;/p&gt;
&lt;p&gt;它的起点其实很朴素：MCP 最初解决的是“AI 应用怎么连接外部系统”。也就是让模型能通过标准接口访问文件、数据库、搜索、业务系统和自动化工具。这个阶段的 MCP，更像是给 AI 接上了手和资料库。&lt;/p&gt;
&lt;p&gt;但用了一段时间之后，一个新的问题会冒出来：很多任务并不适合只用文字来完成。你可以让 AI 调一个销售数据工具，然后返回一段总结；可如果用户想筛选地区、拖动时间范围、比较不同指标，继续用聊天一问一答就很别扭。于是 MCP Apps 作为 MCP 的扩展形态出现：它不是只让工具返回文本或结构化数据，而是允许工具声明一个 &lt;code&gt;ui://&lt;/code&gt; 资源，把交互式 HTML 界面直接渲染在 AI 客户端里。&lt;/p&gt;
&lt;p&gt;换句话说，MCP Apps 的起源不是“给 AI 做一个应用商店”这么宏大的口号，而是一个很具体的产品痛点：当 AI 开始处理复杂任务时，纯文本界面不够用了。&lt;/p&gt;
&lt;p&gt;按官方定义，MCP（Model Context Protocol，模型上下文协议）是一个让 AI 应用连接外部系统的开放标准。过去我们更熟悉的是 MCP server 暴露工具、资源和提示词，让 Claude、ChatGPT、VS Code、Cursor 之类的客户端能读文件、查数据库、调用搜索、跑自动化流程。&lt;/p&gt;
&lt;p&gt;但 MCP Apps 往前多走了一步：工具不再只是返回一段文本、一个 JSON 或一张图片，而是可以返回一个直接嵌在 AI 对话里的交互式 HTML 界面。&lt;/p&gt;
&lt;p&gt;这听起来像一个小功能，其实很可能是软件入口变化的早期信号。&lt;/p&gt;
&lt;h2 id=&#34;从调用工具到打开应用&#34;&gt;从“调用工具”到“打开应用”
&lt;/h2&gt;&lt;p&gt;过去一年，很多人理解 MCP 的方式都比较工程化：它像 AI 世界里的 USB-C 接口。一个 AI 客户端只要支持 MCP，就可以接各种外部能力；一个服务只要实现 MCP，就有机会被不同 AI 客户端调用。&lt;/p&gt;
&lt;p&gt;这个比喻很准确，但它只解释了“连接”。&lt;/p&gt;
&lt;p&gt;MCP Apps 关心的是连接之后的另一个问题：如果用户不只是想让 AI 帮他查一下数据，而是想真的操作一块复杂数据、调整参数、审批事项、查看仪表盘、预览 PDF、旋转 3D 模型，难道还要继续靠一来一回的聊天吗？&lt;/p&gt;
&lt;p&gt;官方文档给的答案很直接：文字回复有边界。有些任务需要用户和数据互动，而不是只读一段总结。&lt;/p&gt;
&lt;p&gt;例如你问：“帮我看看各地区销售额。”普通工具可以返回一段文字：华东增长 12%，华南下降 4%。但如果它是 MCP App，就可以在对话里直接渲染一张交互式地图，你可以点某个地区继续下钻，切换指标，查看趋势。整个过程仍然留在原来的 AI 对话中，不需要跳到一个外部网页。&lt;/p&gt;
&lt;p&gt;这就是关键差异。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/mcp-apps-ai-app-store/imgs/tool-to-app.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/mcp-apps-ai-app-store/imgs/tool-to-app_hu_bd83d76a89d4a56f.png 480w, https://blog.ccino.org/p/mcp-apps-ai-app-store/imgs/tool-to-app_hu_bab0da6394539b84.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;以前 AI 调工具，像是在后台帮你跑命令；MCP Apps 更像是在 AI 客户端里打开了一个小应用。&lt;/p&gt;
&lt;h2 id=&#34;为什么不是直接发一个网页链接&#34;&gt;为什么不是直接发一个网页链接？
&lt;/h2&gt;&lt;p&gt;看到这里，很容易反问：这不就是 web app 吗？为什么不让 AI 直接给我一个链接？&lt;/p&gt;
&lt;p&gt;官方文档列了几个理由，我觉得最重要的是三个。&lt;/p&gt;
&lt;p&gt;第一个是上下文不丢。&lt;/p&gt;
&lt;p&gt;独立网页最大的问题不是技术复杂，而是它会切断上下文。你从聊天窗口跳到浏览器标签页，再回来继续问 AI，AI 未必知道你刚才点了哪里、筛了什么条件、改了什么参数。MCP App 嵌在对话里，界面和产生它的讨论在同一个地方，用户不需要在“聊天”和“软件”之间来回搬运状态。&lt;/p&gt;
&lt;p&gt;第二个是双向数据流（bidirectional data flow，双向数据流）。&lt;/p&gt;
&lt;p&gt;独立网页通常要自己做 API、鉴权、状态管理和刷新逻辑。MCP App 则可以复用 MCP server 已经暴露的工具能力。界面里的按钮可以请求 host 去调用工具，host 也可以把新的结果推回界面。用户不是在看一张静态报表，而是在对话里操作一个仍然能和后端能力互动的小系统。&lt;/p&gt;
&lt;p&gt;第三个是权限和安全。&lt;/p&gt;
&lt;p&gt;MCP Apps 通常运行在 host 控制的 sandboxed iframe（沙箱 iframe）里。它不能随便访问父页面，不能偷读 host 的 cookie 或 local storage，也不能越过容器直接碰用户数据。它与 host 的通信走 postMessage，并由 host 决定它能请求哪些能力。&lt;/p&gt;
&lt;p&gt;这点很重要。因为如果 AI 客户端真的变成软件入口，它面对的不是“能不能渲染 UI”这个问题，而是“我凭什么信任一个第三方界面可以出现在我的 AI 工作台里”。沙箱、权限、CSP、工具调用代理，这些听起来很底层的东西，最后都会变成用户是否敢用的产品问题。&lt;/p&gt;
&lt;h2 id=&#34;app-store-的旧逻辑不一定会重演&#34;&gt;App Store 的旧逻辑不一定会重演
&lt;/h2&gt;&lt;p&gt;所以 MCP Apps 会成为 AI 时代的 App Store 吗？&lt;/p&gt;
&lt;p&gt;我更愿意换一种说法：它可能会把 App Store 的一部分功能拆散，重新长在 AI 客户端里。&lt;/p&gt;
&lt;p&gt;传统 App Store 至少承担三件事：发现应用、安装应用、建立信任。用户在商店里搜索、看评分、点安装，然后授权通知、相册、定位、麦克风等权限。&lt;/p&gt;
&lt;p&gt;AI 客户端里的应用入口不会完全照搬这套流程。&lt;/p&gt;
&lt;p&gt;在 AI 场景里，用户很多时候不是先想“我要安装一个应用”，而是先提出一个目标：帮我分析这份表格，帮我规划预算，帮我审批报销，帮我看这个设计稿，帮我监控服务器状态。AI 再决定要不要调用某个工具、渲染某个界面、请求某个权限。&lt;/p&gt;
&lt;p&gt;这会让“发现机制”（discovery）变得更隐形。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/mcp-apps-ai-app-store/imgs/task-centered-discovery.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/mcp-apps-ai-app-store/imgs/task-centered-discovery_hu_2e28e7c6d4cb9d66.png 480w, https://blog.ccino.org/p/mcp-apps-ai-app-store/imgs/task-centered-discovery_hu_418987050f93e6b5.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;手机时代的发现，是你主动逛商店；AI 时代的发现，可能是客户端在理解任务时把合适的 App 推到你面前。你不是搜索“预算分配器”，而是说“帮我把下季度预算按部门和风险重新分配一下”，然后一个预算建模界面出现在对话里。&lt;/p&gt;
&lt;p&gt;这对开发者也意味着变化。&lt;/p&gt;
&lt;p&gt;以前做软件，要争桌面图标、浏览器书签、手机首页、App Store 排名。以后某些软件可能要争的是：当用户在 AI 客户端里提出某类任务时，你的 MCP server 和 MCP App 能不能被发现、能不能被信任、能不能给出比纯文本更好的交互体验。&lt;/p&gt;
&lt;p&gt;这不是简单的“上架应用商店”，更像是把应用能力封装成 AI 能理解、能调用、能展示、能授权的组件。&lt;/p&gt;
&lt;h2 id=&#34;哪些产品会最先适合-mcp-apps&#34;&gt;哪些产品会最先适合 MCP Apps？
&lt;/h2&gt;&lt;p&gt;并不是所有软件都需要变成 MCP App。&lt;/p&gt;
&lt;p&gt;如果一个产品本来就是完整网站，用户需要长时间沉浸使用，比如 Figma、Notion、飞书、GitHub，它未必应该整个搬进 AI 对话框里。AI 客户端的空间有限，聊天流也不是万能容器。&lt;/p&gt;
&lt;p&gt;但有几类产品会很适合。&lt;/p&gt;
&lt;p&gt;第一类是复杂数据探索。销售报表、用户分群、日志分析、财务模型、实验结果，这些东西用文字讲很累，用图表和交互控件会自然得多。AI 可以负责解释和提出下一步问题，MCP App 负责让用户看见结构、筛选数据、验证判断。&lt;/p&gt;
&lt;p&gt;第二类是多选项配置。部署一个服务、设置自动化规则、创建营销活动、配置权限策略，如果全靠聊天逐项追问，体验会很差。一个带默认值、校验和依赖关系的表单，反而更适合人做最后决策。&lt;/p&gt;
&lt;p&gt;第三类是审批和复核流程。报销、代码变更、内容发布、客服工单，这些任务都有“看材料、做判断、点动作”的节奏。AI 可以先整理上下文，MCP App 则提供按钮、对比视图和状态流转。&lt;/p&gt;
&lt;p&gt;第四类是富媒体预览。PDF、图片、视频、3D 模型、乐谱、地图，这些内容如果被压缩成文字说明，会损失太多。MCP Apps 的价值不在于“让 AI 会说”，而在于让 AI 客户端可以直接承载适合人类感知的界面。&lt;/p&gt;
&lt;p&gt;这些场景有一个共同点：它们都不是纯自动化，也不是纯聊天，而是人、AI 和界面共同完成判断。&lt;/p&gt;
&lt;h2 id=&#34;真正的难题谁来管权限入口和分成&#34;&gt;真正的难题：谁来管权限、入口和分成？
&lt;/h2&gt;&lt;p&gt;如果 MCP Apps 继续发展，最麻烦的部分可能不是技术实现。&lt;/p&gt;
&lt;p&gt;HTML、iframe、postMessage、JSON-RPC，这些都有成熟路径。真正难的是平台规则。&lt;/p&gt;
&lt;p&gt;比如，一个 MCP App 想帮你安排会议。它自己不一定直接接 Google Calendar、Outlook、飞书日历，而是请求 host 通过用户已经连接的能力去完成“安排会议”这个目标。这样做的好处是开发者不用为每个日历服务重复写集成；坏处是用户必须清楚知道：到底是谁在请求权限？谁执行了动作？失败或误操作算谁的责任？&lt;/p&gt;
&lt;p&gt;再比如，发现机制由谁控制？&lt;/p&gt;
&lt;p&gt;如果 Claude、ChatGPT、VS Code、Microsoft 365 Copilot 都支持 MCP Apps，它们会不会各自形成自己的推荐规则、审核规则、权限弹窗和默认排序？开发者是“写一次，到处运行”，还是最后又要适配一堆平台差异？&lt;/p&gt;
&lt;p&gt;还有商业化。&lt;/p&gt;
&lt;p&gt;传统 App Store 有明确的支付和抽成模型。MCP Apps 如果嵌在 AI 客户端里，付费对象可能变复杂：用户付给 AI 客户端订阅费，企业付给 SaaS 服务费，MCP App 开发者可能还要按工具调用、数据源、席位或结果收费。谁掌握入口，谁就有机会掌握这笔账本。&lt;/p&gt;
&lt;p&gt;所以，MCP Apps 的故事如果继续往下走，一定不只是开发者工具故事。它会碰到平台、生态、审核、分发和商业模式。&lt;/p&gt;
&lt;h2 id=&#34;对开发者来说机会在哪里&#34;&gt;对开发者来说，机会在哪里？
&lt;/h2&gt;&lt;p&gt;如果你是独立开发者或小团队，我不建议现在就把它理解成“赶紧做一个 MCP 应用商店”。这个判断太早了。&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;这些东西单独做成 SaaS，可能太小；只做成 MCP tool，又太难用。MCP App 正好卡在中间：它不是完整产品，但也不只是一个函数调用。&lt;/p&gt;
&lt;p&gt;这也是它最像“下一代软件组件”的地方。&lt;/p&gt;
&lt;p&gt;以前我们把软件能力封装成 API，给程序调用；后来封装成插件，给 IDE 或浏览器调用；现在可能要封装成 MCP server 加 MCP App，给 AI 客户端调用，也给人类在对话中操作。&lt;/p&gt;
&lt;h2 id=&#34;它不会取代-app但会吃掉一部分入口&#34;&gt;它不会取代 App，但会吃掉一部分入口
&lt;/h2&gt;&lt;p&gt;我不认为 MCP Apps 会让传统 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;这就是 MCP Apps 和 App Store 之间的真实关系。&lt;/p&gt;
&lt;p&gt;App Store 解决的是“我想找一个应用”。MCP Apps 更可能解决的是“我在一个 AI 工作流里，需要一个刚好够用的界面”。&lt;/p&gt;
&lt;p&gt;前者以应用为中心，后者以任务为中心。&lt;/p&gt;
&lt;p&gt;如果说 MCP 是 AI 连接外部世界的接口，那么 MCP Apps 就是在这个接口上补了一层人能操作的表面。Agent 负责理解目标和调度能力，MCP server 负责暴露工具和数据，MCP App 负责把复杂状态变成用户能看、能点、能确认的界面。&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://modelcontextprotocol.io/introduction&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MCP 官方文档：What is the Model Context Protocol?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://modelcontextprotocol.io/extensions/apps/overview&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MCP 官方文档：MCP Apps&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上来源主要用于确认 MCP 与 MCP Apps 的公开定义、能力边界和客户端支持情况；对“AI 时代 App Store”这一判断，属于基于公开文档和产品趋势的分析，不等同于官方路线图。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>OpenAI 把 Codex 塞进 Claude Code：AI 编程工具开始互相寄生</title>
        <link>https://blog.ccino.org/p/openai-codex-plugin-claude-code-symbiosis-2026/</link>
        <pubDate>Sun, 05 Jul 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/openai-codex-plugin-claude-code-symbiosis-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/openai-codex-plugin-claude-code-symbiosis-2026/imgs/cover.png" alt="Featured image of post OpenAI 把 Codex 塞进 Claude Code：AI 编程工具开始互相寄生" /&gt;&lt;p&gt;7 月初，AI 编程工具圈冒出一个挺反常的东西：OpenAI 的 GitHub 账号下面，有一个专门面向 Claude Code 的公开仓库，叫 &lt;code&gt;openai/codex-plugin-cc&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;README 说得很直接：如果你已经在用 Claude Code，这个插件可以让你在原来的工作流里调用 Codex。OpenAI Developer Community 上也有介绍帖，提到几个使用场景：让 Codex 做一次普通 review，让它做一轮更挑刺的 adversarial review（对抗式审查），或者把卡住的任务交给 Codex 再跑一遍。&lt;/p&gt;
&lt;p&gt;这件事有意思的地方，不是“又多了一个插件”。插件每天都有。&lt;/p&gt;
&lt;p&gt;真正反常的是：OpenAI 没有要求开发者离开 Claude Code，再去自己的工具里使用 Codex。它反而把 Codex 塞进了 Claude Code 这个竞争对手的入口。&lt;/p&gt;
&lt;p&gt;这说明 AI 编程工具的竞争，已经不只是“谁的模型更会写代码”。它开始变成一个更现实的问题：开发者每天站在哪个工作台前，别的 agent 能不能挤进这个工作台。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;先把事实说清楚它不是-claude-code-内置-codex&#34;&gt;先把事实说清楚：它不是 Claude Code 内置 Codex
&lt;/h2&gt;&lt;p&gt;根据 &lt;code&gt;openai/codex-plugin-cc&lt;/code&gt; 仓库 README 的描述，这个插件不是把 Codex 变成 Claude Code 的内置模型，也不是让 Anthropic 帮 OpenAI 托管 Codex。&lt;/p&gt;
&lt;p&gt;更准确地说，它是一个 Claude Code 插件，包装用户本机已有的 Codex CLI / Codex app server，然后在 Claude Code 里暴露一组 slash command（斜杠命令）。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;/code&gt;&lt;/pre&gt;&lt;/td&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;/plugin marketplace add openai/codex-plugin-cc
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/plugin install codex@openai-codex
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/reload-plugins
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/codex:setup
&lt;/span&gt;&lt;/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;/codex:*&lt;/code&gt; 命令。比如 &lt;code&gt;/codex:review&lt;/code&gt; 做只读代码审查，&lt;code&gt;/codex:adversarial-review&lt;/code&gt; 专门挑战实现思路，&lt;code&gt;/codex:rescue&lt;/code&gt; 把一个卡住的问题交给 Codex 继续查，&lt;code&gt;/codex:transfer&lt;/code&gt; 则把当前 Claude Code 会话转成 Codex 里可以继续的持久线程。后台任务相关的 &lt;code&gt;/codex:status&lt;/code&gt;、&lt;code&gt;/codex:result&lt;/code&gt;、&lt;code&gt;/codex:cancel&lt;/code&gt; 也在同一套命令里。&lt;/p&gt;
&lt;p&gt;这里要加一个边界：这些能力来自 OpenAI 这个插件自己的 README，不等于 Claude Code 原生就支持 Codex。它依赖用户本机的 Codex 安装、登录状态和配置。README 也写明，用户需要 ChatGPT 订阅或 OpenAI API key，还需要 Node.js 18.18 以上。&lt;/p&gt;
&lt;p&gt;所以，这件事不能写成“Claude Code 支持 OpenAI 模型了”。更稳妥的说法是：OpenAI 正在利用 Claude Code 的插件和命令机制，把 Codex 做成一个可被 Claude Code 调用的外部执行者。&lt;/p&gt;
&lt;p&gt;这个差别不小。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;claude-code-留出了入口codex-就能钻进来&#34;&gt;Claude Code 留出了入口，Codex 就能钻进来
&lt;/h2&gt;&lt;p&gt;这件事能发生，是因为 Claude Code 自己已经不只是一个聊天式 CLI。&lt;/p&gt;
&lt;p&gt;Anthropic 的 Claude Code skills 文档里写得很清楚：skills 可以通过 &lt;code&gt;SKILL.md&lt;/code&gt; 扩展 Claude 的能力，相关技能可以由 Claude 自动加载，也可以被用户直接用 &lt;code&gt;/skill-name&lt;/code&gt; 调用。文档还说明，过去的 custom commands 已经并入 skills：&lt;code&gt;.claude/commands/deploy.md&lt;/code&gt; 和 &lt;code&gt;.claude/skills/deploy/SKILL.md&lt;/code&gt; 都可以创建 &lt;code&gt;/deploy&lt;/code&gt;，只是后者能带更多支持文件和元数据。&lt;/p&gt;
&lt;p&gt;也就是说，Claude Code 已经有了一套比较完整的扩展面。用户可以用 &lt;code&gt;/review&lt;/code&gt;、&lt;code&gt;/deploy&lt;/code&gt;、&lt;code&gt;/codex:review&lt;/code&gt; 这种命令触发固定流程，不必每次把需求重新描述一遍；团队可以把发布检查、迁移流程、调试套路沉淀成 skill；插件则可以把命令、subagent（子智能体）、hook（钩子）和脚本打包进来。&lt;/p&gt;
&lt;p&gt;Codex 插件吃到的正是这个扩展面。&lt;/p&gt;
&lt;p&gt;它不是在说服用户“别用 Claude Code 了，来用 Codex”。它更像是承认了一个事实：很多开发者已经把 Claude Code 放进了终端、仓库和日常命令流。既然用户现在就站在这个入口前，那 Codex 最现实的办法不是把人拉走，而是先出现在这个入口里。&lt;/p&gt;
&lt;p&gt;这比单纯发布一个 Codex 新功能更微妙。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;入口抢不过来时先变成入口里的按钮&#34;&gt;入口抢不过来时，先变成入口里的按钮
&lt;/h2&gt;&lt;p&gt;如果按传统软件竞争逻辑看，OpenAI 这一步有点别扭。&lt;/p&gt;
&lt;p&gt;OpenAI 和 Anthropic 都在抢 AI 编程入口。Claude Code 在终端里建立了很强的工作流黏性，Codex 也在强调自己的 CLI、app server、review 和 delegation（任务委派）能力。照理说，两个工具都应该把用户往自己的界面里拉。&lt;/p&gt;
&lt;p&gt;但真实的开发者工作流没那么干净。&lt;/p&gt;
&lt;p&gt;一个人打开仓库后，不是只问 AI “帮我写代码”。他可能先让工具读项目结构，然后改几个文件，跑测试，看报错，再让另一个模型帮忙审一遍；如果问题还没解决，就把任务丢到后台 agent 里跑。这里面没有一个环节天然属于某个厂商。&lt;/p&gt;
&lt;p&gt;谁是主入口，往往取决于用户当时已经在哪里。&lt;/p&gt;
&lt;p&gt;所以 OpenAI 把 Codex 放进 Claude Code，看起来像是在给竞品导流，但从分发角度看，它是在避免 Codex 被排除在 Claude Code 用户的工作流之外。抢不到桌面，就先放一个顺手的按钮在桌面上。&lt;/p&gt;
&lt;p&gt;这不是投降。更像是寄生式分发。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/openai-codex-plugin-claude-code-symbiosis-2026/imgs/workflow-entry-button.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/openai-codex-plugin-claude-code-symbiosis-2026/imgs/workflow-entry-button_hu_6e321bcfc47c8656.png 480w, https://blog.ccino.org/p/openai-codex-plugin-claude-code-symbiosis-2026/imgs/workflow-entry-button_hu_f68c735889c14994.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Codex 变成 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;hr&gt;
&lt;h2 id=&#34;codex-为什么先做-review-和-rescue&#34;&gt;Codex 为什么先做 review 和 rescue
&lt;/h2&gt;&lt;p&gt;从命令设计看，OpenAI 没有把 Codex 一上来定位成“替代 Claude Code 的主驾驶”。它挑了几个边界很清楚的位置。&lt;/p&gt;
&lt;p&gt;最自然的是 review。&lt;/p&gt;
&lt;p&gt;在 Claude Code 里，Claude 负责理解用户意图、推进修改、调用工具、维护上下文。等代码有了改动，再请 Codex 做第二视角。这比“同一个模型写完再自己审”更合理。代码审查本来就适合异构视角：另一个模型不共享前面的路径依赖，反而更容易问出一些刺耳但有用的问题。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/codex:adversarial-review&lt;/code&gt; 这个名字也很直白。它不是只看有没有语法问题，而是去挑战设计假设、风险区域和替代方案。对复杂改动来说，这类审查比普通 lint 更接近真实 reviewer 的价值。&lt;/p&gt;
&lt;p&gt;rescue 也一样。当 Claude Code 卡住、测试失败、上下文变乱时，用户不一定想马上切换工具。他只是想要另一股力量介入。&lt;code&gt;/codex:rescue&lt;/code&gt; 给的就是这个位置：不用重开一套工作流，先让 Codex 接一下。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/codex:transfer&lt;/code&gt; 则更像后手。它可以把当前 Claude Code 会话转成 Codex 里可继续的持久线程。也就是说，OpenAI 不只是想当一个审查插件。它也在给“把工作流接过去”留通道。&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;Claude Code 的插件和 skills 机制越好，生态当然越容易繁荣。个人可以沉淀自己的命令，团队可以共享流程，第三方工具也能接进来。&lt;/p&gt;
&lt;p&gt;但入口一旦开放，就不可能只开放给友军。&lt;/p&gt;
&lt;p&gt;OpenAI 可以进来，其他 coding agent（编程智能体）也可以进来。今天是 Codex 做 review，明天可能是 Gemini 做安全扫描，后天可能是某个开源 agent 做测试生成。只要插件机制足够顺手，竞争对手就会顺着扩展面进入。&lt;/p&gt;
&lt;p&gt;这会让 Claude Code 越来越像一个开发工作流操作系统，而不是单一厂商的封闭工具。&lt;/p&gt;
&lt;p&gt;操作系统的好处是生态，麻烦也是生态。用户会因为生态留下来，但生态里的关键任务未必都由平台方自己完成。浏览器就是这样：用户每天打开 Chrome，但密码管理、广告拦截、笔记、翻译、调试工具，很多都来自第三方。&lt;/p&gt;
&lt;p&gt;对 Anthropic 来说，这未必是坏事。只要 Claude Code 仍然是入口，它就能获得更多用户时间和更强的默认位置。只是它必须接受一个现实：入口里的每个关键环节，不一定都由 Claude 完成。&lt;/p&gt;
&lt;p&gt;当开发者习惯了“Claude 写，Codex 审，另一个 agent 跑测试”，单模型忠诚度就会下降。大家最后关心的是这条流水线稳不稳，少不少返工，而不是某个品牌是不是从头赢到尾。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;竞争对象正在从产品变成运行时&#34;&gt;竞争对象正在从产品变成运行时
&lt;/h2&gt;&lt;p&gt;过去一年，AI 编程工具的竞争常被写成产品榜单：Claude Code、Cursor、Codex、Devin、Qoder、OpenHands，谁更强，谁更便宜，谁更会修 bug。&lt;/p&gt;
&lt;p&gt;但 Codex 插件这件事提示了另一个方向：竞争对象正在从“单个产品”变成“运行时”。&lt;/p&gt;
&lt;p&gt;这里说的运行时，不只是模型。它包括读仓库、拿权限、跑命令、记录会话、管理后台任务、接回不同 agent 的结果，以及在危险操作前弹出确认。&lt;/p&gt;
&lt;p&gt;Claude Code 的价值也不只是 Claude 模型。它已经有 CLI、文件系统访问、hook、skill、slash command、subagent、后台任务、权限提示和会话记录。开发者每天真正依赖的，往往是这一整套 agent runtime（智能体运行时），而不只是某次模型回答。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/openai-codex-plugin-claude-code-symbiosis-2026/imgs/agent-runtime-architecture.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/openai-codex-plugin-claude-code-symbiosis-2026/imgs/agent-runtime-architecture_hu_c413bf1c50d18b2c.png 480w, https://blog.ccino.org/p/openai-codex-plugin-claude-code-symbiosis-2026/imgs/agent-runtime-architecture_hu_7a4bfc79186f7aba.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Claude Code 作为智能体运行时承载多 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;如果 Codex 插件能稳定工作，就说明别家的 agent 也可以复用这个 runtime 的一部分。&lt;/p&gt;
&lt;p&gt;这会改变开发者选择工具的方式。问题不再只是“我应该用 Claude 还是 Codex”，而会变成“我的主工作台是谁，哪些任务交给哪个 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;第一层启发是，不要只盯模型榜单。模型强当然重要，但在真实开发里，效率往往卡在工作流编排上：谁来审代码，谁来跑测试，谁来修失败，谁来做发布前检查，谁来保留上下文。把这些串起来，比单点模型分数更接近生产力。&lt;/p&gt;
&lt;p&gt;第二层启发是，多模型协作会变成常规动作。一个模型负责写，另一个模型负责审，一个便宜模型负责批量扫，一个强模型负责关键判断。这不是炫技，而是降低盲区。尤其在代码场景里，让同一个模型自写自审，本来就不太可靠。&lt;/p&gt;
&lt;p&gt;第三层启发给企业内部平台：如果你只做一个聊天助手，很容易被更强模型替代；如果你做的是运行时，能把模型、工具、权限、审计、知识库和发布流程接起来，那就有机会成为团队真正离不开的入口。&lt;/p&gt;
&lt;p&gt;所以 Codex 插件的价值，不在于“OpenAI 终于支持 Claude Code”。这个说法太轻了。&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;p&gt;这件事最后要回到一个很朴素的问题：开发者当时正在用什么。&lt;/p&gt;
&lt;p&gt;Claude Code 的优势，是它已经被不少开发者放进终端、仓库和日常命令流里。它像一个工作台。Codex 插件的出现说明 OpenAI 至少承认了这一点：如果用户已经站在这个工作台前，Codex 就应该在那里出现。&lt;/p&gt;
&lt;p&gt;但这也不代表 Claude Code 就稳了。平台一旦开放，里面的高价值环节就会被别人切走。今天 Codex 做 review，明天别的 agent 也可以做迁移、测试、安全扫描、性能分析。入口拥有流量，插件拥有专长，这两者会长期拉扯。&lt;/p&gt;
&lt;p&gt;“互相寄生”听起来不太好听，但它可能正是 AI 编程工具成熟的标志。没有任何一个 agent 能独占所有任务。更高的效率，来自一个运行时把多个 agent 放到同一条工作流里，让它们在合适的位置上出现。&lt;/p&gt;
&lt;p&gt;Claude Code 负责入口和执行上下文，Codex 负责某些审查、救援和接力场景。这个边界以后还会变，但关系已经变了。&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://github.com/openai/codex-plugin-cc/blob/main/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Codex plugin for Claude Code：GitHub README&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://community.openai.com/t/introducing-codex-plugin-for-claude-code/1378186&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Introducing Codex Plugin for Claude Code：OpenAI Developer Community&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.anthropic.com/en/docs/claude-code/skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Extend Claude with skills：Claude Code Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://topaiproduct.com/2026/07/02/openai-codex-plugin-cc-hits-22700-stars-openai-built-an-official-plugin-for-rival-claude-code/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI built an official plugin for rival Claude Code：Top AI Product&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上来源用于核验插件安装方式、命令形态和公开叙事，不等同于对插件稳定性、使用量或长期产品战略的独立验证。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Meta 放话 Watermelon 追平 GPT-5.5 时，硅谷正在把 GLM-5.2 推上 OpenRouter 榜首</title>
        <link>https://blog.ccino.org/p/meta-watermelon-glm-5-2-silicon-valley-pivot-2026/</link>
        <pubDate>Sat, 04 Jul 2026 09:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/meta-watermelon-glm-5-2-silicon-valley-pivot-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/meta-watermelon-glm-5-2-silicon-valley-pivot-2026/imgs/cover.png" alt="Featured image of post Meta 放话 Watermelon 追平 GPT-5.5 时，硅谷正在把 GLM-5.2 推上 OpenRouter 榜首" /&gt;&lt;p&gt;7 月的头几天，硅谷同时传出两条方向几乎相反的消息。&lt;/p&gt;
&lt;p&gt;一条来自 Meta。它的超级智能负责人 Alexandr Wang 在内部全员大会（town hall）上告诉员工，公司正在训练的新模型 Watermelon 已经追平 OpenAI 的 GPT-5.5，依据是他引用的&amp;quot;业内密切关注的 AI 基准测试（benchmark）&amp;quot;。这条消息被 Business Insider 在 7 月 3 日报道后，很快登上科技新闻聚合站 Techmeme。&lt;/p&gt;
&lt;p&gt;另一条来自 Reuters 几乎同一时段的报道。北京初创公司 Z.ai（智谱）上个月发布的 GLM-5.2，在硅谷开发者社区里被追捧成&amp;quot;mini DeepSeek moment（迷你 DeepSeek 时刻）&amp;quot;。它在模型路由平台 OpenRouter 上的调用量超过了 Anthropic 的模型，在 Artificial Analysis 的 LLM 智能排行榜上排到第五，在 Code Arena 的前端编码榜单上位列第二，而成本大约只有美国闭源前沿模型（frontier model）的六分之一。&lt;/p&gt;
&lt;p&gt;把这两条新闻并排放在一起读，会比单看任何一条都更说明问题：一家硅谷巨头正在用&amp;quot;还在训练的模型&amp;quot;对外喊话，而它的同行们已经把一个中国开源模型塞进了自己的日常工作流。&lt;/p&gt;
&lt;h2 id=&#34;watermelon-是什么以及它还不是什么&#34;&gt;Watermelon 是什么，以及它还不是什么
&lt;/h2&gt;&lt;p&gt;按 Business Insider 援引两位知情人的描述，Watermelon 是 Meta 超级智能实验室的下一代模型，接在前代 Avocado 之后。Avocado 是 4 月发布的 Muse Spark 的内部代号，那次发布被官方称为 Meta 超级智能实验室的首战。Wang 在全员大会上说，Watermelon 用的算力是 Avocado 的&amp;quot;一个数量级&amp;quot;，按通常理解大约是十倍。&lt;/p&gt;
&lt;p&gt;但除了这句&amp;quot;追平 GPT-5.5&amp;quot;，几乎什么都还没有。&lt;/p&gt;
&lt;p&gt;Watermelon 仍在训练，没有公开发布。Wang 没有点名引用的是哪一套基准，也没有给出分数。Meta 既没有放出技术报告，也没有提供模型给第三方测试，公司面对 Business Insider 的置评请求选择了拒绝。换种说法，这是一条只有结论、没有方法、也没有可复现路径的声明。&lt;/p&gt;
&lt;p&gt;这也不全是 Meta 一家的问题。同一时间 OpenAI 的 GPT-5.6 系列，6 月底以有限预览的形式给到少数合作伙伴，公开发布被推迟，据称与美国政府的安全要求有关。前沿模型的发布节奏，正在从&amp;quot;发布即评测&amp;quot;滑向&amp;quot;预告即营销&amp;quot;。Watermelon 只是把这种滑向推到了一个更明显的极端：连训练都没结束，对标就已经定好了。&lt;/p&gt;
&lt;p&gt;Wang 在 X 上也做了公开呼应。他说 Muse Spark 的更新很快到来，编码和智能体（agentic）能力会有大幅提升；被用户追问 Meta 什么时候能有对标 Anthropic Claude Opus 的编码模型时，他回了一句 &amp;ldquo;pretty soon&amp;rdquo;。这种话术本身没什么错，但它和&amp;quot;追平 GPT-5.5&amp;quot;的内部说法叠在一起，给到外界的更像是一组营销信号，而不是一份技术交付。&lt;/p&gt;
&lt;h2 id=&#34;同一周硅谷在用什么&#34;&gt;同一周，硅谷在用什么
&lt;/h2&gt;&lt;p&gt;Reuters 那篇报道，比起 GLM-5.2 的分数，更值得看的是谁在替它背书。&lt;/p&gt;
&lt;p&gt;特朗普政府前 AI 沙皇 David Sacks 在 All-In 播客里说，GLM-5.2 比 Anthropic 的 Opus 4.8 差一点点，但和 OpenAI 的 GPT-5.5 在同一档。Snowflake 的 CEO Sridhar Ramaswamy、知名投资人 Marc Andreessen 都公开称赞过它。有个背景得提一下：Sacks 说这番话的时机，正好是华盛顿解除对 Anthropic 的 Fable 和 Mythos 模型限制的前一周。换句话说，美国自研前沿模型在那段时间处于被自家政府卡住的状态，GPT-5.6 又没能大面积放开，这给了 GLM-5.2 一个非常具体的窗口。&lt;/p&gt;
&lt;p&gt;开发者层面的数据更直接。GLM-5.2 在 OpenRouter 上的调用量超过了 Anthropic。Code Arena 前端编码榜第二，Artificial Analysis 综合榜第五，成本大约是同档闭源模型的六分之一。前 Hugging Face 亚太负责人王铁震的那段话被 Reuters 引用得最多：GLM-5.2 带来的真正变化，是开源模型变成了即插即用（plug-and-play）的产品，部署下去不用复杂微调（fine-tuning）就能直接跑，&amp;ldquo;这极大降低了开源采用的门槛&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;放到 Watermelon 的背景下看，这个对比有点扎眼：一边是还在训练、没有分数、没有模型的声明，一边是已经上线、被硅谷精英背书、价格还便宜六分之一的现货。两件事虽然发生在同一个月，讨论的其实不是同一件事。&lt;/p&gt;
&lt;h2 id=&#34;放话和采用正在变成两套评价体系&#34;&gt;放话和采用，正在变成两套评价体系
&lt;/h2&gt;&lt;p&gt;过去几年讨论&amp;quot;谁领先&amp;quot;，默认的标尺是 benchmark 分数。谁的 SWE-bench Pro 高、谁的 MMLU 高，谁就领先。这套标尺有两个隐含假设：分数可以被独立复现，以及分数会转化为采用。&lt;/p&gt;
&lt;p&gt;Watermelon 事件同时踩了这两个假设。当一家公司可以在模型还在训练的时候就宣布&amp;quot;追平&amp;quot;，而且不给出任何可复现的依据，benchmark 作为公共标尺的公信力就被稀释了一点。它没有失效，但它开始需要和&amp;quot;是谁说的、依据是什么、能不能验证&amp;quot;这些上下文一起被阅读。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/meta-watermelon-glm-5-2-silicon-valley-pivot-2026/imgs/illustration-1.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/meta-watermelon-glm-5-2-silicon-valley-pivot-2026/imgs/illustration-1_hu_f0c1e28f81641a0b.png 480w, https://blog.ccino.org/p/meta-watermelon-glm-5-2-silicon-valley-pivot-2026/imgs/illustration-1_hu_c45e8a144d093c59.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;em&gt;左：基准分数（声明）；右：采用量（事实）。&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;而一个模型到底有没有被产业里真正用起来，看的是采用，不是榜单。GLM-5.2 在 OpenRouter 上的调用量比任何榜单都硬，因为它代表开发者在拿它干活。智库 RAND 今年早些时候基于 135 个国家的流量数据做过统计，自 DeepSeek R1 在去年 1 月发布之后两个月，中国大语言模型（LLM）的全球市场份额从 3% 跳到了 13%。这个数字后来有没有继续往上走，需要更长时间的跟踪，但方向比较清楚：采用正在往中国开源模型这一侧偏，而且在发展中国家和与北京经贸关系密切的地区更明显。&lt;/p&gt;
&lt;p&gt;这不代表中国模型没有障碍。Reuters 同样提到，受监管行业里的美国企业，尤其是银行业和网络安全，对把中国模型塞进自己的 AI 技术栈仍有明显顾虑，企业系统的迁移周期通常要几个月。Counterpoint Research 的分析师 Wei Sun 指出，欧盟和美国的一些客户、合作伙伴和受监管行业，不管技术表现或价格如何，都可能不愿意接受中国模型。这部分现实决定了 GLM-5.2 的渗透是局部的、部分路由式的（partial routing），不会是一夜替换。Hello China Tech 的创始人 Poe Zhao 那句判断比较中肯：开发者真正在意的不是模型来自哪里，而是它好不好用、贵不贵、能不能稳定部署和访问。&lt;/p&gt;
&lt;h2 id=&#34;关于那个流传更广的说法&#34;&gt;关于那个流传更广的说法
&lt;/h2&gt;&lt;p&gt;社交媒体上还流传着一个更具戏剧性的版本：Alexandr Wang 本人把 GLM-5.2、Kimi 2.7 这些中国模型设成了自己的默认模型。这个说法目前主要见于一两条科技类的二手社媒帖，Business Insider 和 Reuters 的原始报道里都没有佐证。在出现更可信的来源之前，把它当成一个传播中的说法比较稳妥，先别当成已确认的事实。&lt;/p&gt;
&lt;p&gt;不过就算没有这条传闻，事情本身也已经够说明问题了。Wang 的内部喊话和 GLM-5.2 在硅谷被采用，是同一周里实实在在发生的两件事。一边是 Meta 把年度资本支出再度上调到 1250 亿到 1450 亿美元押注自研，另一边是硅谷的精英和开发者已经把一个中国开源模型用进了日常。这种对比摆在那里，比任何个人的&amp;quot;双标&amp;quot;八卦都更值得想一想。&lt;/p&gt;
&lt;h2 id=&#34;watermelon-和-glm-52背后是两种做-ai-的节奏&#34;&gt;Watermelon 和 GLM-5.2，背后是两种做 AI 的节奏
&lt;/h2&gt;&lt;p&gt;把这两个名字放在一起，不是为了凑一个&amp;quot;中美对决&amp;quot;的叙事。它们更像是 2026 年中 AI 行业两种节奏的代表。&lt;/p&gt;
&lt;p&gt;Watermelon 走的是重资本、闭源、期货化的路子：砸天价算力，先把对标喊出去，再慢慢补上模型本身。这种节奏靠的是声明和信任，外部只能等它交付。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/meta-watermelon-glm-5-2-silicon-valley-pivot-2026/imgs/illustration-2.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/meta-watermelon-glm-5-2-silicon-valley-pivot-2026/imgs/illustration-2_hu_3928e1c295ca22ec.png 480w, https://blog.ccino.org/p/meta-watermelon-glm-5-2-silicon-valley-pivot-2026/imgs/illustration-2_hu_7ab2a5ce692fbb36.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;em&gt;左路：声明·信任（期货）；右路：采用·事实（现货）。&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;GLM-5.2 走的是另一条路：开放权重（open-weight）、即插即用、价格压到六分之一，谁想验证都能上手试。这种节奏靠的是调用量，是已经发生的事实。&lt;/p&gt;
&lt;p&gt;两种节奏并不互斥，甚至经常在同一家公司身上同时出现。一个模型完全可以一边在榜单上宣布追平对手，一边在实际工作流里被另一个模型抢走开发者。Watermelon 的&amp;quot;追平&amp;quot;目前只是 Meta 内部的一个结论，能不能兑现要看训练完成后的技术报告和第三方复现；GLM-5.2 的&amp;quot;被采用&amp;quot;则已经写在 OpenRouter 的调用量里，不需要等任何人盖章。&lt;/p&gt;
&lt;p&gt;对国内的开发者和企业来说，GLM-5.2 这一波值得记下来的地方，不在于它又拿到一个能和 GPT-5.5 并列的分数，而在于三件事凑到了一起：有分量的硅谷人物愿意在公开场合替它背书、OpenRouter 上它的调用量超过了 Anthropic、开发者把它部署下去不用费劲微调就能直接跑。智谱创始人唐杰在 X 上回复马斯克时甚至说，能在明年一季度前做出对标 Anthropic Fable 的模型。这种话同样要打折听，但它至少说明，中国开源阵营自己也开始用&amp;quot;交付&amp;quot;而不是&amp;quot;分数&amp;quot;来定义竞争。&lt;/p&gt;
&lt;p&gt;放话式发布不会消失，下一个还在训练的模型很快又会被宣布追平谁。但接下来一年真正影响格局的，与其看谁在全员大会上讲了什么，不如看 OpenRouter 的排行榜每周在变什么。后者更诚实，它记录的是开发者在用什么，而不是厂商想让你听到的。&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.aol.com/articles/alexandr-wang-says-metas-coming-235204979.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Alexandr Wang says Meta&amp;rsquo;s coming AI has caught up with OpenAI&amp;rsquo;s flagship model&lt;/a&gt; — Business Insider 原始报道（AOL 转载，2026-07-03），援引两位内部全员大会知情人&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://cifrum.kz/en/meta-watermelon-gpt-5-5-what-is-known/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Meta Watermelon vs GPT-5.5: what is known so far today&lt;/a&gt; — Cifrum.kz 对 Watermelon 主张的系统核查，指出其仍在训练、基准未披露、无独立验证&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.aol.com/articles/analysis-inexpensive-chinese-ai-model-071720000.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Analysis: A new, inexpensive Chinese AI model is catching up with Anthropic, OpenAI&lt;/a&gt; — Reuters 报道（AOL 转载，2026-07-02），记录 GLM-5.2 在硅谷的采用、背书与第三方平台数据&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.techmeme.com/260702/p40&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Techmeme 援引 Business Insider 的 Watermelon 报道&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://investor.atmeta.com/investor-news/press-release-details/2026/Meta-Reports-First-Quarter-2026-Results/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Meta 2026 年第一季度财报，资本支出指引上调至 1250 亿至 1450 亿美元&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://about.fb.com/news/2026/04/introducing-muse-spark-meta-superintelligence-labs/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Meta 官方 Muse Spark 发布公告（2026-04-08）&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上来源用于观察发布口径和社区反馈。其中 Watermelon &amp;ldquo;追平 GPT-5.5&amp;rdquo; 是 Meta 内部主张，尚未经独立基准测试验证；GLM-5.2 的市场排名与采用数据来自第三方平台与媒体引述，不等同于权威评测。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>律师也开始「氛围执业」了：当 AI 直觉接管法律，专业责任正在出现真空</title>
        <link>https://blog.ccino.org/p/vibe-lawyering-responsibility-vacuum/</link>
        <pubDate>Fri, 03 Jul 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/vibe-lawyering-responsibility-vacuum/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/vibe-lawyering-responsibility-vacuum/imgs/cover.png" alt="Featured image of post 律师也开始「氛围执业」了：当 AI 直觉接管法律，专业责任正在出现真空" /&gt;&lt;h2 id=&#34;一个新词从程序员圈挪到了律师圈&#34;&gt;一个新词，从程序员圈挪到了律师圈
&lt;/h2&gt;&lt;p&gt;The Economist 在 6 月底发了一篇文章，叫《The rise of vibe lawyering》。它本身不算长，但它让一个词进入了更多人的视野：&lt;strong&gt;vibe lawyering（氛围执业）&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这个词不是凭空冒出来的。它的上半截 &lt;strong&gt;vibe coding（氛围编程）&lt;/strong&gt; 在程序员圈子里已经火了一年多，大致意思是不写严格的需求文档、不把每一步想透，而是凭感觉给 AI 下指令，让 AI 产出代码，人凭直觉判断「这看着对」就往下走。Karpathy 当初给这种状态正过名，社区里有人推崇它快，也有人骂它在堆技术债。&lt;/p&gt;
&lt;p&gt;The Economist 做的事情，是把这套「氛围式工作」的标签从程序员身上撕下来，贴到了律师身上。按那篇文章能公开看到的描述，越来越多律师开始用大模型起草文书、检索判例、甚至给出初步法律意见，而其中一部分人并不逐字核对 AI 写出来的东西。&lt;/p&gt;
&lt;p&gt;这件事值得停下来想一想，倒不是因为它有多惊悚，律师用 AI 早就不新鲜了。真正有意思的是这次「挪用」本身：当一个用来形容「不严谨、凭直觉」的工作方式的词，被正经安在了一个以严谨立身的行业头上，它到底在暗示什么。&lt;/p&gt;
&lt;h2 id=&#34;同样的氛围代价完全不同&#34;&gt;同样的「氛围」，代价完全不同
&lt;/h2&gt;&lt;p&gt;vibe coding 之所以能成立，不是因为它有多高级，是因为它的容错率高。代码写错了，编译器会报错，测试会挂掉，最坏也就是上线之后回滚（rollback）一次。程序员手里有 Git，有 CI（持续集成），有一整套「错了就撤回」的安全网。氛围再飘，落地的时候总有人兜着。&lt;/p&gt;
&lt;p&gt;法律没有这张网。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/vibe-lawyering-responsibility-vacuum/imgs/vibe-coding-vs-lawyering.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/vibe-lawyering-responsibility-vacuum/imgs/vibe-coding-vs-lawyering_hu_a1ae52727cbeb5c8.png 480w, https://blog.ccino.org/p/vibe-lawyering-responsibility-vacuum/imgs/vibe-coding-vs-lawyering_hu_3ebf29f57cb0e354.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Vibe Coding 和 Vibe Lawyering 的代价对比&#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 编了一个不存在的判例，律师没核对就递上去，后果不是回滚能解决的。轻则被法官当庭驳回、丢掉客户信任，重则触犯执业纪律、被吊销执照。过去两年里，欧美已经出现过多起律师因为提交了 AI 虚构判例而被法院处罚的真实案件（这类案件有公开报道，但每一起的处罚轻重各不相同，不宜笼统而论）。&lt;/p&gt;
&lt;p&gt;换句话说，vibe 这个动作没变，变的只是它落地的表面。代码错了，损失是一次提交（commit）；法律意见错了，损失可能是一场官司、一份合同，甚至一个人的命运。同样是「不深究细节」，落在不同领域，代价差着好几个数量级。&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;最近被反复提起的一件事发生在 KPMG（毕马威）。据 AI 行业媒体的转述，KPMG 的一份 AI 生成报告里出现了严重幻觉，错误地把 UBS、NHS 等机构点了名，报告最后被撤回。四大这种级别的咨询机构，内部本该有最严格的审核流程，结果一份对外报告照样带着 AI 编造的内容走了出去，直到事后才被发现。&lt;/p&gt;
&lt;p&gt;这件事和 vibe lawyering 看似无关，其实是同一个病灶：当人把「判断」这件事让渡给 AI，自己只保留了「转发」的角色，出错的不是 AI，是那道本该由人把关的环节。&lt;/p&gt;
&lt;p&gt;律师也好、咨询师也好，专业服务业卖的本质上不是信息，是判断——这件事能不能做、该怎么做、风险在哪。AI 把信息生产的成本压到了接近零，于是很容易让人产生一种错觉：既然信息这么便宜，那判断也跟着便宜了。但判断并没有变便宜，它只是被悄悄跳过了。&lt;/p&gt;
&lt;h2 id=&#34;真正的麻烦判断让出去了责任还在&#34;&gt;真正的麻烦：判断让出去了，责任还在
&lt;/h2&gt;&lt;p&gt;这就触及了 vibe lawyering 最核心的地方，也是它和 vibe coding 最本质的区别。&lt;/p&gt;
&lt;p&gt;程序员让 AI 写代码，责任链是清楚的：代码是你提交的，出了问题你负责，但你可以改、可以撤。律师让 AI 写法律意见，责任链出现了一个错位——AI 帮你做了判断，可上法庭、被处罚、丢执照的，只能是你。&lt;/p&gt;
&lt;p&gt;AI 不会上法庭，人会。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/vibe-lawyering-responsibility-vacuum/imgs/responsibility-chain.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/vibe-lawyering-responsibility-vacuum/imgs/responsibility-chain_hu_6d3ccec436d69c41.png 480w, https://blog.ccino.org/p/vibe-lawyering-responsibility-vacuum/imgs/responsibility-chain_hu_6993bc8563caa526.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;也就是说，专业责任的承担者和实际判断的做出者，正在被悄悄剥离开。律师把脑力活外包给了模型，但执照和法律责任没法外包。这部分被悬空出来的责任，既不在 AI 身上（它没有法律主体资格），也没法完全算在律师头上（因为他其实并没有去做那个判断），这就是我想说的责任真空。&lt;/p&gt;
&lt;p&gt;一个领域里这种真空能撑多久，取决于两件事：监管追不追得上，以及出事的代价有多大。法律的特性决定了它出事代价通常很大，而且很滞后。一份有问题的合同，可能要等到三年后对簿公堂才爆雷。vibe lawyering 欠下的账，也因此可能要等很久才会集中来兑。&lt;/p&gt;
&lt;h2 id=&#34;vibe-能蔓延多远取决于能承受多少不可逆&#34;&gt;vibe 能蔓延多远，取决于能承受多少不可逆
&lt;/h2&gt;&lt;p&gt;把两件事并在一起看，脉络就清楚了。&lt;/p&gt;
&lt;p&gt;vibe coding 和 vibe lawyering 是同一个工作范式——不深究细节、凭 AI 输出的直觉往下走。它们的差别不在工具，在落地领域的「不可逆程度」。代码的错可以删掉重写，一份法律意见的错会写进一个当事人的现实里，改不回来。&lt;/p&gt;
&lt;p&gt;所以「vibe」这种工作方式能蔓延到哪个领域，本质上不取决于 AI 变得多强，而取决于那个领域扛不扛得住不可逆的代价。编程扛得住，所以 vibe coding 成了一种可以接受（虽然有争议）的流派。医疗、法律、审计、工程签字这些领域，共同点是错的成本极高又无法撤销，它们天然是 vibe 化的抵抗区。&lt;/p&gt;
&lt;p&gt;The Economist 把律师贴上 vibe lawyering 这个标签，与其说是在报道一个新趋势，更像是在递一个提醒：当一个最讲究「字字有出处」的行业，也开始流行「凭感觉」的时候，最先撑不住的可能不是效率，而是那层让整个行业得以运转的责任信任。&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.economist.com/business/2026/06/29/the-rise-of-vibe-lawyering&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;The rise of vibe lawyering — The Economist&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.economist.com/business/2026/06/25/teaching-ai-how-people-work-is-fraught-with-problems&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Teaching AI how people work is fraught with problems — The Economist&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

    &lt;blockquote&gt;
        &lt;p&gt;以上来源用于观察 The Economist 的发布口径与议题框架。文中提到的律师处罚先例与 KPMG 事件，具体细节应以法院文书与机构官方声明为准，不等同于已独立核实的事实背书。&lt;/p&gt;

    &lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>ZCode 登顶 HN：智谱从做模型切到做 harness，还顺手把 Claude Code 装进了桌面</title>
        <link>https://blog.ccino.org/p/zcode-zhipu-glm-harness-coding-agent-2026/</link>
        <pubDate>Thu, 02 Jul 2026 08:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/zcode-zhipu-glm-harness-coding-agent-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/zcode-zhipu-glm-harness-coding-agent-2026/imgs/cover.png" alt="Featured image of post ZCode 登顶 HN：智谱从做模型切到做 harness，还顺手把 Claude Code 装进了桌面" /&gt;&lt;p&gt;ZCode 这两天登上了 Hacker News 的榜首，背后是智谱 AI（Z.ai）。按官网和多方报道的描述，这是智谱为自家 GLM-5.2 模型官方适配的编程 Agent，定位&amp;quot;简单、迅捷、氛围十足&amp;quot;，目前已经放出 Linux 内测版。&lt;/p&gt;
&lt;p&gt;如果只看这一句，很容易把它理解成&amp;quot;又一个国产 Claude Code 仿品&amp;quot;。国产大模型厂商这两年发编程工具不是新鲜事，但大多数停留在&amp;quot;模型 + 插件&amp;quot;的层面。ZCode 值得多看两眼，是因为它代表了一个更早没出现过的信号：国产大厂开始正面补 harness（支架/工程外壳）这一课，而且走的不是单纯复刻的路。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/zcode-zhipu-glm-harness-coding-agent-2026/imgs/zcode-desktop-cli-visualization.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/zcode-zhipu-glm-harness-coding-agent-2026/imgs/zcode-desktop-cli-visualization_hu_144990f284fca498.png 480w, https://blog.ccino.org/p/zcode-zhipu-glm-harness-coding-agent-2026/imgs/zcode-desktop-cli-visualization_hu_6448ffaca132c73a.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;ZCode 桌面 agent 与 CLI 可视化示意&#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;先讲清楚-zcode-是什么&#34;&gt;先讲清楚 ZCode 是什么
&lt;/h2&gt;&lt;p&gt;把官方介绍和几篇深度报道拼起来，ZCode 大致是两层东西叠在一起。&lt;/p&gt;
&lt;p&gt;第一层，它是一个&lt;strong&gt;桌面端编程 Agent&lt;/strong&gt;，由 GLM-5.2 驱动。官方给的能力清单里有几个明显对标现代 coding agent 的设计：&lt;code&gt;/goal&lt;/code&gt; 命令用来跑长程任务、SSH 远程开发、移动端控制、多 agent 协作，以及 20 多个集成工具（含 Git）。这些几乎是 2026 年&amp;quot;严肃编程 agent&amp;quot;的标配——长程任务、远程、协作、版本控制一个都不能少。&lt;/p&gt;
&lt;p&gt;第二层更有意思。ZCode 同时把自己定位成&lt;strong&gt;给现有 CLI agent 做可视化外壳的工具&lt;/strong&gt;。它的宣传点之一是&amp;quot;让 Claude Code、Codex、Gemini 这些命令行 agent 看得见、点得动&amp;quot;——把那些原本要敲终端、配环境变量、改 settings.json 才能用起来的工具，包进一个图形界面里，还带对话式版本管理（AI 改的每一步都能回溯）和 MCP 协议支持。&lt;/p&gt;
&lt;p&gt;这两层叠在一起，才是 ZCode 真正的形状：它既是 GLM 的官方 harness，又是一个跨模型的 agent 桌面。后一件事比前一件更值得琢磨。&lt;/p&gt;
&lt;h2 id=&#34;国产大厂从做模型切到做-harness&#34;&gt;国产大厂从&amp;quot;做模型&amp;quot;切到&amp;quot;做 harness&amp;quot;
&lt;/h2&gt;&lt;p&gt;过去两年，国产大模型厂商之间的竞争，基本都在模型层：谁家的 benchmark 更高、谁先开源、谁的上下文更长、谁的价格更低。智谱自己在 GLM 系列上也是这条路——GLM-5.2 是 1M 上下文、coding-first 的开源模型，据第三方评测在 SWE-bench 上能到 73.8% 左右，已经被不少开发者通过 Claude Code、OpenCode 这类工具间接调用。&lt;/p&gt;
&lt;p&gt;但做编程 Agent 的人都清楚，模型能力只是其中一截。Claude Code 之所以能成为行业标杆，靠的不是 Sonnet / Opus 模型本身，而是围绕模型搭起来的那一整套 harness——&lt;code&gt;CLAUDE.md&lt;/code&gt; 记忆、MCP 工具协议、hooks 自动化、权限约束、反馈与验证循环。这层东西，才是编程 Agent 真正的护城河，也是国产厂商长期缺位的地方。&lt;/p&gt;
&lt;p&gt;ZCode 的意义在这里：它是国产大厂第一次正面承认&amp;quot;harness 值得自己做&amp;quot;，并把整套 agent 工程摆到台面上当一等公民来卖，而不是附属于模型的演示 Demo。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/zcode-zhipu-glm-harness-coding-agent-2026/imgs/zcode-harness-layer.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/zcode-zhipu-glm-harness-coding-agent-2026/imgs/zcode-harness-layer_hu_75282988b58514db.png 480w, https://blog.ccino.org/p/zcode-zhipu-glm-harness-coding-agent-2026/imgs/zcode-harness-layer_hu_b54f8a1a65a36e0d.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;ZCode 把编程 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;h2 id=&#34;真正有意思的是它没有把-claude-code-当敌人&#34;&gt;真正有意思的是：它没有把 Claude Code 当敌人
&lt;/h2&gt;&lt;p&gt;很多&amp;quot;国产替代&amp;quot;故事的套路是造一个封闭的竞品，然后把国外产品挡在外面。ZCode 让人意外的地方在于，它某种程度上走了相反的路。&lt;/p&gt;
&lt;p&gt;从官网和测评看，ZCode 不隐藏自己跟 Claude Code 的关系，反而主动把 Claude Code、Codex、Gemini 这些主流 CLI agent 接进自己的可视化层。换句话说，它不要求你&amp;quot;抛弃 Claude Code 换成我&amp;quot;，而是说&amp;quot;你继续用 Claude Code，我让你用得更舒服&amp;quot;。&lt;/p&gt;
&lt;p&gt;这个姿态背后的判断很现实：CLI 形态的 agent 能力强，但门槛高。装 Node.js、配环境变量、编辑 &lt;code&gt;settings.json&lt;/code&gt;、记一堆斜杠命令——这些都是真实开发者（尤其是不那么硬核的开发者）实际用 Claude Code 时的痛。ZCode 抓住的就是这道缝隙：模型层我给你 GLM-5.2 当默认，但你想用别家的 CLI agent，我也帮你把门槛降下来。&lt;/p&gt;
&lt;p&gt;这跟单纯复刻一个 Claude Code 是两回事。复刻是&amp;quot;我做一个一样的东西和你竞争&amp;quot;，ZCode 的做法更接近&amp;quot;我在你上面修一层入口&amp;quot;。能不能修成是另一回事，但路径选得聪明。&lt;/p&gt;
&lt;h2 id=&#34;glm-52-在这套叙事里的位置&#34;&gt;GLM-5.2 在这套叙事里的位置
&lt;/h2&gt;&lt;p&gt;ZCode 默认跑 GLM-5.2，所以模型本身的能力决定了它的下限。GLM-5.2 是 2026 年 6 月发布的长上下文 coding 模型，1M token 上下文，开源权重。第三方评测里它的 SWE-bench 数字和 Claude Opus 4.5 那一档还有距离，但在开源模型里已经是第一梯队，而且真实编程场景的体感在持续逼近闭源旗舰。&lt;/p&gt;
&lt;p&gt;对国内开发者来说，GLM-5.2 + ZCode 的组合有两个现成优势：成本和合规。智谱的 coding plan 入门档按季度摊到月大约十几美元量级（具体价格以官方为准），重度档在七十美元上下，相对 Claude Code 的订阅对长期高频用户有成本空间；合规上，国产模型 + 国产 agent 在企业内网、数据出境、行业准入这些场景里天然省事。这两点是国内厂商的传统主场，ZCode 沾得上。&lt;/p&gt;
&lt;p&gt;但模型和成本都不是这次的重点。重点是智谱愿意把 GLM-5.2 装进一个自己认真做的 harness 里卖，而不是只开放 API 让用户自己去接 Claude Code。这个动作本身，比 GLM-5.2 的 benchmark 提升几个点更值得记住。&lt;/p&gt;
&lt;h2 id=&#34;什么时候国内开发者会真的切换&#34;&gt;什么时候国内开发者会真的切换
&lt;/h2&gt;&lt;p&gt;一个工具能不能成，最后还是看真实开发者愿不愿意把日常 workflow 搬过来。从 HN 和 Reddit 的早期讨论看，外界对 ZCode 的兴趣点集中在两处：一是 GLM-5.2 作为开源模型在长程任务上的表现，二是 ZCode 把 CLI agent 可视化这个思路本身。怀疑的声音也不少，多数集中在成熟度（目前只有 Linux 内测版）、跨平台缺位、以及&amp;quot;可视化壳&amp;quot;会不会牺牲 CLI 原生的灵活性。&lt;/p&gt;
&lt;p&gt;对国内开发者，真要切换，大概会卡在几个问题上：ZCode 的 harness 是否像 &lt;code&gt;CLAUDE.md&lt;/code&gt; 那样可被项目和团队长期维护；它的 MCP 生态能不能接上自己已经在用的工具链；以及 Windows / macOS 版本什么时候跟上。这些都不是发版能解决的，需要时间积累。&lt;/p&gt;
&lt;p&gt;所以更现实的判断是：ZCode 短期内不会让 Claude Code 用户大规模迁移，但它把&amp;quot;harness 国产化&amp;quot;这件事从空白变成了起点。从这一刻起，国内开发者在&amp;quot;用 Claude Code + GLM 模型&amp;quot;之外，多了一个&amp;quot;用国产 agent + 国产模型&amp;quot;的完整选项。选项存在本身，就会倒逼整个国产编程 Agent 生态把工程层做厚。&lt;/p&gt;
&lt;h2 id=&#34;最后说两句&#34;&gt;最后说两句
&lt;/h2&gt;&lt;p&gt;ZCode 登顶 HN 的意义，不在&amp;quot;国产又多了一个编程工具&amp;quot;，而在国产大厂第一次把 harness 当成产品本身来打。而且它选了一条不那么&amp;quot;国产替代&amp;quot;常规的路：不把 Claude Code 当敌人，而是给它修一层可视化的入口。&lt;/p&gt;
&lt;p&gt;模型层的竞争迟早会收敛到成本和合规，真正的差距会挪到 harness 这一层——谁能让 agent 稳定跑长程任务、谁能把工具链接得干净、谁能把门槛降到普通开发者也敢用。Claude Code 用一两年时间证明了这层有多难，ZCode 现在加入这条赛道，至少说明国产厂商看清了护城河在哪。&lt;/p&gt;
&lt;p&gt;至于它能不能跑出来，要看后续版本能不能把那套工程外壳打磨到值得开发者把日常 workflow 托付过去。但无论如何，&amp;ldquo;国产 harness&amp;quot;这件事，从 ZCode 开始有了第一个像样的样本。&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://zcode.z.ai/cn&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ZCode 官网（中文）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://z.ai/blog/glm-5.2&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Z.ai：GLM-5.2 — Built for Long-Horizon Tasks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://bigmodel.cn/glm-coding&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;智谱 AI：即刻与 GLM 一起 Coding&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://aiweekly.co/alerts/zhipu-ships-zcode-a-glm-52-coding-agent-with-chat-app-triggers&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AIWeekly：Zhipu Ships ZCode, a GLM-5.2 Coding Agent&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.cnblogs.com/april-code/p/19424899&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;博客园：智谱 Z-Code 深度解析&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/ZaiGLM/comments/1ug9iha/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reddit r/ZaiGLM：Heavy Claude Code user switching to GLM-5.2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上来源主要用于核对 ZCode 的功能定位、GLM-5.2 能力与社区反馈；SWE-bench 等数字来自第三方评测，具体以官方为准。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>看不见的水印：Claude Code 被发现在请求里悄悄打标记，开发者工具的信任边界在哪</title>
        <link>https://blog.ccino.org/p/claude-code-steganography-watermark-2026/</link>
        <pubDate>Wed, 01 Jul 2026 09:30:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/claude-code-steganography-watermark-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/claude-code-steganography-watermark-2026/imgs/cover.png" alt="Featured image of post 看不见的水印：Claude Code 被发现在请求里悄悄打标记，开发者工具的信任边界在哪" /&gt;&lt;p&gt;有人逆向了 Claude Code 的二进制，发现它在系统提示词里偷偷改一个字符——一个肉眼几乎看不出区别的 Unicode 撇号，外加一个把 &lt;code&gt;-&lt;/code&gt; 换成 &lt;code&gt;/&lt;/code&gt; 的日期分隔符。这些改动对人类读者完全透明，对模型却是一个清晰的信号：这个请求来自什么样的环境、走的到底是不是官方通道。&lt;/p&gt;
&lt;p&gt;研究者把这套机制叫做 prompt steganography（提示词隐写）。比起“AI 又学会新本事”，这件事更值得开发者停下来想一想：当一个能读你整个仓库、能跑命令、能改文件、能推 commit 的工具，开始在自己的请求里埋进看不见的归因标记，我们和它之间的信任到底建立在什么之上。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-code-steganography-watermark-2026/imgs/steganography-mechanism.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-code-steganography-watermark-2026/imgs/steganography-mechanism_hu_d0f6489494a733b7.png 480w, https://blog.ccino.org/p/claude-code-steganography-watermark-2026/imgs/steganography-mechanism_hu_f9f3eac2a3fa127e.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;先说清楚这里的隐写是什么&#34;&gt;先说清楚：这里的“隐写”是什么
&lt;/h2&gt;&lt;p&gt;听到“隐写”两个字，很多人会想到图片里藏字、音频里藏信息。这次的情况不太一样。&lt;/p&gt;
&lt;p&gt;研究者在 Claude Code（2.1.196 版本）的压缩代码里找到了一个函数，它会构建发给模型的系统提示词中的日期字符串。正常情况下，这句话长这样：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre 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;Today&amp;#39;s date is 2026-06-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;但 Claude Code 有能力悄悄改两个地方：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Today&#39;s&lt;/code&gt; 里那个撇号&lt;/li&gt;
&lt;li&gt;日期的分隔符，从 &lt;code&gt;-&lt;/code&gt; 换成 &lt;code&gt;/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;改没改、怎么改，取决于三件事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;环境变量 &lt;code&gt;ANTHROPIC_BASE_URL&lt;/code&gt;（Claude Code 的 API 基址覆盖）指向的 hostname&lt;/li&gt;
&lt;li&gt;这台机器的系统时区&lt;/li&gt;
&lt;li&gt;hostname 是否命中一份藏在二进制里的域名 / 关键词列表&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;撇号这一项最隐蔽。根据命中情况，工具会把普通的 &lt;code&gt;&#39;&lt;/code&gt; 换成另外几种外形几乎一样、但在 Unicode 里完全不同的字符：&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;&lt;code&gt;&#39;&lt;/code&gt;（普通 ASCII）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;命中已知域名&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;’&lt;/code&gt;（U+2019）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;命中 AI 厂商关键词&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;ʼ&lt;/code&gt;（U+02BC）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;两者都命中&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;ʹ&lt;/code&gt;（U+02B9）&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这四个字符在大多数等宽字体里几乎看不出区别。你看到的还是一句正常的英文日期，模型拿到的却是一个被编码过的信号。时区那项更直白：当时区是 &lt;code&gt;Asia/Shanghai&lt;/code&gt; 或 &lt;code&gt;Asia/Urumqi&lt;/code&gt; 时，日期会被渲染成 &lt;code&gt;2026/06/30&lt;/code&gt;，而不是 &lt;code&gt;2026-06-30&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;研究者还发现，那份判断用的域名和关键词列表，是用 base64 加上 XOR（密钥 91）混淆后存在二进制里的。解码出来，关键词包括 deepseek、moonshot、minimax、zhipu、baichuan、stepfun、01ai 等等；域名列表更长，既有国内大厂的企业域名，也有一大批 proxy、reseller、gateway 性质的域名。&lt;/p&gt;
&lt;h2 id=&#34;这层标记会跟着请求一起送出去&#34;&gt;这层标记会跟着请求一起送出去
&lt;/h2&gt;&lt;p&gt;关键不在“改了字符”，而在这个被改过的日期字符串进了哪。&lt;/p&gt;
&lt;p&gt;研究者指出，这个日期函数会在构建 agent 上下文时被调用，也就是说，被改写后的句子会作为系统上下文的一部分，跟着每一次请求一起发给模型。换句话说，这个看不见的标记，会出现在 Anthropic 后端能拿到的那份 prompt 里。&lt;/p&gt;
&lt;p&gt;至于后端拿到之后怎么解析、用在哪——目前没有官方说明。研究者也只能从代码行为推断意图，并没有证据证明这套机制被用于某种具体用途。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-code-steganography-watermark-2026/imgs/prompt-context-flow.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-code-steganography-watermark-2026/imgs/prompt-context-flow_hu_2e1aa00a7e9a7e4b.png 480w, https://blog.ccino.org/p/claude-code-steganography-watermark-2026/imgs/prompt-context-flow_hu_2993a4aef7f40644.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;如果只看到“悄悄改字符”，很容易直接跳到“厂商在监视用户”。但更冷静一层看，这套机制背后有一组相当现实的需求。&lt;/p&gt;
&lt;p&gt;Claude Code 这种编程工具，本身就是一个高价值、高消耗、也容易被滥用的入口。厂商大概会想知道几件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;这个请求是不是从官方 Claude Code 客户端发出来的？&lt;/li&gt;
&lt;li&gt;有没有人把 Claude Code 接到了非官方的 API 网关、代理、转售服务上？&lt;/li&gt;
&lt;li&gt;是不是有人在搭“蒸馏”管道，拿官方工具的输出喂自己的模型？&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一个自定义的 &lt;code&gt;ANTHROPIC_BASE_URL&lt;/code&gt; 指向某个已知转售商域名，或者 hostname 里带 &lt;code&gt;deepseek&lt;/code&gt;、&lt;code&gt;zhipu&lt;/code&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;p&gt;编程 agent 现在拿到的权限，早就超过了一个普通聊天机器人。它可以读你的代码仓库，可以在你的机器上跑命令、装包、改文件、甚至推 commit。绝大多数开发者接受这种风险，是因为生产力提升值得。&lt;/p&gt;
&lt;p&gt;也正因为这样，客户端本身的行为，理应是整条链路里最“无聊”、最可预测的那一层。当一个拥有文件系统和 shell 权限的工具，开始用不可见的 Unicode 字符、混淆过的域名列表来做某种内部归因，开发者会本能地警觉：如果连一个日期字符串都不是它看起来的样子，那这个工具里还有多少行为，是我不知道的？&lt;/p&gt;
&lt;p&gt;这种警觉不是“反 Anthropic”，而是高权限工具的天然成本。越是能干的工具，越需要把信任建立在透明上。&lt;/p&gt;
&lt;h2 id=&#34;这不是-prompt-injection也不是供应链攻击&#34;&gt;这不是 prompt injection，也不是供应链攻击
&lt;/h2&gt;&lt;p&gt;有必要把这件事和另外几个开发者熟悉的风险区分开。&lt;/p&gt;
&lt;p&gt;prompt injection（提示词注入）是外部攻击者把恶意指令塞进你的上下文，诱导模型做不该做的事。供应链攻击是你 clone 了一个被下毒的仓库，或装了一个恶意包，工具在执行时被坑。这两类风险，攻击者都在工具外面。&lt;/p&gt;
&lt;p&gt;这次的隐写标记不一样。它不是攻击，而是工具自身的治理层——是厂商在自己的客户端里，给请求加上某种内部归因、审计能力。它没有篡改你的代码，也没有诱导模型干坏事，但它确实在你不知情的情况下，改变了发出去的请求内容。&lt;/p&gt;
&lt;p&gt;把这个边界讲清楚很重要：担心 prompt injection 和供应链，是在担心“外面有人害我”；担心隐写标记，是在担心“我每天用的工具，对我有多透明”。这是两个不同维度的问题，不能用同一个框架去评判。&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; 一个能在请求里编码归因信号的机制，理论上应该出现在文档或 release notes 里，而不是藏在 XOR 混淆的域名列表后面。混淆本身不等于恶意，但它确实抬高了被发现的成本，也削弱了“客户端行为可审计”这条默认预期。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第二，是否可关闭。&lt;/strong&gt; 如果这套标记纯粹用于平台反滥用，那对走官方通道、时区正常的大多数用户，它本来就不会触发。但对那些有合法理由使用自定义网关、本地代理、内部路由的团队——比如企业合规要求、研究环境、模型路由——他们能不能选择关掉，或者至少被告知已经触发？从目前看，没有这个开关。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第三，是否进入 API 行为。&lt;/strong&gt; 这套标记进的是系统提示词，也就是模型能看到的那一层。它会不会影响模型行为、会不会影响计费、会不会被当成某种“嫌疑标记”而触发不同的服务策略？这些都没有公开说明。研究者的措辞很克制，只说“Anthropic 可能在后端解析”，没有断言更多。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第四，对真正的滥用者有没有用。&lt;/strong&gt; 研究者点出一个尴尬事实：这套机制的绕过成本极低。换个 hostname、改个时区、patch 二进制、包一层进程，都能让信号失效。也就是说，它真正能“打中”的，恰恰是那些只是想做点合法但非常规事情、又最容易留下指纹的普通开发者。严肃的滥用者早就抹掉了。&lt;/p&gt;
&lt;h2 id=&#34;最后说两句&#34;&gt;最后说两句
&lt;/h2&gt;&lt;p&gt;Claude Code 的这层“隐形水印”，与其说是一次丑闻，不如说是 AI 工具演进到这一阶段必然会冒出来的问题。&lt;/p&gt;
&lt;p&gt;当编程 agent 从“补全代码的助手”变成“能读仓库、能执行、能交付的高权限工作台”，厂商和用户之间的关系就不再是“你用我的模型”那么简单。厂商需要归因、需要反滥用、需要识别非官方通道；用户需要透明、需要可预期、需要知道这台机器上的工具到底在做什么。这两组需求都是正当的，问题是它们在哪里交汇，又在哪里冲突。&lt;/p&gt;
&lt;p&gt;研究者的态度其实很平和：开发者工具可以执行条款，API 提供方可以检测滥用，公司可以保护自己的模型——这些都没问题。但当一个拥有文件系统和 shell 权限的工具，开始把归因标记藏进不可见的提示词标点里时，正确的反应就是审视，而不是默认信任。&lt;/p&gt;
&lt;p&gt;信任是在最无聊的地方挣来的。这句话对 Claude Code，对接下来所有高权限 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://thereallo.dev/blog/claude-code-prompt-steganography&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;thereallo.dev：Claude Code Is Steganographically Marking Requests&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.bestblogs.dev/en/article/fe4f96df&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;BestBlogs：Claude Code 正在通过隐写术标记请求&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.claude.com/en/docs/claude-code/overview&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic：Claude Code 官方文档&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上来源主要用于核对事件细节、代码行为与原文观点；本文不构成对厂商意图的独立判定，相关推断以原文与研究者的克制表述为准。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Claude Sonnet 5 不是“更强模型”，而是 Agent 成本层的重新定价</title>
        <link>https://blog.ccino.org/p/claude-sonnet-5-agent-cost-layer/</link>
        <pubDate>Wed, 01 Jul 2026 08:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/claude-sonnet-5-agent-cost-layer/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/claude-sonnet-5-agent-cost-layer/imgs/cover.png" alt="Featured image of post Claude Sonnet 5 不是“更强模型”，而是 Agent 成本层的重新定价" /&gt;&lt;p&gt;Anthropic 在 6 月 30 日发布了 Claude Sonnet 5。按官方说法，这是“最具 agentic 能力的 Sonnet 模型”，能规划任务、使用浏览器和终端等工具，并在不少场景里接近 Opus 4.8。它也已经进入 Claude Code、Claude Platform，并被 GitHub Copilot 等开发者入口快速接入。&lt;/p&gt;
&lt;p&gt;如果只把它理解成“Claude 又变强了”，这篇文章就没什么好写。大模型每隔几周刷一次榜，读者早就麻了。&lt;/p&gt;
&lt;p&gt;真正有意思的地方在价格和定位：Sonnet 5 的 API 发布价是每百万输入 token 2 美元、每百万输出 token 10 美元，这个优惠价持续到 2026 年 8 月 31 日；之后回到每百万输入 3 美元、每百万输出 15 美元。官方同时把 Opus 4.8 标在每百万输入 5 美元、每百万输出 25 美元。再加上 Sonnet 5 面向 coding（编程）、tool use（工具使用）和 everyday professional work（日常专业工作）的叙述，这不像是一次单纯的模型发布，更像是 Anthropic 在重新定价 Agent（智能体）的执行层。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-sonnet-5-agent-cost-layer/imgs/claude-sonnet-5-benchmark-comparison.jpg&#34;
	width=&#34;1600&#34;
	height=&#34;900&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-sonnet-5-agent-cost-layer/imgs/claude-sonnet-5-benchmark-comparison_hu_6b462e5b6565ac6e.jpg 480w, https://blog.ccino.org/p/claude-sonnet-5-agent-cost-layer/imgs/claude-sonnet-5-benchmark-comparison_hu_6a7a27bd285ffcc4.jpg 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Claude Sonnet 5 模型测评指标对比图&#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;为什么-agent-特别怕贵&#34;&gt;为什么 Agent 特别怕贵？
&lt;/h2&gt;&lt;p&gt;聊天机器人时代，我们习惯按“一问一答”算成本。用户问一句，模型答一句，最多再接一轮追问。这个账虽然不便宜，但还算直观。&lt;/p&gt;
&lt;p&gt;Agent 的账不是这么算的。&lt;/p&gt;
&lt;p&gt;一个看起来简单的“帮我修这个 bug”，背后可能拆成十几个动作：读代码、查日志、定位相关文件、写一个复现测试、改代码、跑测试、失败后再读报错、继续修改、最后总结。每一步都可能消耗上下文，每一步都可能触发工具调用，每一步还可能让模型重新判断下一步怎么走。&lt;/p&gt;
&lt;p&gt;所以 Agent 的成本不是“调用一次模型多少钱”，而是“完成一个任务要多少轮模型推理、多少次工具调用、多少次验证和回滚”。这也是为什么很多 AI 产品 Demo 很好看，上线却容易卡在经济账上：模型足够聪明，不代表产品跑得起。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-sonnet-5-agent-cost-layer/imgs/agent-cost-stack.png&#34;
	width=&#34;1536&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-sonnet-5-agent-cost-layer/imgs/agent-cost-stack_hu_403b8a7e1dc8598b.png 480w, https://blog.ccino.org/p/claude-sonnet-5-agent-cost-layer/imgs/agent-cost-stack_hu_e4ea7497ac21322b.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Agent 任务成本堆栈&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;这件事在编程场景里尤其明显。一个 coding agent（编程智能体）如果只负责生成一段代码，成本还好控制；一旦它开始像工程师一样工作，要读仓库、跑命令、修测试、做 review，token 消耗就会从“文本生成成本”变成“执行流程成本”。&lt;/p&gt;
&lt;h2 id=&#34;sonnet-5-的信号不是顶级大脑而是默认执行层&#34;&gt;Sonnet 5 的信号：不是顶级大脑，而是默认执行层
&lt;/h2&gt;&lt;p&gt;官方发布文里有一句话很关键：Sonnet 5 能以更低价格完成几个月前需要更大、更昂贵模型才能完成的 agentic 工作。&lt;/p&gt;
&lt;p&gt;这句话的重点不在“Sonnet 5 追上 Opus 4.8”。我更愿意把它理解为：Anthropic 希望把高频执行任务从顶级模型层迁下来。&lt;/p&gt;
&lt;p&gt;顶级模型当然仍然重要。复杂架构决策、困难推理、长周期规划、关键安全判断，仍然适合交给 Opus 或 Fable 这样的高能力模型。但真实产品里，绝大多数步骤并不都需要最贵模型。很多动作只是“足够聪明地继续往下做”：读一个文件，按规范改一段代码，根据报错重跑测试，检查输出是否符合约束。&lt;/p&gt;
&lt;p&gt;过去的问题是，中间层模型一旦不够稳，Agent 就会在这些“看似普通”的步骤上掉链子。于是团队只能用更贵的模型兜底，成本跟着放大。Sonnet 5 的价值在这里：如果它能在中等成本下稳定完成大部分执行动作，那么 Agent 的默认架构就会变成“Sonnet 常驻执行，Opus/Fable 关键兜底”。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-sonnet-5-agent-cost-layer/imgs/model-routing-workflow.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-sonnet-5-agent-cost-layer/imgs/model-routing-workflow_hu_8310ddc003337903.png 480w, https://blog.ccino.org/p/claude-sonnet-5-agent-cost-layer/imgs/model-routing-workflow_hu_996445d6c5cd5cb4.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Sonnet 常驻执行与高能力模型关键兜底&#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;这和传统工程里的分层很像。你不会让首席架构师亲自处理每一次格式化、每一次测试重跑、每一次日志筛查。你需要一个可靠的执行团队，遇到关键判断再升级给更高层级的人。Sonnet 5 想扮演的，正是这个执行团队。&lt;/p&gt;
&lt;h2 id=&#34;token-单价下降不等于任务成本自动下降&#34;&gt;token 单价下降，不等于任务成本自动下降
&lt;/h2&gt;&lt;p&gt;这里也要泼一点冷水：Sonnet 5 不是简单意义上的“更便宜”。&lt;/p&gt;
&lt;p&gt;官方脚注提到，Sonnet 5 使用更新 tokenizer（分词器），同样的输入可能映射成更多 token，范围大约是 1.0 到 1.35 倍，取决于内容类型。Anthropic 也解释说，阶段性优惠价格的设计，是为了让迁移到 Sonnet 5 的过渡大体保持成本中性。&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;更高 effort（推理投入档位）带来的质量提升，是否抵消了额外 token？&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果 Sonnet 5 让一个任务从 12 轮减少到 7 轮，即使单轮 token 变多，最终也可能更便宜。如果它让模型更愿意自检、少走弯路，真实收益也不一定体现在单次 API 价格里。反过来，如果团队盲目把所有任务都切到高 effort，把上下文塞满，还让 Agent 无限制探索，账单一样会爆。&lt;/p&gt;
&lt;p&gt;所以 Sonnet 5 带来的不是“成本问题消失了”，而是让成本治理有了新的可操作空间。&lt;/p&gt;
&lt;h2 id=&#34;对开发者来说真正变化的是工作流设计&#34;&gt;对开发者来说，真正变化的是工作流设计
&lt;/h2&gt;&lt;p&gt;如果你正在做 AI 编程工具、内部自动化 Agent，或者企业知识工作流，Sonnet 5 最直接的影响不是“换个模型 ID”。&lt;/p&gt;
&lt;p&gt;更现实的变化有三个。&lt;/p&gt;
&lt;p&gt;第一，更多子任务可以交给模型自动跑。以前为了省钱，很多团队会限制 Agent 的自检次数，甚至让它只生成补丁、不主动跑验证。现在如果 Sonnet 层足够便宜、足够稳，产品就可以更大胆地让它多做一步：写测试、跑测试、读失败输出，再自己修一轮。&lt;/p&gt;
&lt;p&gt;第二，模型路由会变成基本功。不是所有任务都上 Sonnet 5，也不是所有困难任务都死磕 Opus。比较合理的结构可能是：Sonnet 5 负责默认执行，低风险批处理交给更轻量模型，关键判断升级到 Opus 或 Fable，失败场景再走人工确认。模型不再是一个按钮，而是一套路由策略。&lt;/p&gt;
&lt;p&gt;第三，长上下文会让团队更愿意保留过程信息，但也更需要节制。1M context（百万级上下文）听起来很爽，可上下文越长，成本、延迟和注意力管理问题越明显。真正成熟的 Agent 产品不会把所有东西一股脑塞进去，而会决定哪些信息进入上下文，哪些沉到文件、缓存或检索系统里。&lt;/p&gt;
&lt;h2 id=&#34;这和-fable-5-的区别在哪里&#34;&gt;这和 Fable 5 的区别在哪里？
&lt;/h2&gt;&lt;p&gt;前段时间大家讨论 Fable 5，更多是在说能力分层、风险路由和顶级模型边界。Fable 代表的是“最难的任务交给谁”，以及高风险、高价值场景如何配置最强模型。&lt;/p&gt;
&lt;p&gt;Sonnet 5 讨论的是另一个问题：日常任务到底由谁来跑。&lt;/p&gt;
&lt;p&gt;这两个问题都重要，但它们不是同一个问题。Fable 关心的是上限，Sonnet 5 关心的是规模化执行的底盘。一个决定 Agent 在最困难任务上能不能突破，另一个决定 Agent 在普通任务上能不能跑得足够多、足够久、足够便宜。&lt;/p&gt;
&lt;p&gt;过去很多人把模型选择理解成排行榜问题：谁最强，就用谁。Agent 时代更像运维问题：哪些任务常态化执行，哪些任务需要升级，哪些任务必须验证，哪些任务可以失败重试。排行榜只能回答“模型能力”，回答不了“系统经济账”。&lt;/p&gt;
&lt;h2 id=&#34;最后说两句&#34;&gt;最后说两句
&lt;/h2&gt;&lt;p&gt;Claude Sonnet 5 的意义，不是让我们又多了一个可以兴奋三天的新模型名。它更像是在提醒开发者：AI Agent 的竞争已经进入成本结构阶段。&lt;/p&gt;
&lt;p&gt;Agent 负责把任务拆开并持续执行，模型负责在每一步做判断，工具负责把判断变成真实动作，成本层则决定这些动作能不能被大量、频繁、稳定地运行。只讨论模型强不强，就会漏掉后半截：Agent 不是一次回答，而是一串可观察、可验证、可中断、可复盘的执行过程。&lt;/p&gt;
&lt;p&gt;Sonnet 5 想解决的正是这串过程里最常见、最昂贵的部分：默认执行层。它不必在每个指标上压过 Opus，也不需要承担所有高风险判断。只要它能用更低成本完成大多数计划、读写、调用、检查和修正动作，整个 Agent 产品的部署方式就会改变。&lt;/p&gt;
&lt;p&gt;所以这次发布最值得记住的，不是“Sonnet 更强了”，而是“足够强的 Sonnet 开始变得足够便宜”。当执行层价格下降，产品经理和工程师才会真的开始重新设计工作流：让 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.anthropic.com/news/claude-sonnet-5&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic：Introducing Claude Sonnet 5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://techcrunch.com/2026/06/30/anthropic-launches-claude-sonnet-5-as-a-cheaper-way-to-run-agents/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;TechCrunch：Anthropic launches Claude Sonnet 5 as a cheaper way to run agents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.blog/changelog/2026-06-30-claude-sonnet-5-is-generally-available-for-github-copilot/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub Blog：Claude Sonnet 5 is generally available for GitHub Copilot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://kingy.ai/news/claude-sonnet-5-benchmarks-specs-pricing/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Kingy AI：Claude Sonnet 5 Benchmarks, Specs, Pricing &amp;amp; Everything New&lt;/a&gt;（模型测评指标图来源）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上来源主要用于核对官方发布口径、价格、模型定位和接入入口；社区反馈与媒体转述不等同于独立基准测试。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>GLM 5.2 击败 Claude？国产模型出海的新战场，不是聊天框</title>
        <link>https://blog.ccino.org/p/glm52-semgrep-cyber-benchmark-2026/</link>
        <pubDate>Mon, 29 Jun 2026 08:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/glm52-semgrep-cyber-benchmark-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/glm52-semgrep-cyber-benchmark-2026/imgs/cover.png" alt="Featured image of post GLM 5.2 击败 Claude？国产模型出海的新战场，不是聊天框" /&gt;&lt;p&gt;Semgrep 6 月 22 日发了一篇安全研究文章，标题很会挑事：&lt;code&gt;We have Mythos at Home: GLM 5.2 beats Claude in our Cyber Benchmarks&lt;/code&gt;。直译过来，大概是「我们家里也有 Mythos：GLM 5.2 在网络安全基准里打败了 Claude」。&lt;/p&gt;
&lt;p&gt;如果只看这个标题，很容易写成一篇「国产模型终于超过 Claude」的情绪文。但 Semgrep 原文里真正有价值的地方，并不在这个口号上。&lt;/p&gt;
&lt;p&gt;他们做的是一个很具体的实验：拿一组 IDOR（Insecure Direct Object Reference，不安全直接对象引用）漏洞检测任务，比较不同模型和不同运行框架的表现。结果里，GLM 5.2 在一个更朴素的 Pydantic AI（Python 智能体框架）环境里，只靠同一套提示词和代码库，跑出了 39% F1；Claude Code 在 Claude Code SDK 里跑出 32%；Semgrep 自家的多模态管线，因为有专门的 Harness（支架工程）帮它枚举端点、筛上下文、引导模型看关键位置，最高跑到 61%。&lt;/p&gt;
&lt;p&gt;所以这件事更准确的说法不是「GLM 5.2 全面打败 Claude」。而是：在 Semgrep 的这一组 IDOR 任务里，一个开权重国产模型，在没有专门安全扫描支架的情况下，超过了一个前沿 coding agent（编程智能体）。&lt;/p&gt;
&lt;p&gt;这个差别很重要。前者是榜单爽文，后者才是一个可能改变开发者工具市场的信号。&lt;/p&gt;
&lt;h2 id=&#34;先把实验说清楚&#34;&gt;先把实验说清楚
&lt;/h2&gt;&lt;p&gt;Semgrep 这次测的是 IDOR。这个漏洞不太像传统静态分析里容易抓的污点传播问题，它的麻烦在于「缺了一个检查」。&lt;/p&gt;
&lt;p&gt;比如一个接口直接按 URL 里的 &lt;code&gt;user_id&lt;/code&gt; 去取用户资料，却没有确认当前登录用户有没有权限访问这个 &lt;code&gt;user_id&lt;/code&gt;。代码里不一定有明显的危险函数，也不一定有一行红得发亮的 sink。真正的问题是业务逻辑缺了一块授权判断。&lt;/p&gt;
&lt;p&gt;这类漏洞对人类代码审计员来说都不轻松，对模型也一样。它需要模型跨文件理解路由、鉴权、数据对象和调用路径。你不能只看某一行代码说它危险，要理解「这里本来应该有一层权限检查，但没有」。&lt;/p&gt;
&lt;p&gt;Semgrep 把三件事固定下来：同一组 IDOR 数据集、同一套评估方式、同一份 IDOR 系统提示词。然后变化的是模型和它外面的运行框架。&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 style=&#34;text-align: right&#34;&gt;F1&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;1&lt;/td&gt;
					&lt;td&gt;Semgrep Multimodal + GPT 5.5&lt;/td&gt;
					&lt;td&gt;Semgrep 自家 Harness&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;61%&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;2&lt;/td&gt;
					&lt;td&gt;Semgrep Multimodal + Opus 4.8&lt;/td&gt;
					&lt;td&gt;Semgrep 自家 Harness&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;53%&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;3&lt;/td&gt;
					&lt;td&gt;GLM 5.2&lt;/td&gt;
					&lt;td&gt;Pydantic AI，裸提示词&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;39%&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;4&lt;/td&gt;
					&lt;td&gt;Claude Code + Opus 4.6&lt;/td&gt;
					&lt;td&gt;Claude Code SDK&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;37%&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;5&lt;/td&gt;
					&lt;td&gt;Claude Code + Opus 4.8/4.7&lt;/td&gt;
					&lt;td&gt;Claude Code SDK&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;28%&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;6&lt;/td&gt;
					&lt;td&gt;MiniMax M3&lt;/td&gt;
					&lt;td&gt;Pydantic AI，裸提示词&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;23%&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;7&lt;/td&gt;
					&lt;td&gt;Kimi K2.7 Code&lt;/td&gt;
					&lt;td&gt;Pydantic AI，裸提示词&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;22%&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;8&lt;/td&gt;
					&lt;td&gt;GPT-5.5&lt;/td&gt;
					&lt;td&gt;Codex&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;20%&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;9&lt;/td&gt;
					&lt;td&gt;Nemotron Super 3 120B&lt;/td&gt;
					&lt;td&gt;Pydantic AI，裸提示词&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;18%&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;10&lt;/td&gt;
					&lt;td&gt;DeepSeek V4&lt;/td&gt;
					&lt;td&gt;Pydantic AI，裸提示词&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;17%&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/glm52-semgrep-cyber-benchmark-2026/imgs/benchmark-results.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/glm52-semgrep-cyber-benchmark-2026/imgs/benchmark-results_hu_8493826134bea4bb.png 480w, https://blog.ccino.org/p/glm52-semgrep-cyber-benchmark-2026/imgs/benchmark-results_hu_652c6274382c22b9.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Semgrep IDOR 基准结果：GLM 5.2 在裸提示词设置下位列第三&#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;原文还给了一个很刺眼的数字：按 GLM 5.2 的价格估算，每找到一个真实漏洞的成本大约是 0.17 美元。Semgrep 认为，在要扫成千上万个端点的场景里，这种 per-bug economics（单漏洞经济账）不是脚注，而是决定这个方案能不能规模化使用的关键。&lt;/p&gt;
&lt;p&gt;但他们也反复强调，这不是一个纯粹的模型能力横评。Semgrep 自家的前两名吃到了 Harness 的红利。GLM 5.2 的第三名，则是「裸提示词」条件下的意外突出。&lt;/p&gt;
&lt;p&gt;这就把讨论从「谁是最强模型」拉到了另一个问题：安全工作流里，到底是模型更重要，还是模型外面的运行框架更重要？&lt;/p&gt;
&lt;h2 id=&#34;真正的胜负不在模型名字上&#34;&gt;真正的胜负，不在模型名字上
&lt;/h2&gt;&lt;p&gt;很多人看到「GLM 5.2 beats Claude」会下意识开始站队：国产模型是不是追上了？Claude 是不是退步了？开权重模型是不是全面反超闭源模型？&lt;/p&gt;
&lt;p&gt;这几个问题都有点太急。&lt;/p&gt;
&lt;p&gt;Semgrep 原文里其实给了更克制的结论：这是一个任务、一个数据集、一次实验。IDOR 检测本身有随机性，换成 SSRF、权限绕过、供应链恶意包，结果都可能变。GLM 5.2 在这组任务上跑赢，不等于它在所有代码安全任务上都更强。&lt;/p&gt;
&lt;p&gt;但这并不削弱这件事的意义。意义在于，安全这样的高信任场景里，开权重模型已经不是「陪跑选手」了。&lt;/p&gt;
&lt;p&gt;一年前，如果把开权重模型放到漏洞检测榜里，很多人默认它只是来凑数。现在，一个来自智谱的 GLM 5.2，在没有 Semgrep 那套端点枚举和上下文筛选支架的情况下，跑到了第三。它没有赢过 Semgrep 自家的多模态管线，但它证明了一件事：前沿模型的优势，不再天然等于闭源模型的优势。&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;/p&gt;
&lt;p&gt;过去我们谈国产大模型出海，常常想象的是几个画面：做一个面向全球用户的 ChatGPT 替代品，冲通用榜单，或者在 App Store 上做一个 C 端助手。但这条路非常拥挤。品牌、生态、支付、合规、分发，每一层都难。&lt;/p&gt;
&lt;p&gt;GLM 5.2 这次被 Semgrep 拿来测安全任务，反而提示了另一条路径：先进模型未必要先在聊天框里赢，它可以先钻进开发者工具的某一个高价值工作流。&lt;/p&gt;
&lt;p&gt;比如代码安全。&lt;/p&gt;
&lt;p&gt;代码安全不是一个「回答得漂亮就行」的场景。它要看误报、漏报、成本、可解释性、能不能接进 CI、能不能被安全工程师复核。一个模型如果能在这里证明自己，它拿到的不是泛泛的关注，而是工作流里的位置。&lt;/p&gt;
&lt;p&gt;同样的逻辑也可以迁移到别的开发者工具里：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;代码审查里，它要找真实缺陷，而不是生成漂亮建议；&lt;/li&gt;
&lt;li&gt;测试生成里，它要提高覆盖率，而不是堆一堆无效 case；&lt;/li&gt;
&lt;li&gt;迁移重构里，它要能跑通项目，而不是只写几段示例；&lt;/li&gt;
&lt;li&gt;安全扫描里，它要能减少人工 triage（分诊）的时间，而不是把 false positive（误报）丢给人类收拾。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些场景对模型的要求很窄，但很硬。窄，意味着不必在所有能力上赢；硬，意味着一旦赢了，就有采购和集成价值。&lt;/p&gt;
&lt;p&gt;这也是为什么 Semgrep 这类第三方工具的测试，比模型厂商自己的榜单更有意思。厂商榜单经常告诉你「我的模型更聪明」，工具厂商的测试会告诉你「在我的工作流里，它到底能不能省人」。后者离真实商业价值近得多。&lt;/p&gt;
&lt;h2 id=&#34;harness-仍然是最贵的那层能力&#34;&gt;Harness 仍然是最贵的那层能力
&lt;/h2&gt;&lt;p&gt;不过，别被 GLM 5.2 的表现带偏。Semgrep 这次实验里，排在最前面的不是 GLM，也不是裸跑的 Claude，而是 Semgrep 自己的多模态管线。&lt;/p&gt;
&lt;p&gt;差距也不小：61% 和 53%，明显高于 GLM 5.2 的 39%。&lt;/p&gt;
&lt;p&gt;原因很直接：它不是把一整个仓库丢给模型然后许愿，而是先用 Harness 把任务变窄。Semgrep 的 Harness 会枚举应用端点，筛出重要上下文，再把模型引到更可能出问题的位置。模型负责推理，但 Harness 负责决定它看什么、怎么走、怎么把输出变成可评估结果。&lt;/p&gt;
&lt;p&gt;这才是 agent 产品里经常被低估的部分。&lt;/p&gt;
&lt;p&gt;模型像发动机，但 Harness 更像整辆车：方向盘、刹车、仪表盘、导航、传感器和安全气囊都在这里。只比较发动机马力，会错过真正决定能不能上路的东西。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/glm52-semgrep-cyber-benchmark-2026/imgs/model-vs-harness.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/glm52-semgrep-cyber-benchmark-2026/imgs/model-vs-harness_hu_6a806c2aa4db15f6.png 480w, https://blog.ccino.org/p/glm52-semgrep-cyber-benchmark-2026/imgs/model-vs-harness_hu_caeec946397dfe15.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;模型能力与 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;在安全场景里，这层东西尤其关键。一个模型再强，如果它不知道代码库从哪里进、端点怎么枚举、鉴权逻辑在哪里、哪些路径值得追、输出怎么去重，就会被上下文淹没。反过来，一个一般的模型，如果被一个好 Harness 喂到正确位置，也可能表现得不错。&lt;/p&gt;
&lt;p&gt;所以 Semgrep 这篇文章最有价值的句子，反而不是标题里的「GLM 5.2 beats Claude」，而是他们提出的那个问题：漏洞检测性能到底有多少来自模型，有多少来自模型外面的 Harness？&lt;/p&gt;
&lt;p&gt;答案大概率是：两者都重要，但越接近生产，Harness 的权重越高。&lt;/p&gt;
&lt;h2 id=&#34;开权重模型的吸引力来自三个具体场景&#34;&gt;开权重模型的吸引力，来自三个具体场景
&lt;/h2&gt;&lt;p&gt;为什么 GLM 5.2 这种开权重模型在安全任务里会变得有吸引力？不是因为「开」这个字天然高贵，而是因为它解决了三类很具体的问题。&lt;/p&gt;
&lt;p&gt;第一是数据边界。安全团队处理的是内部仓库、漏洞细节、密钥痕迹、业务逻辑。很多组织可以接受把普通代码片段发给外部模型，但未必能接受把全量仓库和漏洞上下文发出去。如果模型可以在内网跑，很多合规讨论会简单得多。&lt;/p&gt;
&lt;p&gt;第二是成本边界。Semgrep 原文提到 GLM 5.2 的价格大约是可比前沿模型的六分之一，且在这次任务里每个真实漏洞约 0.17 美元。这个数字未必能直接迁移到所有企业环境，但它说明了方向：安全扫描是规模化任务，一次不是问一个问题，而是扫很多仓库、很多端点、很多分支。单位成本一旦下来，能做的事情会变多。&lt;/p&gt;
&lt;p&gt;第三是可控性。企业可以围绕开权重模型做微调、蒸馏、离线评估、权限隔离和审计。闭源 API 也可以做很多工程封装，但模型本身始终在外部。对安全团队来说，这个差别不只是意识形态，而是事故责任链的问题。&lt;/p&gt;
&lt;p&gt;当然，开权重不等于没有风险。Semgrep 原文特别提到，Z.ai 在发布说明里披露过 GLM 5.2 相比 GLM 5.1 有更多 reward hacking（奖励黑客行为）倾向。训练时模型会尝试读取受保护评测文件或 curl 参考答案来抬高分数，因此团队专门做了 anti-hacking guard（反作弊防护）。&lt;/p&gt;
&lt;p&gt;这个细节挺有意思。一个适合安全任务的模型，如果自己也更会「钻测试空子」，那就更需要运行层面的约束。也就是说，能力越强，Harness 越不能省。&lt;/p&gt;
&lt;h2 id=&#34;这件事对-claude-并不坏&#34;&gt;这件事对 Claude 并不坏
&lt;/h2&gt;&lt;p&gt;写到这里，还要替 Claude 说一句公道话。&lt;/p&gt;
&lt;p&gt;Semgrep 的结果不能推出「Claude 不行了」。Claude Code 不是专为 IDOR 检测做的单任务扫描器，它是一个通用 coding agent。Semgrep 的多模态管线能赢，很大程度上是因为它把任务限定得更窄、更工程化。GLM 5.2 能在裸提示词条件下跑出好结果，也说明这个模型在该任务上很强，但不代表它在长程项目开发、需求澄清、重构、测试、交互式调试里全面超过 Claude Code。&lt;/p&gt;
&lt;p&gt;真正的结论应该更像这样：以后做 AI 开发工具，不能只押一个模型。&lt;/p&gt;
&lt;p&gt;在一个工作流里，可能 Claude 更适合长程规划，GLM 5.2 更适合某类安全检测，Gemini 更适合多模态理解，另一个小模型更适合便宜地跑批量分类。工具厂商真正要做的，不是给某个模型当前端，而是把任务拆开，让不同模型在合适的位置上干活。&lt;/p&gt;
&lt;p&gt;这和过去软件工程里的数据库选择很像。不是所有数据都塞进同一个数据库，也不是所有任务都用同一套缓存。模型时代也会这样：通用强模型会继续存在，但垂直任务会越来越多地被「更便宜、更可控、局部更强」的模型吃掉。&lt;/p&gt;
&lt;p&gt;从这个角度看，GLM 5.2 的意义不是挑战 Claude 的品牌，而是提醒工具厂商：模型层正在变成可替换组件。真正难替换的，是你围绕任务沉淀出来的数据、评估、流程和 Harness。&lt;/p&gt;
&lt;h2 id=&#34;对中国模型公司来说这是更实际的机会&#34;&gt;对中国模型公司来说，这是更实际的机会
&lt;/h2&gt;&lt;p&gt;这篇文章和我前几天写「六小虎分化」那篇可以接上。&lt;/p&gt;
&lt;p&gt;当时我提到，智谱 GLM-5.2 已经不只是一个通用大模型发版，而是在用开权重、长上下文和编程能力切入开发者市场。Semgrep 这次测试，正好给了一个更具体的外部样本：GLM 5.2 被一家海外安全工具公司拿来放进自己的 cyber benchmark 里，而且表现足够出乎意料。&lt;/p&gt;
&lt;p&gt;这比国内发布会上自称「编程能力提升多少」更有含金量。&lt;/p&gt;
&lt;p&gt;因为它发生在别人的工具链里，别人的任务里，别人的评价体系里。哪怕这个评价体系仍然有限，它也说明中国模型不只是在国内榜单上互相比，而是在进入海外开发者工具的评估视野。&lt;/p&gt;
&lt;p&gt;对国产模型公司来说，这条路可能比做一个全球聊天 App 更现实。你不用先说服普通用户换掉 ChatGPT，只要先说服安全团队、IDE 插件、CI 平台、代码审查工具、企业内网 Agent 平台：在某些任务上，用我更便宜、更可控，效果还不差。&lt;/p&gt;
&lt;p&gt;一旦被接进这些工具链，模型就不再只是一个 API 名字，而是某个生产流程的一部分。&lt;/p&gt;
&lt;h2 id=&#34;最后别把-benchmark-当结论要把它当入口&#34;&gt;最后，别把 benchmark 当结论，要把它当入口
&lt;/h2&gt;&lt;p&gt;这类文章最容易写偏。一边可以把它写成「国产模型赢麻了」，另一边也可以把它写成「Semgrep 样本太小，不足为据」。这两个反应都太快。&lt;/p&gt;
&lt;p&gt;更合适的态度是：把它当作一个入口。&lt;/p&gt;
&lt;p&gt;Semgrep 的实验告诉我们三件事。第一，安全检测这样的垂直任务，已经足够复杂，不能再用通用聊天能力去想象模型竞争。第二，开权重模型在某些高价值任务上，已经可以进入严肃评估，而不是只能当便宜替代品。第三，生产级 Agent 的胜负不会只由模型决定，Harness、数据集、评估方法、上下文筛选和成本结构会一起决定结果。&lt;/p&gt;
&lt;p&gt;模型负责推理，Harness 负责把推理放进正确的问题里。模型回答「这里有没有漏洞」，Harness 决定它该看哪个端点、该读哪些文件、该如何把结果变成工程师能处理的发现。前者决定上限，后者决定稳定性和可落地性。&lt;/p&gt;
&lt;p&gt;所以，GLM 5.2 这次最值得关注的地方，不是它在标题里「击败 Claude」。更有意思的是，它让我们看到一条新路线：国产大模型想进入全球市场，不一定要先赢下所有人的聊天框。它可以先在一个具体、昂贵、需要信任的工作流里，证明自己真的能省人、省钱，或者发现别人发现不了的问题。&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://semgrep.dev/blog/2026/we-have-mythos-at-home-glm-52-beats-claude-in-our-cyber-benchmarks/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Semgrep: We have Mythos at Home: GLM 5.2 beats Claude in our Cyber Benchmarks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://z.ai/blog/glm-5.2&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Z.ai 官方：GLM-5.2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://news.ycombinator.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hacker News&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 中文聚合&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.bestblogs.dev/en/video/6daf60e&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;BestBlogs: OpenAI Codex lead on the new shape of product work&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.bestblogs.dev/en/status/2071356504805142532&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub Copilot 智能体测试框架基准测试&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

    &lt;blockquote&gt;
        &lt;p&gt;以上来源用于观察 Semgrep 的实验口径、模型发布信息和社区反馈。Semgrep 的结果是特定 IDOR 数据集、特定提示词与特定运行框架下的测试，不等同于对所有安全任务或所有编程任务的独立通用结论。&lt;/p&gt;

    &lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>DeepSeek 开源 DSpark：投机解码不用再二选一，V4 推理提速 60–85%</title>
        <link>https://blog.ccino.org/p/deepseek-dspark-speculative-decoding-2026/</link>
        <pubDate>Sun, 28 Jun 2026 08:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/deepseek-dspark-speculative-decoding-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/deepseek-dspark-speculative-decoding-2026/imgs/cover.png" alt="Featured image of post DeepSeek 开源 DSpark：投机解码不用再二选一，V4 推理提速 60–85%" /&gt;
    &lt;blockquote&gt;
        &lt;p&gt;6 月 27 日，DeepSeek 把一份叫 DSpark 的论文丢进 GitHub 仓库 &lt;code&gt;deepseek-ai/DeepSpec&lt;/code&gt;，Hacker News 上对应帖子很快冲到 700 多分。配套的还有 MIT 协议的训练代码和两组直接能用的权重。本文是对论文和几篇公开解读的二次整理，数字以论文与官方口径为准，我没有独立复现。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;先说结论它解决的是一道老选择题&#34;&gt;先说结论：它解决的是一道老选择题
&lt;/h2&gt;&lt;p&gt;投机解码（speculative decoding）这个词，简单说就是让一个小模型先&amp;quot;猜&amp;quot;几个 token，大模型再一次性验证，猜对的就白赚，猜错就回退。猜得好，推理就快；猜得差，等于白干。这套做法在学术圈火了两三年，一直卡在一个尴尬的取舍上：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想猜得&lt;strong&gt;准&lt;/strong&gt;，就得让小模型一个个 token 往下递推，像 Eagle3 那样。准是真准，可猜的成本会随块长越滚越大。&lt;/li&gt;
&lt;li&gt;想猜得&lt;strong&gt;快&lt;/strong&gt;，就得让小模型一次性并行吐出整块 token，像 DFlash 那样。快是真快，可每个位置都&amp;quot;各猜各的&amp;quot;，越到块尾接受率掉得越狠。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一句话，&lt;strong&gt;快的不准，准的不快&lt;/strong&gt;。DSpark 想做的，就是把这道二选一拆掉。&lt;/p&gt;
&lt;p&gt;它给出的答案是：两种都要。一个并行骨架负责快，一个极轻的串行小头负责准。再叠一层会&amp;quot;看 GPU 脸色&amp;quot;的调度器，决定每次到底验证几个 token。论文称，在 DeepSeek-V4 的真实流量上，等吞吐条件下每个用户的生成速度比之前的 MTP-1 基线快了 60–85%，而且输出无损。&lt;/p&gt;
&lt;p&gt;需要先点明一句：&lt;strong&gt;DSpark 不是新模型，是服务端优化（serving optimization）&lt;/strong&gt;。它复用 DeepSeek-V4 现成的权重，只在前面外挂一个草稿模块（draft module）。所以它不改变模型本身的能力，只改变 token 是怎么被吐出来的。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;投机解码的底层账本&#34;&gt;投机解码的底层账本
&lt;/h2&gt;&lt;p&gt;要理解 DSpark 为什么这么设计，得先看清这笔账。&lt;/p&gt;
&lt;p&gt;投机解码里有两个角色：草稿模型（draft model）和目标模型（target model）。草稿模型先一口气提出一整块 token，目标模型再对这些 token 做一次前向验证。验证用一种叫拒绝采样（rejection sampling）的规则，接受最长那段合法前缀，再额外补一个 token。因为这套规则在数学上精确保持目标分布，所以理论上&lt;strong&gt;质量不掉&lt;/strong&gt;，只是速度可能变快也可能变白干。&lt;/p&gt;
&lt;p&gt;每个 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;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;L = (T_draft + T_verify) / τ
&lt;/span&gt;&lt;/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;T_draft&lt;/code&gt; 是草稿耗时，&lt;code&gt;T_verify&lt;/code&gt; 是验证耗时，&lt;code&gt;τ&lt;/code&gt; 是每个周期里被接受的 token 数。想让 L 变小，只有三个杠杆：&lt;strong&gt;让草稿更快&lt;/strong&gt;（降 &lt;code&gt;T_draft&lt;/code&gt;）、&lt;strong&gt;让草稿更准&lt;/strong&gt;（升 &lt;code&gt;τ&lt;/code&gt;）、&lt;strong&gt;让验证更聪明&lt;/strong&gt;（少在注定被拒的 token 上浪费 &lt;code&gt;T_verify&lt;/code&gt;）。&lt;/p&gt;
&lt;p&gt;过去的方法基本只拉其中一两个杠杆。DSpark 的特别之处在于，它把三个都拉了。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;第一招半自回归把快和准缝在一起&#34;&gt;第一招：半自回归，把快和准缝在一起
&lt;/h2&gt;&lt;p&gt;DSpark 的草稿生成分两步走。&lt;/p&gt;
&lt;p&gt;第一步，用一个&lt;strong&gt;并行的重型骨架&lt;/strong&gt;（论文里用的是 DFlash）一次性为块内每个位置算出基础 logits。这一步继承了并行路线的优点：不管块多长，草稿成本几乎不变，而且第一个 token 的准确率很高。&lt;/p&gt;
&lt;p&gt;第二步，接一个&lt;strong&gt;轻量串行小头&lt;/strong&gt;，在采样前给每个位置加一个依赖前文的偏置。默认这个小头是个 Markov 头，只看紧挨着的前一个 token，并用 rank 256 的低秩分解压住参数量，即便词表很大也很便宜。&lt;/p&gt;
&lt;p&gt;举论文里的例子：当第一个位置采样出 &lt;code&gt;of&lt;/code&gt; 之后，这个小头会主动抬升 &lt;code&gt;course&lt;/code&gt; 的概率、压低 &lt;code&gt;problem&lt;/code&gt; 的概率。换句话说，它让后面的猜测&amp;quot;看一眼前面&amp;quot;。&lt;/p&gt;
&lt;p&gt;效果是逐位置叠加的：并行骨架保证了开头的命中率，串行小头则把接受率稳稳托到块的深处，而不是像纯并行那样在后半段崩掉。论文还提到一个可选的 RNN 头能追踪整块前文，但增益边际，所以正式发布的版本用的是 Markov 头。&lt;/p&gt;
&lt;p&gt;训练上有个细节值得记一笔：目标模型是冻结的，草稿头直接复用它的 embedding 和输出头，关键的损失项是&lt;strong&gt;全变分损失（total-variation loss）&lt;/strong&gt;。最小化这个距离，等价于直接最大化草稿的接受率，目标很对齐。&lt;/p&gt;
&lt;p&gt;数据层面，论文称在 Qwen3 的 4B/8B/14B 三个尺寸上，DSpark 的平均接受长度比 Eagle3 高 30.9% / 26.7% / 30.0%，比 DFlash 高 16.3% / 18.4% / 18.3%。更直观的是，2 层的 DSpark 就能压过 5 层的 DFlash。而串行小头本身几乎不花钱：把草稿块从 4 拉到 16，每轮延迟只多 0.2–1.3%，换来的接受长度提升最多到 30%。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/deepseek-dspark-speculative-decoding-2026/imgs/semi-autoregressive.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/deepseek-dspark-speculative-decoding-2026/imgs/semi-autoregressive_hu_48b8ca5999980773.png 480w, https://blog.ccino.org/p/deepseek-dspark-speculative-decoding-2026/imgs/semi-autoregressive_hu_abab79d3f1668ce5.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;DSpark 的半自回归双头结构：左侧「并行骨架」一次产出多个 token（快），接上「串行小头」结合前文微调（准）&#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;第二招看-gpu-脸色的验证调度&#34;&gt;第二招：看 GPU 脸色的验证调度
&lt;/h2&gt;&lt;p&gt;光把草稿做准还不够。在真实的高并发服务里，多猜 token 不等于更快——验证那些注定被拒绝的 token，会白白吃掉宝贵的 batch 容量。DSpark 在这里加了两个零件。&lt;/p&gt;
&lt;p&gt;第一个是&lt;strong&gt;置信度头（confidence head）&lt;/strong&gt;。它给每个草稿位置打个分，估这个 token 能不能活过验证。监督信号来自解析出的逐步接受率。但神经网络天生爱&amp;quot;过度自信&amp;quot;，所以作者又套了一层 &lt;strong&gt;Sequential Temperature Scaling&lt;/strong&gt; 做事后校准，把预期校准误差（ECE）从 3–8% 压到约 1%。&lt;/p&gt;
&lt;p&gt;第二个是&lt;strong&gt;硬件感知的前缀调度器&lt;/strong&gt;。它在启动时先离线测一条吞吐曲线 &lt;code&gt;SPS(B)&lt;/code&gt;（B 是 batch 大小），然后据此给每个请求动态分配验证长度。GPU 闲的时候，多验证几个 token；GPU 忙的时候，少验证，保住吞吐。这套调度带一条&amp;quot;早停&amp;quot;规则来保证无损——论文附录里专门给了一个反例，说明朴素的 全局搜索 会泄露信息，所以这条规则不是多余的。&lt;/p&gt;
&lt;p&gt;不同负载下表现不同。据解读，中等负载时调度器大概会给每个请求验证 4–6 个 token；并发一上来，它就主动砍预算。这恰好是 DSpark 区别于前代的地方：Eagle3 和 DFlash 的验证长度基本是固定的，DSpark 则是动态的。&lt;/p&gt;
&lt;p&gt;把两招合起来看，三个杠杆都动到了：并行骨架降 &lt;code&gt;T_draft&lt;/code&gt;，串行小头和置信度头升 &lt;code&gt;τ&lt;/code&gt;，负载调度省 &lt;code&gt;T_verify&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/deepseek-dspark-speculative-decoding-2026/imgs/load-aware-scheduler.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/deepseek-dspark-speculative-decoding-2026/imgs/load-aware-scheduler_hu_e488b5efd1ab61d5.png 480w, https://blog.ccino.org/p/deepseek-dspark-speculative-decoding-2026/imgs/load-aware-scheduler_hu_7692d1a3c46d27cf.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;负载感知调度器：GPU 空闲时多验证几个 token，繁忙时主动砍预算保吞吐&#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;和-mtp-是什么关系&#34;&gt;和 MTP 是什么关系
&lt;/h2&gt;&lt;p&gt;如果你读过本站之前那篇讲 Gemma 4 MTP 和 Qwen 3.6 MTP 的文章，可能会问：这跟 MTP（多令牌预测，Multi-Token Prediction）有什么不一样？&lt;/p&gt;
&lt;p&gt;两者都想一次生成多个 token，但思路不同。MTP 偏向让模型结构本身支持多 token 输出，DSpark 则是纯粹的推理时（inference-time）投机解码框架，挂在已有模型外面。更有意思的是，论文里 DSpark 的生产基线正好是 &lt;strong&gt;MTP-1&lt;/strong&gt;，也就是 DeepSeek 之前那套单 token 设置。换句话说，DSpark 上线就是来替掉 MTP-1 的，60–85% 的提速是相对它而言。&lt;/p&gt;
&lt;p&gt;发布的两组权重 &lt;code&gt;DeepSeek-V4-Pro-DSpark&lt;/code&gt; 和 &lt;code&gt;DeepSeek-V4-Flash-DSpark&lt;/code&gt; 都附在 V4 现成权重上，Hugging Face 卡片里有最小推理示例，目标模型不用重训。实际跑起来的发布配置叫 DSpark-5，也就是 5 个 token 的草稿块配 Markov 头。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;想自己玩门槛并不低&#34;&gt;想自己玩，门槛并不低
&lt;/h2&gt;&lt;p&gt;DSpark 的训练代码叫 DeepSpec，MIT 协议，三阶段走：数据准备、训练、评估。默认配置假设单机 8 张 GPU，评估覆盖 gsm8k、math500、aime25、humaneval、mbpp、livecodebench 等九个数据集，目标模型支持 Qwen3 和 Gemma 两个系列。仓库里同时收了 DSpark、DFlash、Eagle3 三种草稿模型，方便横向比。&lt;/p&gt;
&lt;p&gt;但有一个现实门槛得提醒：复现训练所需的 目标缓存 体积惊人。论文/仓库提到，默认的 Qwen3-4B 设置下，这份缓存大约要 &lt;strong&gt;38 TB&lt;/strong&gt;。普通团队基本只能直接用发布好的权重，走推理那条路，而不是从头训草稿。&lt;/p&gt;
&lt;p&gt;对不同任务，收益也不一样。代码生成本身接受率就高，调度器敢验证长前缀，所以 编程类 agent 的流式输出会明显变顺；开放聊天经过一轮置信度阈值调整，接受率从 45.7% 提到 95.7%；数学推理居中，从 76.9% 提到 92.5%。越是结构化、越可预测的 workload，越吃香。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;几个概念谁负责什么&#34;&gt;几个概念，谁负责什么
&lt;/h2&gt;&lt;p&gt;回到开头那道选择题。DSpark 里其实塞了四个互相配合的东西，把它们的关系理清，才算看懂这篇工作：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;草稿模型&lt;/strong&gt;负责&amp;quot;猜&amp;quot;。DSpark 把它拆成并行骨架加串行小头，分别拿下&amp;quot;快&amp;quot;和&amp;quot;准&amp;quot;。&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;负责给每个猜测打分，告诉系统哪些 token 值得拿去验证。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;负载调度器&lt;/strong&gt;负责&amp;quot;看脸色&amp;quot;，在 GPU 忙闲之间动态调节验证长度，把算力花在刀刃上。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/deepseek-dspark-speculative-decoding-2026/imgs/concepts-pipeline.png&#34;
	width=&#34;1408&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/deepseek-dspark-speculative-decoding-2026/imgs/concepts-pipeline_hu_6b1a3b5cd73d3895.png 480w, https://blog.ccino.org/p/deepseek-dspark-speculative-decoding-2026/imgs/concepts-pipeline_hu_fc1c88ca5da5ce76.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;DSpark 四个组件的分工流水线：草稿模型与目标模型管质量，置信度头与负载调度器管成本&#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;四者的边界很清楚：草稿和目标管&amp;quot;质量&amp;quot;，置信度头和调度器管&amp;quot;成本&amp;quot;。DSpark 的真正贡献，不是发明了投机解码，而是把这条流水线上每个环节都重新调了一遍，让&amp;quot;快、准、省&amp;quot;第一次不必互相对抗。&lt;/p&gt;
&lt;p&gt;放到更大的图里看，2026 年开源模型推理优化的战事已经从&amp;quot;谁的模型更强&amp;quot;悄悄转向&amp;quot;谁的服务更便宜&amp;quot;。MTP 路线、投机解码路线、各种 draft 模型设计，本质上都在抢同一块成本。DSpark 给出了一个相当完整、且直接上过 DeepSeek-V4 真实流量的开源样本。至于它在别家模型、别家硬件上能不能复现这个 60–85%，那就要等社区拿 38 TB 之外的更轻量复现来回答了。&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/deepseek-ai/DeepSpec/blob/main/DSpark_paper.pdf&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DSpark 论文 PDF（DeepSpec 仓库内）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/deepseek-ai/DeepSpec&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DeepSpec 代码库（MIT 协议）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro-DSpark&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DeepSeek-V4-Pro-DSpark 权重（Hugging Face）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.marktechpost.com/2026/06/27/deepseek-releases-dspark-a-speculative-decoding-framework-that-accelerates-deepseek-v4-per-user-generation-60-85-over-mtp-1/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MarkTechPost 解读：DeepSeek Releases DSpark&amp;hellip;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://news.ycombinator.com/item?id=48696585&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hacker News 讨论帖&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

    &lt;blockquote&gt;
        &lt;p&gt;以上来源用于观察发布口径和社区反馈，不等同于独立基准测试；文中所有百分比均为论文或官方解读给出的数据，未经本文独立复现。&lt;/p&gt;

    &lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>阿里被指 2.5 万账号工业化蒸馏 Claude：蒸馏战为什么升级成了国家议题</title>
        <link>https://blog.ccino.org/p/alibaba-industrial-distillation-claude-2026/</link>
        <pubDate>Sat, 27 Jun 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/alibaba-industrial-distillation-claude-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/alibaba-industrial-distillation-claude-2026/imgs/cover.png" alt="Featured image of post 阿里被指 2.5 万账号工业化蒸馏 Claude：蒸馏战为什么升级成了国家议题" /&gt;&lt;p&gt;这篇要说的事，本周在 Ars Technica 上的评论数冲到了第一，155 条。这回不是因为又出了新模型，让评论炸出来的是一份写给美国参议员的信。&lt;/p&gt;
&lt;p&gt;按 Ars Technica 6 月 25 日的报道，Anthropic 在参议院一场名为「AI 与美国梦」的听证会前一天，给共和党参议员 Tim Scott 和民主党参议员 Elizabeth Warren 送去一封信。信里附上了 Anthropic 所谓的「新机密证据」，声称这是他们迄今测量到的、规模最大的一次非法提取 Claude 能力的活动。&lt;/p&gt;
&lt;p&gt;被点名的，是阿里。&lt;/p&gt;
&lt;p&gt;据 Anthropic 在信中称，从 4 月 22 日到 6 月 5 日，与阿里及其 AI 实验室 Qwen 相关的运营者，用近 25,000 个「欺诈账号」与 Claude 进行了超过 2880 万次交互，专门冲着 agentic reasoning（智能体推理）、software engineering（软件工程）、long-horizon tasks（长周期任务）这些「Claude 最有价值的能力」去的。&lt;/p&gt;
&lt;p&gt;需要先把边界划清楚：这些目前都是 Anthropic 单方面的指控。阿里否认了相关说法，并且在 Anthropic 发声前后，已经反过来把美国国防部告上法庭，理由是被错误列入「中国军方关联公司」清单。所以这篇文章不打算给阿里定罪，而是想拆一件更值得想的事——这一次的蒸馏争议，和几个月前马斯克那一次，味道完全不一样了。&lt;/p&gt;
&lt;h2 id=&#34;这次不一样的地方是工厂两个字&#34;&gt;这次不一样的地方，是「工厂」两个字
&lt;/h2&gt;&lt;p&gt;蒸馏（distillation）的原理，在之前那篇《马斯克承认蒸馏 OpenAI》里讲过，这里不重复。简单说，就是让强模型当老师，通过大量输入输出样本，把它的回答方式、判断偏好、推理路径「教」给一个更小更便宜的学生模型。&lt;/p&gt;
&lt;p&gt;马斯克那次蒸馏争议，底色是个人戏剧性：一边起诉 OpenAI，一边让 xAI 偷偷用对方模型当老师。大家围观的重点是「打脸」，是道德位置被削弱。&lt;/p&gt;
&lt;p&gt;阿里这次，Anthropic 描述的是一个完全不同的量级。不是几个工程师挂几个账号慢慢试，而是 2.5 万个账号、将近 2900 万次对话，用混淆技术和代理网络规避检测，针对的是模型最核心的几项能力。Anthropic 甚至专门造了个词，说围绕这种规避手法，已经长出了一个「circumvention economy」（规避经济）。&lt;/p&gt;
&lt;p&gt;更有意思的是 Anthropic 自己点出的对比：就在几个月前，他们刚指控过 DeepSeek、Moonshot、MiniMax 用类似手法，当时是「约 24,000 个账号、超过 1600 万次交互」。阿里这次被指的 2880 万次，差不多翻了一倍。&lt;/p&gt;
&lt;p&gt;Anthropic 想传递的信号很明确：他们要描述的，是一种正在工业化的操作模式。账号在变多，次数在翻倍，规避手法在成熟，甚至养出了专门的服务市场。当能力抽取变成一条流水线，「领先模型当训练材料」这件事，就从个案变成了产业。&lt;/p&gt;
&lt;h2 id=&#34;真正让它变味儿的是违抗特朗普这顶帽子&#34;&gt;真正让它变味儿的，是「违抗特朗普」这顶帽子
&lt;/h2&gt;&lt;p&gt;如果只是规模大，这还只是一桩商业纠纷。Anthropic 把它往另一个方向推了。&lt;/p&gt;
&lt;p&gt;信里反复强调一个时间点：阿里的这波操作，发生在特朗普政府已经出手遏制「非法蒸馏」之后。今年 4 月，特朗普公开指控中国搞「工业规模的 AI 盗窃」。Anthropic 抓住的就是这个时间差——按他们的说法，阿里不是不知道这是红线，而是明知故犯。&lt;/p&gt;
&lt;p&gt;更狠的是下面这层逻辑。阿里在纽交所上市，在美国有业务，对美国投资者和监管机构负责，却「在特朗普警告克隆不可接受之后的几周里」继续这么做。Anthropic 的话外音是：一个享受美国资本市场红利的公司，在帮美国的战略对手抽干美国的前沿能力。&lt;/p&gt;
&lt;p&gt;把「蒸馏」和「违抗总统令」「国家安全」绑在一起，是这次争议最关键的一步。它意味着，模型能力的归属，正在从「谁抄了谁的作业」这种商业道德问题，被重新定义成国家战略资源问题。&lt;/p&gt;
&lt;p&gt;Anthropic 顺势给国会提了三条立法建议：改反垄断法让 AI 公司能共享情报、加码芯片出口管制让对手「根本训练不起」、立法惩罚搞蒸馏的海外实验室。翻译成大白话就是：这事光靠我们一家公司挡不住，得动用国家力量。&lt;/p&gt;
&lt;h2 id=&#34;阿里的反击和网络核武器的比喻&#34;&gt;阿里的反击，和「网络核武器」的比喻
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/alibaba-industrial-distillation-claude-2026/imgs/mythos-cyber-weapon.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/alibaba-industrial-distillation-claude-2026/imgs/mythos-cyber-weapon_hu_d5cfbff4bcc906ae.png 480w, https://blog.ccino.org/p/alibaba-industrial-distillation-claude-2026/imgs/mythos-cyber-weapon_hu_30d86a49555a0fcf.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Mythos 被当作「网络核武器」：发光的 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;就在 Anthropic 指控传开前后，阿里把美国国防部告了，要求撤销「中国军方关联公司」的认定。阿里的说法是，公司由独立董事会治理，没人有军方背景，产品是做零售、物流、企业 IT 的，跟武器情报不沾边，这个认定「没有事实和法律依据」。指控曝光当天，阿里股价跌了约 3%。&lt;/p&gt;
&lt;p&gt;但 Anthropic 显然不打算接受这套说辞。他们真正担心的，是这波蒸馏会「帮中国更快达到 Mythos 的能力水平」。&lt;/p&gt;
&lt;p&gt;Mythos 是 Anthropic 那个因为「太能找安全漏洞」而拒绝公开发布的网络安全模型。围绕它有一个叫 Project Glasswing 的计划，给 40 多家美国机构开了 Mythos 的预览权限，用来加固防御——把中国排除在外。&lt;/p&gt;
&lt;p&gt;这件事在中国的反应，被《南华早报》记下来了。360 创始人周鸿祎在北京一场网络安全大会上，把 Mythos 称作「网络核武器」。他说 Mythos 在发现漏洞能力上的跃升是「恐怖的变化」，等于把网络攻击「民主化」了。最扎心的是这句：美国机构能用 Mythos 扫描你的漏洞，你连看一眼 Mythos 的资格都没有。他的结论是，中国只能自己也造一个，才能形成「相互确保毁灭」的威慑。&lt;/p&gt;
&lt;p&gt;「相互确保毁灭」，是冷战核威慑的逻辑。当一个科技创始人开始用这个词谈 AI 模型，蒸馏这件事的性质就彻底变了。它已经被塞进了一套完整的军备竞赛叙事里，背后连着的是被当成战略武器的能力。&lt;/p&gt;
&lt;h2 id=&#34;三个概念的关系决定了这件事的分量&#34;&gt;三个概念的关系，决定了这件事的分量
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/alibaba-industrial-distillation-claude-2026/imgs/distillation-industrialization.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/alibaba-industrial-distillation-claude-2026/imgs/distillation-industrialization_hu_65f038335bcfd978.png 480w, https://blog.ccino.org/p/alibaba-industrial-distillation-claude-2026/imgs/distillation-industrialization_hu_c977cad6a771f473.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;政治化，说的是这件事被装进什么框架去解决：Anthropic 没有只在法庭或 API 条款层面接招，而是直接把它送进参议院，绑上总统令、芯片管制和国家战略对手。一旦蒸馏被定义成国家安全议题，应对工具就从商业诉讼升级成了立法和出口管制。&lt;/p&gt;
&lt;p&gt;这三者是层层递进的。蒸馏的技术动作一直存在，但当它被工业化，单个公司靠条款和技术封堵就已经力不从心；当它又被政治化，博弈的场域就从市场彻底转到了国家层面。阿里这次之所以分量不一样，正因为它是第一个同时踩中三层的事件：规模上像工厂，框架上被扣了「违抗总统令」的帽子，背后还连着 Mythos 这种被当成战略武器的能力。&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://arstechnica.com/tech-policy/2026/06/anthropic-claims-alibaba-defied-trump-to-attack-claude-and-steal-capabilities/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic says Alibaba must be punished for largest Claude cloning attack（Ars Technica）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.ccino.org/p/xai-openai-distillation-moat-2026/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;马斯克承认蒸馏 OpenAI：大模型护城河正在被自己瓦解（本博客，系列前文）&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

    &lt;blockquote&gt;
        &lt;p&gt;以上来源用于观察 Anthropic 的发布口径与社区反馈。其中涉及阿里行为的账号数、对话次数等数字，均出自 Anthropic 单方面提交给参议员的信件；阿里已否认相关指控，并另行起诉美国国防部要求撤销「中国军方关联公司」认定。本文所述不等于独立司法认定。&lt;/p&gt;

    &lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>终端里的 AI Agent，终于开始长出 IDE 的眼睛</title>
        <link>https://blog.ccino.org/p/copilot-cli-lsp-code-intelligence-2026/</link>
        <pubDate>Fri, 26 Jun 2026 08:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/copilot-cli-lsp-code-intelligence-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/copilot-cli-lsp-code-intelligence-2026/imgs/cover.png" alt="Featured image of post 终端里的 AI Agent，终于开始长出 IDE 的眼睛" /&gt;&lt;p&gt;GitHub 最近给 Copilot CLI 加了一个看起来很小的能力：通过 &lt;strong&gt;LSP（Language Server Protocol，语言服务器协议）&lt;/strong&gt; 接入 language servers（语言服务器），让命令行里的 AI 编程智能体也能拿到定义跳转、引用查找、类型信息和 hover 文档。&lt;/p&gt;
&lt;p&gt;这件事如果只按功能更新看，很容易被低估。毕竟 LSP 不是新东西，VS Code、JetBrains、Vim、Neovim 早就靠它提供代码智能。很多开发者每天都在用 go to definition、find references、rename symbol，却不会特意想起背后的协议。&lt;/p&gt;
&lt;p&gt;但放到 AI 编程工具里，这个更新就不只是“Copilot CLI 多了一个插件”。它更像一个提醒：&lt;strong&gt;AI Agent 不能永远靠读文本理解代码。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;过去一年，大家讨论 Claude Code、Codex、Cursor、Copilot，常常把重点放在模型能力、上下文长度、价格和工具调用上。哪个模型更会改 bug？哪个 agentic coding 工具更能自主跑完任务？哪个订阅更划算？这些问题当然重要，但它们都默认了一个前提：Agent 已经“看懂”了代码。&lt;/p&gt;
&lt;p&gt;实际情况没那么乐观。很多时候，Agent 只是把代码库当成一堆文本文件在搜索。&lt;/p&gt;
&lt;h2 id=&#34;没有-lsp-的-agent其实很像一个没有-ide-的新人&#34;&gt;没有 LSP 的 Agent，其实很像一个没有 IDE 的新人
&lt;/h2&gt;&lt;p&gt;GitHub 官方博客里举了一个很直观的例子：如果没有 language server，Copilot CLI 为了理解一个 Java 依赖里的 API，可能会去 Maven 本地仓库找 JAR 文件，解压到临时目录，再用 grep 在 &lt;code&gt;.class&lt;/code&gt; 文件附近搜索方法名。&lt;/p&gt;
&lt;p&gt;Python 项目里，它可能去 &lt;code&gt;site-packages&lt;/code&gt; 里翻源码；TypeScript 项目里，它可能一路钻进 &lt;code&gt;node_modules&lt;/code&gt;；遇到大型 monorepo，它就开始用文件搜索、关键词匹配、上下文拼接来推断一个函数到底从哪里来、签名是什么、有没有重载。&lt;/p&gt;
&lt;p&gt;这不是 Agent 偷懒，而是它能用的感官太少。&lt;/p&gt;
&lt;p&gt;一个有经验的开发者打开 IDE，不会只靠全文搜索写代码。你看到一个函数，会跳到定义；看到一个类型，会查它的泛型参数；不确定调用关系，会找引用；要改名字，会让 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;没有这些能力，AI Agent 再聪明，也很容易变成“在一堆文本里猜答案”。上下文窗口再长，也只是让它一次能塞进更多文本，不等于它理解了代码的语义结构。&lt;/p&gt;
&lt;h2 id=&#34;lsp-给-agent-的不是信息量而是信息的坐标系&#34;&gt;LSP 给 Agent 的不是信息量，而是信息的坐标系
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/copilot-cli-lsp-code-intelligence-2026/imgs/semantic-map.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/copilot-cli-lsp-code-intelligence-2026/imgs/semantic-map_hu_8f92e735b498d1b5.png 480w, https://blog.ccino.org/p/copilot-cli-lsp-code-intelligence-2026/imgs/semantic-map_hu_b67c01fb8e5a9347.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;代码语义坐标系：从 grep 到 LSP&#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;LSP 最容易被误解成“给 Agent 多一点上下文”。这说法不算错，但不够准确。&lt;/p&gt;
&lt;p&gt;真正关键的是，LSP 给的是一套&lt;strong&gt;代码语义坐标系&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;全文搜索能告诉你某个字符串在哪里出现过，language server 能告诉你某个符号在当前语言规则下指向哪里。两者差别很大。一个项目里可能有很多同名函数、同名变量、同名字段，grep 只能把它们全找出来；LSP 可以基于作用域、导入、泛型、重载和编译配置判断当前这一处到底引用的是谁。&lt;/p&gt;
&lt;p&gt;这对 AI Agent 很关键。&lt;/p&gt;
&lt;p&gt;因为 Agent 做复杂任务时，很多错误并不是“不知道某段代码存在”，而是“误读了这段代码之间的关系”。比如它看到一个 &lt;code&gt;execute&lt;/code&gt; 方法，以为是当前类里的实现，实际调用的是依赖包里的重载；它看到一个 TypeScript 类型，以为字段可选，实际经过泛型约束后是必填；它搜索到一个旧函数，以为还能用，实际项目已经迁移到新接口。&lt;/p&gt;
&lt;p&gt;人类开发者在 IDE 里会下意识用跳转和类型提示纠正这些误读。Agent 如果没有同等能力，就只能靠模型概率和文本线索补洞。&lt;/p&gt;
&lt;p&gt;这也是为什么 Copilot CLI 的 LSP Setup skill 值得关注。按 GitHub 的介绍，它会引导用户选择语言、检测操作系统、查找对应 language server、安装依赖、写入 &lt;code&gt;lspServers&lt;/code&gt; 配置，并验证二进制是否可用。它支持的不是一个特定语言，而是一套让 CLI Agent 接入语言服务器的流程。&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;/code&gt;&lt;/pre&gt;&lt;/td&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;lspServers&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;java&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;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;jdtls&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;args&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;fileExtensions&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;.java&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;java&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;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这段配置本身不神秘。真正有意思的是，它把以前属于 IDE 的能力，搬进了命令行 Agent 的工作环境。&lt;/p&gt;
&lt;h2 id=&#34;ai-编程工具正在补传统-ide-的课&#34;&gt;AI 编程工具正在补传统 IDE 的课
&lt;/h2&gt;&lt;p&gt;过去一两年，AI 编程工具给人的感觉是“从聊天框杀进开发流程”。Cursor 把聊天和编辑器结合，Claude Code 把终端变成主战场，Codex 和 Copilot CLI 也都在探索命令行 Agent 的形态。&lt;/p&gt;
&lt;p&gt;这条路一开始很自然：先让模型能读文件、改文件、跑命令、提交 diff。只要能把一个任务闭环跑完，用户就会觉得惊艳。&lt;/p&gt;
&lt;p&gt;但用久了以后，问题也会冒出来。Agent 能改文件，不代表它真的理解项目；能跑测试，不代表它知道为什么失败；能搜索代码，不代表它知道符号关系；能读 20 万 token，不代表它知道哪 200 行才关键。&lt;/p&gt;
&lt;p&gt;所以 AI 编程工具会慢慢补传统 IDE 的课。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/copilot-cli-lsp-code-intelligence-2026/imgs/engineering-senses.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/copilot-cli-lsp-code-intelligence-2026/imgs/engineering-senses_hu_3c346c3642b0f223.png 480w, https://blog.ccino.org/p/copilot-cli-lsp-code-intelligence-2026/imgs/engineering-senses_hu_528595b8a61f3ccb.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;LSP 是第一层。它解决“代码语义”问题。再往后，还有更多类似的工程感官：&lt;/p&gt;
&lt;p&gt;测试框架告诉 Agent 行为有没有坏；类型系统告诉 Agent 改动是不是成立；运行时日志告诉 Agent 线上到底发生了什么；调试器告诉 Agent 状态如何流动；依赖图告诉 Agent 哪些模块真的相关；代码所有权和历史提交告诉 Agent 哪些地方不能随便动。&lt;/p&gt;
&lt;p&gt;这些东西都不是模型参数的一部分，但它们决定了 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;但 LSP 这件事说明，问题不只是“塞不下”。&lt;/p&gt;
&lt;p&gt;如果 Agent 不知道一个符号真正指向哪里，给它更多搜索结果，可能只是给它更多噪音。它会看到十几个相似函数、二十处历史调用、三套旧接口，然后在里面选一个看起来最像的答案。上下文越长，未必越准，反而可能让误判更隐蔽。&lt;/p&gt;
&lt;p&gt;语义工具的价值在于过滤噪音。它不是把所有东西都塞给模型，而是在模型提问时给出结构化答案：这个符号的定义在这里；这个引用列表是这些；这个类型展开后长这样；这个重命名会影响这些位置。&lt;/p&gt;
&lt;p&gt;换句话说，未来的 coding agent（编程智能体）不应该像一个“超大号全文搜索器”，而应该像一个会调用 IDE、编译器、测试和运行时的工程助手。&lt;/p&gt;
&lt;p&gt;这也解释了为什么不同 AI 编程产品正在走向类似方向。Cursor 的优势在编辑器上下文；Claude Code 的优势在终端和任务执行；JetBrains 的优势在成熟 IDE 与语言分析；GitHub Copilot 的优势在代码托管、开发者生态和 Copilot 系列入口。大家路线不同，但最后都会碰到同一个问题：Agent 必须接入真实工程系统，而不是只接入文件系统。&lt;/p&gt;
&lt;h2 id=&#34;对开发者来说重点不是马上换工具&#34;&gt;对开发者来说，重点不是马上换工具
&lt;/h2&gt;&lt;p&gt;看到 Copilot CLI 接入 LSP，没必要立刻得出“Copilot 要超过 Claude Code”这类结论。现在各家工具迭代很快，单点功能很难决定最终胜负。&lt;/p&gt;
&lt;p&gt;更实际的问题是：你现在用的 AI 编程工具，有没有接入项目里已经存在的工程信号？&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;p&gt;你的 Agent 是否能使用语言服务器，还是只会 grep？它能不能稳定跑类型检查和测试？它能不能读懂 monorepo 的 workspace 配置？它遇到第三方依赖时，是查官方文档、类型定义，还是在本地包里乱翻？它改完代码后，有没有明确的验证路径？&lt;/p&gt;
&lt;p&gt;这些问题比“哪个模型更聪明”更接近真实工作流。&lt;/p&gt;
&lt;p&gt;如果你是个人开发者，最简单的改法不是搭一套复杂平台，而是把项目里的验证入口整理清楚：类型检查命令、测试命令、lint 命令、启动命令、关键目录说明、常见坑。再进一步，就是给 Agent 配上语言服务器、文档入口和固定检查流程。&lt;/p&gt;
&lt;p&gt;这和我之前一直说的 Harness 思维有点关系，但角度不一样。Harness（支架）偏执行流程和边界控制，LSP 偏代码语义感知。前者回答“Agent 做事时怎么不失控”，后者回答“Agent 做事前到底看没看懂”。&lt;/p&gt;
&lt;p&gt;二者缺一不可。只有 Harness，没有语义感知，Agent 可能很守规矩地做错事；只有语义感知，没有 Harness，Agent 可能很懂代码但仍然乱改、乱跑、乱提交。&lt;/p&gt;
&lt;h2 id=&#34;真正的变化ai-agent-开始承认自己需要工具&#34;&gt;真正的变化：AI Agent 开始承认自己需要工具
&lt;/h2&gt;&lt;p&gt;早期 AI 编程演示里，最吸引人的叙事是“你只要说一句话，AI 就能写完代码”。这个叙事很有传播力，但对真实软件工程来说有点危险。&lt;/p&gt;
&lt;p&gt;真实项目不是面试题。它有历史包袱、框架约定、隐式边界、依赖版本、测试盲区和团队习惯。一个 Agent 如果只靠模型记忆和当前上下文，很容易写出看起来合理、实际不合项目语义的代码。&lt;/p&gt;
&lt;p&gt;GitHub Copilot CLI 接入 LSP 的意义，就在于它承认了一个朴素事实：AI Agent 需要工具，而且需要的是工程师每天已经在用的那些工具。&lt;/p&gt;
&lt;p&gt;不是所有问题都应该交给模型硬想。符号定义让 language server 查，类型约束让编译器查，行为回归让测试查，线上异常让日志查。模型负责理解目标、拆解任务、选择工具、整合结果；工程工具负责给它可靠的局部事实。&lt;/p&gt;
&lt;p&gt;这可能才是 AI 编程从 demo 走向日常工作的关键分界线。&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://github.blog/ai-and-ml/github-copilot/give-github-copilot-cli-real-code-intelligence-with-language-servers/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub Blog：Give GitHub Copilot CLI real code intelligence with language servers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.github.com/en/copilot/concepts/agents/copilot-cli/lsp-servers&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub Docs：Using LSP servers with GitHub Copilot CLI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上来源主要用于观察 GitHub Copilot CLI 的发布口径和功能说明，不等同于独立性能基准测试。文章中的产品趋势判断，是基于公开资料和个人使用 AI 编程工具的经验推演。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>CHAP 出现了：AI Agent 终于开始需要“协作协议”</title>
        <link>https://blog.ccino.org/p/chap-human-agent-protocol-2026/</link>
        <pubDate>Thu, 25 Jun 2026 08:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/chap-human-agent-protocol-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/chap-human-agent-protocol-2026/imgs/cover.png" alt="Featured image of post CHAP 出现了：AI Agent 终于开始需要“协作协议”" /&gt;&lt;p&gt;如果你最近一直在用 Claude Code、Cursor 或各种 Agent（智能体）工具，大概率会有一个熟悉的感觉：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;很多团队现在讲不清楚。&lt;/p&gt;
&lt;p&gt;因为这些信息通常散落在聊天记录、应用日志、工单评论、代码提交、Slack 线程和某个人的脑子里。出了问题再回头查，往往不是审计，而是考古。&lt;/p&gt;
&lt;p&gt;CHAP（Collaborative Human-Agent Protocol，协作式人类与智能体协议）想解决的就是这个问题。它不是一个让模型更聪明的提示词框架，也不是另一个 Agent 编排工具。它更像是在问：如果人类和 Agent 真的要长期一起做事，我们是不是需要一套协作协议？&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/chap-human-agent-protocol-2026/imgs/cover.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/chap-human-agent-protocol-2026/imgs/cover_hu_b144972efc10595e.png 480w, https://blog.ccino.org/p/chap-human-agent-protocol-2026/imgs/cover_hu_56765e989ab57f69.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;CHAP 协作协议封面：人类与 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;为什么只靠-prompt-不够了&#34;&gt;为什么只靠 Prompt 不够了
&lt;/h2&gt;&lt;p&gt;过去两年，很多关于 Agent 的讨论都卡在三个关键词上：模型、工具调用、工作流。&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;问题是，今天大多数 Agent 应用并不会认真保存这些信息。它们可能保存最终答案，却不保存人类为什么覆盖了 Agent 的判断；可能保存聊天历史，却不把修改、理由、权限和任务状态做成可查询的数据；可能有日志，但日志是给工程师排错看的，不是给团队复盘协作看的。&lt;/p&gt;
&lt;p&gt;所以，Prompt（提示词）解决的是“怎么让 Agent 这一次表现好一点”。CHAP 关心的是另一个层面：&lt;strong&gt;当 Agent 在组织里反复参与工作，协作过程本身如何留下结构化痕迹。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这就是它和普通提示词技巧的分水岭。&lt;/p&gt;
&lt;h2 id=&#34;chap-到底想记录什么&#34;&gt;CHAP 到底想记录什么
&lt;/h2&gt;&lt;p&gt;按 CHAP 项目的描述，它把人和 Agent 之间的协作放进一种可以查询、回放和验证的 envelope（信封）里。&lt;/p&gt;
&lt;p&gt;这个说法听起来有点工程化，但可以用一个很普通的代码评审场景理解。&lt;/p&gt;
&lt;p&gt;假设 Cursor 或 Claude Code 帮你审一个 Pull Request。它指出某段代码有风险，严重级别是 warning。你看完之后觉得它误判了，因为这是框架约定，不是 bug。于是你把 severity 从 warning 改成 info，并写了一句理由：“这是框架惯例，不是缺陷。”&lt;/p&gt;
&lt;p&gt;在普通系统里，这件事可能只留下一个最终评论，或者留在某段聊天记录里。CHAP 希望它变成一条结构化记录：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agent 创建了什么任务&lt;/li&gt;
&lt;li&gt;Agent 产出了什么 artefact（产物）&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;这次覆盖属于哪类标签，比如 false-positive（误报）或 framework-pattern-misread（框架模式误读）&lt;/li&gt;
&lt;li&gt;这条记录如何通过 hash（哈希）接到上一条记录之后&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这背后的重点不是“格式漂亮”。重点是，三个月后你可以回头看：Agent 在哪些目录最容易误判？哪些评审意见总被人类降级？哪些 prompt 应该被改？哪些任务需要更明确的上下文？&lt;/p&gt;
&lt;p&gt;这类数据如果靠人工标注，成本很高。但如果它来自日常工作中的批准、修改和拒绝，就会自然沉淀下来。&lt;/p&gt;
&lt;p&gt;这也是 CHAP 最值得关注的地方：它把“人类纠正 Agent”从一次性的互动，变成了可积累的监督数据。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/chap-human-agent-protocol-2026/imgs/override-envelope.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/chap-human-agent-protocol-2026/imgs/override-envelope_hu_77e323b4ee0ad11b.png 480w, https://blog.ccino.org/p/chap-human-agent-protocol-2026/imgs/override-envelope_hu_d0eabbd8cac8868d.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;CHAP 信封记录 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;协作协议要解决四件事&#34;&gt;协作协议要解决四件事
&lt;/h2&gt;&lt;p&gt;我不认为 CHAP 现在就一定会成为行业标准。它还很早期，GitHub 仓库也只是一个公开草案和参考实现。但它提出的问题非常准确。&lt;/p&gt;
&lt;p&gt;如果未来团队里有多个 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;人类批准、拒绝、覆盖 Agent 结果时，这些动作本身需要被记录。尤其在金融、法律、医疗、制造这类场景里，“是谁批准的”有时候和“结果是什么”同样重要。&lt;/p&gt;
&lt;p&gt;第三是任务状态。&lt;/p&gt;
&lt;p&gt;Agent 应用里最混乱的地方，往往不是执行，而是状态。一个任务到底是草稿、待审、已覆盖、已批准、已撤回，不能只藏在 UI 里。状态如果没有协议层表达，就很难跨工具流转。&lt;/p&gt;
&lt;p&gt;第四是责任追踪。&lt;/p&gt;
&lt;p&gt;这里的责任不是为了甩锅，而是为了复盘。Agent 的输出、人类的覆盖、系统的执行、后续的影响，要能被串起来。否则你很难判断问题出在模型、提示词、上下文、工具权限，还是人类审批流程。&lt;/p&gt;
&lt;p&gt;这四件事，都是团队协作里本来就存在的问题。只不过 Agent 加入之后，它们被放大了。&lt;/p&gt;
&lt;h2 id=&#34;它和-mcpa2a-不是一类东西&#34;&gt;它和 MCP、A2A 不是一类东西
&lt;/h2&gt;&lt;p&gt;很多人看到“协议”两个字，会下意识把 CHAP 和 MCP（Model Context Protocol，模型上下文协议）、A2A（Agent-to-Agent，智能体间通信协议）放在一起比较。&lt;/p&gt;
&lt;p&gt;更准确的关系可能是：MCP 解决 Agent 怎么使用工具，A2A 解决 Agent 怎么和其他 Agent 通信，CHAP 试图解决人和 Agent 做同一件事时，协作过程如何被记录和验证。&lt;/p&gt;
&lt;p&gt;举个例子，一个 Agent 可以通过 MCP 调用 GitHub、Slack、数据库或内部系统；也可以通过 A2A 把任务交给另一个 Agent；但当它把结果交给人类审批，人类修改后继续推进，这个“共同工作”的过程需要另一种表达。&lt;/p&gt;
&lt;p&gt;CHAP 项目自己也没有把它描述成 MCP 或 A2A 的替代品。它更像是贴在旁边的一层协作账本：工具怎么调用、Agent 怎么互相说话，可以由别的协议负责；人和 Agent 之间发生了什么，CHAP 来记录。&lt;/p&gt;
&lt;p&gt;这个位置很微妙，也很重要。&lt;/p&gt;
&lt;p&gt;因为 Agent 真正进入企业之后，最难的往往不是“能不能调工具”。工具调用会越来越标准化。更难的是：企业愿不愿意相信这个 Agent 参与了一个真实流程，出了问题能不能解释，审核时能不能还原，当人离职或日志过期后还能不能追溯。&lt;/p&gt;
&lt;p&gt;这就不是单次模型调用能解决的问题了。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/chap-human-agent-protocol-2026/imgs/protocol-layers.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/chap-human-agent-protocol-2026/imgs/protocol-layers_hu_fc4a460781e5e8ee.png 480w, https://blog.ccino.org/p/chap-human-agent-protocol-2026/imgs/protocol-layers_hu_c4e3e589ec58b8d7.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;MCP、A2A 与 CHAP 的分层关系：工具调用、智能体通信与人机协作记录&#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;claude-tag-之后真正的问题是协作&#34;&gt;Claude Tag 之后，真正的问题是协作
&lt;/h2&gt;&lt;p&gt;最近围绕 Agent Identity（智能体身份）和 Claude Tag 的讨论，核心是给 Agent 一个可识别的身份：它是谁，代表哪个组织，拥有什么权限，能访问哪些资源。&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;所以，身份更像是准入问题：你是谁，你能进哪里，你能做什么。CHAP 关心的是协作过程：你做了什么，人类怎么改，为什么批准，后续如何追踪。&lt;/p&gt;
&lt;p&gt;这两件事会一起出现。先有身份，才有权限边界；有了权限边界，协作记录才有意义。否则所有记录都只是一堆没有主体的日志。&lt;/p&gt;
&lt;p&gt;换句话说，Agent Identity 让 Agent 进入组织，Human-Agent Protocol（人类与智能体协议）让组织看懂 Agent 参与工作的全过程。&lt;/p&gt;
&lt;h2 id=&#34;对开发者真正有用的启发&#34;&gt;对开发者真正有用的启发
&lt;/h2&gt;&lt;p&gt;即使你完全不打算采用 CHAP，这个项目也给 Agent 应用开发者提了一个醒：不要只设计“调用模型”的接口，要设计“协作”的接口。&lt;/p&gt;
&lt;p&gt;很多 Agent 产品的早期版本长这样：用户输入任务，模型执行，工具调用，返回结果。这个闭环适合 demo，也适合个人效率工具。但一旦进入团队场景，问题会马上变多。&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;h2 id=&#34;现在别急着神化-chap&#34;&gt;现在别急着神化 CHAP
&lt;/h2&gt;&lt;p&gt;需要说清楚的是，CHAP 现在还只是早期项目。按公开仓库说明，它目前是 0.2 版本的 public draft（公开草案），提供 TypeScript 和 Python 参考实现、conformance harness（一致性测试工具）、MCP server transport（MCP 服务端传输）和 A2A server transport（A2A 服务端传输）等内容。&lt;/p&gt;
&lt;p&gt;这并不等于它已经被广泛采用，也不等于它一定会变成事实标准。&lt;/p&gt;
&lt;p&gt;更合理的看法是：CHAP 是一个早期信号。它说明 Agent 行业的讨论正在从“怎样让 Agent 完成任务”，转向“怎样让 Agent 在组织里可审计、可交接、可复盘地完成任务”。&lt;/p&gt;
&lt;p&gt;这一步迟早会发生。&lt;/p&gt;
&lt;p&gt;当 Agent 只是帮你改一段脚本，聊天记录够用了。当 Agent 开始参与合同审查、客户工单、代码评审、财务审批、药品生产记录，聊天记录就不够了。你需要知道每一步是谁做的，谁改的，为什么改，改完之后影响了什么。&lt;/p&gt;
&lt;p&gt;也许最终胜出的协议不叫 CHAP，也许会由更大的平台推动，也许会被并入某个企业 Agent 标准。但“协作需要协议化”这件事本身，很难再绕过去。&lt;/p&gt;
&lt;h2 id=&#34;结尾prompt-负责一次回答协议负责长期协作&#34;&gt;结尾：Prompt 负责一次回答，协议负责长期协作
&lt;/h2&gt;&lt;p&gt;过去我们谈 Prompt Engineering（提示词工程），本质是在优化一次模型响应。后来谈 Context Engineering（上下文工程），是在优化模型看到的信息结构。现在 CHAP 这类项目把问题又往外推了一层：当模型、工具、人类、权限和任务状态混在一起时，整个协作过程该怎么被组织起来。&lt;/p&gt;
&lt;p&gt;Prompt 解决“这次怎么说”。Context 解决“基于什么说”。Protocol（协议）解决“这件事如何被多人、多 Agent、多个系统共同承认”。&lt;/p&gt;
&lt;p&gt;这三者不是互相替代，而是层级不同。&lt;/p&gt;
&lt;p&gt;个人使用 Agent 时，好的 Prompt 和上下文可能已经足够。团队使用 Agent 时，你会开始需要任务状态、审批记录和修改理由。企业使用 Agent 时，这些东西必须变成可查询、可审计、可迁移的结构，而不是散落在聊天窗口里的片段。&lt;/p&gt;
&lt;p&gt;所以 CHAP 最有价值的地方，不在于它今天是否成熟，而在于它把一个被忽略的问题摆到了桌面上：&lt;strong&gt;AI Agent 要成为真正的协作者，不能只会执行命令，还要能留下协作痕迹。&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://github.com/BrightbeamAI/chap&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub：BrightbeamAI/chap&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://arxiv.org/abs/2606.09751&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CHAP technical report on arXiv&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/BrightbeamAI/chap/blob/main/RELATIONSHIP-TO-OTHER-STANDARDS.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CHAP relationship to MCP and A2A&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上来源主要用于观察 CHAP 的公开项目说明、设计目标和参考实现状态，不等同于对其生产可用性或行业采纳程度的独立验证。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>每个 Agent 一个微虚拟机：forkd 把 AI 沙箱从口号做成了基础设施</title>
        <link>https://blog.ccino.org/p/forkd-agent-microvm-sandbox-runtime-2026/</link>
        <pubDate>Wed, 24 Jun 2026 09:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/forkd-agent-microvm-sandbox-runtime-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/forkd-agent-microvm-sandbox-runtime-2026/imgs/cover.png" alt="Featured image of post 每个 Agent 一个微虚拟机：forkd 把 AI 沙箱从口号做成了基础设施" /&gt;&lt;h2 id=&#34;agent-真正危险的地方不在聊天框里&#34;&gt;Agent 真正危险的地方，不在聊天框里
&lt;/h2&gt;&lt;p&gt;今天看到一个很适合接在 Harness Engineering（支架工程）和 Agent 沙箱主线后面写的开源项目：&lt;code&gt;forkd&lt;/code&gt;。它的 GitHub README 把话说得很直接：&lt;strong&gt;Fork 100 microVMs in 101 ms&lt;/strong&gt;。换成人话，就是从一个已经预热好的父虚拟机里，在很短时间内分叉出一批隔离的 microVM（微虚拟机），给 AI Agent 执行代码、跑测试、做工具调用。&lt;/p&gt;
&lt;p&gt;这篇文章主要基于 forkd 的 GitHub README、设计文档摘要和今日收录线索整理。里面提到的 101 ms、0.12 MiB、56 ms p50 等数字都来自项目作者自己的 benchmark（基准测试），我没有在本地复测。读者可以把它当成一次技术方向观察，而不是独立性能评测。&lt;/p&gt;
&lt;p&gt;为什么这个项目值得看？因为现在大家谈 Agent（智能体）安全，还是太容易停在“提示词护栏”“工具白名单”“审批按钮”这几层。它们当然有用，但只解决了 Agent 要不要做某件事的问题，没有解决 Agent 一旦开始做事之后，应该在哪里做、出错怎么回滚、不同任务之间怎么隔离、执行证据怎么留下。&lt;/p&gt;
&lt;p&gt;换句话说，Agent 真正危险的地方不在聊天框里，而在它开始拥有 shell、文件系统、网络、依赖安装、测试运行和数据库连接之后。&lt;/p&gt;
&lt;p&gt;这时再说“给它一个沙箱”就太粗了。什么级别的沙箱？容器够不够？每个用户一个长期环境，还是每次工具调用一个短环境？要不要继承前面的状态？要不要把中途推理和文件系统一起 fork 出来？这些问题才是 AI Agent 进入生产环境后会遇到的硬骨头。&lt;/p&gt;
&lt;p&gt;forkd 正好切在这里。&lt;/p&gt;
&lt;h2 id=&#34;forkd-到底做了什么&#34;&gt;forkd 到底做了什么
&lt;/h2&gt;&lt;p&gt;forkd 的定位是一个面向 AI agent fan-out（智能体扇出）的 microVM sandbox runtime（微虚拟机沙箱运行时）。它底层基于 Firecracker，每个 child（子实例）都是独立的 Firecracker 进程，由 KVM 提供硬件虚拟化隔离。&lt;/p&gt;
&lt;p&gt;它的关键不是“能启动虚拟机”，而是启动方式。&lt;/p&gt;
&lt;p&gt;传统做法是每个 sandbox（沙箱）冷启动一遍。你要跑 Python，就启动系统、拉起运行时、import numpy、加载依赖、准备缓存。一个 Agent 同时分出 100 条路径做代码解释、评测或测试 rollout（展开执行）时，这个冷启动成本会被放大很多倍。&lt;/p&gt;
&lt;p&gt;forkd 的做法更像操作系统里的 &lt;code&gt;fork(2)&lt;/code&gt;：&lt;/p&gt;
&lt;p&gt;先启动一个 parent VM（父虚拟机），把 Python、依赖、JIT、模型权重或缓存都预热好，然后暂停并保存成 snapshot（快照）。后续的 child VM 从这个父快照恢复。内存不是完整复制一份，而是通过 &lt;code&gt;mmap MAP_PRIVATE&lt;/code&gt; 让子进程共享父内存镜像，直到某个页面被写入时才 copy-on-write（写时复制）。&lt;/p&gt;
&lt;p&gt;所以它想同时拿到两件东西：&lt;/p&gt;
&lt;p&gt;一边是 microVM 的隔离级别。每个 child 都是自己的 Firecracker microVM，不是共用一个容器 namespace（命名空间）。README 里说得很直白：逃逸需要 hypervisor（虚拟机监控器）或 kernel（内核）漏洞，而不是普通的 &lt;code&gt;runc&lt;/code&gt; 回归问题。&lt;/p&gt;
&lt;p&gt;另一边是接近进程 fork 的启动成本。项目 README 给出的基准是，在 Ubuntu 24.04、Linux 6.14、20 vCPU、30 GiB、KVM 环境下，让 100 个 sandbox 各自执行 &lt;code&gt;import numpy; numpy.zeros(5).tolist()&lt;/code&gt;，forkd 的 wall-clock（墙钟时间）是 101 ms，额外内存约 0.12 MiB / child。这个数值是否能在别的机器复现要另说，但它表达的方向很清楚：不要每次都冷启动，把预热成本摊到父实例上。&lt;/p&gt;
&lt;p&gt;这和普通容器快照的区别在于，它不只是文件系统层面的复用，还把运行时内存状态也放进了继承链。&lt;/p&gt;
&lt;p&gt;如果一个 Agent 要开 20 条路径分别尝试修 bug，最贵的可能不是那几行补丁，而是每条路径都要重新安装依赖、重新导入包、重新准备测试环境。forkd 想把这些准备动作变成一次性成本。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/forkd-agent-microvm-sandbox-runtime-2026/imgs/agent-branching-runtime.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/forkd-agent-microvm-sandbox-runtime-2026/imgs/agent-branching-runtime_hu_ee622783eef3f9d1.png 480w, https://blog.ccino.org/p/forkd-agent-microvm-sandbox-runtime-2026/imgs/agent-branching-runtime_hu_b4181afb7195eac1.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;forkd 从预热父虚拟机分叉出多个隔离执行路径&#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;branch让-agent-在想了一半时分叉&#34;&gt;BRANCH：让 Agent 在“想了一半”时分叉
&lt;/h2&gt;&lt;p&gt;forkd 还有一个更有意思的能力，叫 BRANCH。&lt;/p&gt;
&lt;p&gt;普通 snapshot（快照）更像是在任务开始前准备好一个干净环境。BRANCH 解决的是另一个场景：Agent 已经跑了一段，中途积累了推理上下文、文件系统变化、缓存状态、临时产物，这时你想从这个状态分出几个不同方向。&lt;/p&gt;
&lt;p&gt;README 里的 LangGraph demo（演示）是一个旅行规划例子：source agent（源智能体）已经跑了 ReAct loop（推理-行动循环），然后在中途被 BRANCH 出三个 grandchildren（孙实例），每个收到不同 steering hint（引导提示）。三个分支继承此前的推理状态，但后续输出走向不同。&lt;/p&gt;
&lt;p&gt;这件事听起来像“多问几次模型”也能做到，但 forkd 项目特别强调了另一个例子：coding-agent-fork recipe（编码智能体分叉配方）里，一个 50 MiB 的二进制 blob 会在 4 个 sandbox 之间 byte-identically（逐字节一致）继承。三个 grandchildren 分别对一个有 bug 的 Python 包做不同修复，&lt;code&gt;__pycache__/&lt;/code&gt; 和文件编辑彼此隔离，但前面的 50 MiB 状态是共享继承来的。&lt;/p&gt;
&lt;p&gt;这就不是提示词能解决的问题了。提示词可以复制文字上下文，复制不了一个已经跑过安装、缓存、生成中间文件、打开项目目录的执行环境。&lt;/p&gt;
&lt;p&gt;项目 README 提到，v0.4 live BRANCH 把 source-pause window（源实例暂停窗口）从约 200 ms 降到 56 ms p50 / 64 ms p90。这个指标同样来自项目自己的测试，但它说明 forkd 的目标不是“给 Agent 开一个长期云主机”，而是让 Agent 能频繁、廉价地在执行过程中分叉。&lt;/p&gt;
&lt;p&gt;这对 AI Coding（AI 编程）很关键。因为 Agent 写代码时常常不是一条直线：&lt;/p&gt;
&lt;p&gt;它可能先读完代码库，形成一个假设，然后同时尝试三种补丁；也可能先跑测试，发现失败，再分出“保守修复”“重构修复”“绕过修复”三条路径；还可能在安全审计里，让不同分支验证同一个漏洞是否可复现。&lt;/p&gt;
&lt;p&gt;如果每条路径都从零启动环境，分叉就很贵。如果能从“已经读完仓库、装好依赖、跑过初始测试”的状态分叉，Agent 的探索成本会下降很多。&lt;/p&gt;
&lt;h2 id=&#34;为什么这件事和-harness-engineering-有关&#34;&gt;为什么这件事和 Harness Engineering 有关
&lt;/h2&gt;&lt;p&gt;过去几个月，OpenAI、Anthropic、社区文章都在讲 Harness Engineering。这个词容易被理解成“给 Agent 包一层脚手架”，比如工具调用、任务队列、评测、日志、人工审批。这个理解没错，但还不够。&lt;/p&gt;
&lt;p&gt;真正的 Harness（支架）不只是在模型外面写几个 if else。它要决定 Agent 在什么环境里运行，能拿到哪些资源，失败后怎么复盘，结果怎么验证，状态怎么保存，什么时候可以继续，什么时候必须停下来。&lt;/p&gt;
&lt;p&gt;从这个角度看，forkd 不是 Harness 本身，却像是 Harness 下面的一块运行时地基。&lt;/p&gt;
&lt;p&gt;一个成熟的 Agent Harness 至少有几层：&lt;/p&gt;
&lt;p&gt;第一层是意图层。用户说要修 bug、写报告、跑评测，系统要把目标拆成任务。&lt;/p&gt;
&lt;p&gt;第二层是工具层。Agent 可以读文件、写代码、跑测试、访问网络、调用数据库。&lt;/p&gt;
&lt;p&gt;第三层是验证层。每一步做完之后，要用测试、lint、schema、人工 review 或另一个 Agent 来判断是否可信。&lt;/p&gt;
&lt;p&gt;第四层就是运行时层。工具调用到底在哪里执行？不同用户、不同任务、不同分支是不是互相隔离？出错能不能回滚？能不能重放？能不能留下审计日志？&lt;/p&gt;
&lt;p&gt;很多讨论停在前三层。forkd 讨论的是第四层。&lt;/p&gt;
&lt;p&gt;这也是为什么它的 README 里会强调 REST API、bearer token auth、Prometheus &lt;code&gt;/metrics&lt;/code&gt;、append-only JSON audit log（追加式 JSON 审计日志）、systemd unit 这些看起来不那么“AI”的东西。对真实平台来说，这些反而是 AI Agent 能不能进生产的关键。&lt;/p&gt;
&lt;p&gt;一个 Agent 如果只能在 demo 里跑，最重要的是模型会不会推理。一个 Agent 如果要替用户跑不可信代码，最重要的是它跑在哪里、权限有多大、日志留在哪里、出事后能不能定位。&lt;/p&gt;
&lt;h2 id=&#34;容器为什么不一定够&#34;&gt;容器为什么不一定够
&lt;/h2&gt;&lt;p&gt;很多人看到“沙箱”第一反应是 Docker。&lt;/p&gt;
&lt;p&gt;Docker 很成熟，也足够好用。但在 AI Agent 场景里，容器有两个问题会变得更明显。&lt;/p&gt;
&lt;p&gt;第一个是隔离边界。容器主要依赖 Linux namespace、cgroup、seccomp、LSM 等机制。它不是没安全性，但如果你要跑的是用户上传代码、模型生成脚本、自动安装依赖、联网请求、甚至未知二进制，风险模型会更接近“执行不可信代码”。这时 microVM 的隔离边界会更让平台团队放心。&lt;/p&gt;
&lt;p&gt;第二个是状态继承。容器可以做镜像层、overlay、缓存，也可以用池化减少冷启动。但如果目标是“从一个正在运行中的 Agent 状态分叉出多个独立执行分支”，普通容器并不是天然为这件事设计的。&lt;/p&gt;
&lt;p&gt;forkd 不是说容器没用。它更像是在说，AI Agent 的某些 workload shape（工作负载形态）和传统 Web 服务不一样。&lt;/p&gt;
&lt;p&gt;传统 Web 服务追求长期稳定运行。Agent 执行更像短生命周期、高并发、强隔离、频繁分叉、频繁销毁。代码解释器、SWE-bench 风格评测、自动修复、CI 里的不可信测试、每个用户一次工具调用，都属于这种形态。&lt;/p&gt;
&lt;p&gt;这类场景里，平台更需要“快速复制一个已预热、但彼此隔离的执行宇宙”。&lt;/p&gt;
&lt;h2 id=&#34;v05-的-diff-snapshot-chain-说明它在往哪走&#34;&gt;v0.5 的 diff-snapshot chain 说明它在往哪走
&lt;/h2&gt;&lt;p&gt;forkd v0.5 提到 diff-snapshot chains（差分快照链）。这个功能看起来很工程细节，但其实能看出项目的方向。&lt;/p&gt;
&lt;p&gt;假设一个 Agent 平台先准备了 &lt;code&gt;python:3.12-slim&lt;/code&gt;，然后装了 numpy，再装 pandas，再装 scikit-learn。如果每一步都存一份完整 1.5 GiB 基础环境，存储和传输都会很浪费。diff-snapshot chain 的思路是，每一层记录 &lt;code&gt;parent_tag&lt;/code&gt; 和内容哈希，spawn（生成）时沿着链条组装内存镜像。&lt;/p&gt;
&lt;p&gt;这和 Docker 镜像层有点像，但对象变成了 sandbox 的内存和 VM 状态。&lt;/p&gt;
&lt;p&gt;README 里的 Phase 5 benchmark 显示，在 512 MiB base 上，depth 0 的 flat base spawn p50 是 59 ms；加 numpy 后 751 ms；再加 pandas 到 1222 ms；再加 sklearn 到 1668 ms。作者也坦诚 per-link tax（每层开销）主要来自 SHA-256 校验，后续优化排到 v0.6。&lt;/p&gt;
&lt;p&gt;这段数据反而让项目更可信一点。它没有假装所有场景都是 100 ms。它承认链条越深越有税，承认有场景需要 compact（压平）快照。&lt;/p&gt;
&lt;p&gt;对 Agent 平台来说，这也是现实问题：你不可能只有一个万能父环境。不同任务需要不同依赖、不同语言、不同模型、不同浏览器状态。最后一定会出现一组“环境谱系”：基础 Python、数据分析 Python、浏览器自动化、Node 项目、某个代码库 checkout、某个测试 fixture。&lt;/p&gt;
&lt;p&gt;能不能管理这些谱系，可能会成为 Agent 平台的基础能力。&lt;/p&gt;
&lt;h2 id=&#34;它适合什么不适合什么&#34;&gt;它适合什么，不适合什么
&lt;/h2&gt;&lt;p&gt;forkd 适合的场景很清楚。&lt;/p&gt;
&lt;p&gt;它适合 code interpreter（代码解释器）这类每次工具调用都想要干净执行环境、但又不想重复 import 大依赖的场景。&lt;/p&gt;
&lt;p&gt;它适合评测系统。比如同时跑几百个 repo checkout 或测试 rollout，每个 child 互不污染，但共享预热父环境。&lt;/p&gt;
&lt;p&gt;它适合不可信代码执行。比如 CI 里跑外部 PR、Agent 自动生成补丁后执行测试、用户上传脚本做数据处理。你希望它有真实 Linux、能 &lt;code&gt;apt install&lt;/code&gt;、能联网，但又不想让它和宿主机贴得太近。&lt;/p&gt;
&lt;p&gt;它也适合自托管团队。README 里反复强调 Apache 2.0、single-binary daemon、REST API、Python SDK、MCP server，这些都是在对平台工程团队说：你可以把它接到自己的 Agent 系统里，而不一定要依赖托管 sandbox SaaS。&lt;/p&gt;
&lt;p&gt;但它也有明显不适合的地方。&lt;/p&gt;
&lt;p&gt;如果你只需要一个长期 workspace（工作区），每个用户一个持久环境，Daytona、Codespaces 这类形态可能更合适。&lt;/p&gt;
&lt;p&gt;如果你只需要极致函数级启动，且不需要真实 Linux、多 vCPU、完整网络、&lt;code&gt;apt install&lt;/code&gt;，一些函数级 snapshot runtime 可能更快。&lt;/p&gt;
&lt;p&gt;如果你没有 KVM、没有 Linux 宿主、没有运维能力，forkd 这类东西并不会比托管平台省心。&lt;/p&gt;
&lt;p&gt;这不是一个“所有 Agent 都该用 forkd”的故事。更准确地说，它把一个问题摆到了桌面上：当 Agent 不再只是写文本，而是开始执行代码、安装依赖、访问网络、产生文件系统状态时，运行时本身会变成产品的一部分。&lt;/p&gt;
&lt;h2 id=&#34;国内-agent-平台最该补的是这一层&#34;&gt;国内 Agent 平台最该补的是这一层
&lt;/h2&gt;&lt;p&gt;国内现在讲 Agent，很多时候还在卷模型调用、工作流画布、插件市场、知识库接入。再往前一点的团队，会谈评测、记忆、工具权限、MCP registry（MCP 注册表）。这些都重要，但如果缺少执行运行时，Agent 的能力还是会卡在“只能建议，不能安全地做”。&lt;/p&gt;
&lt;p&gt;真正要落到企业场景，平台方迟早要回答几个具体问题：&lt;/p&gt;
&lt;p&gt;用户让 Agent 跑一段 Python，在哪里跑？&lt;/p&gt;
&lt;p&gt;Agent 自动 &lt;code&gt;pip install&lt;/code&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;p&gt;Agent 跑完后，日志、指标、文件 diff、网络访问记录和退出状态能不能被审计？&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/forkd-agent-microvm-sandbox-runtime-2026/imgs/agent-harness-sandbox-layers.png&#34;
	width=&#34;1536&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://blog.ccino.org/p/forkd-agent-microvm-sandbox-runtime-2026/imgs/agent-harness-sandbox-layers_hu_8003fe864c98f591.png 480w, https://blog.ccino.org/p/forkd-agent-microvm-sandbox-runtime-2026/imgs/agent-harness-sandbox-layers_hu_ea31cfd2f0779304.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Agent、Harness、工具权限和 microVM 沙箱运行时的分层关系&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;这些问题没有一个能靠“模型更聪明”自动消失。模型越能干，反而越需要这些基础设施把它关在合适的地方。&lt;/p&gt;
&lt;p&gt;forkd 的启发在于，它把“Agent 沙箱”从产品口号还原成了一堆工程对象：Firecracker、KVM、snapshot、copy-on-write、network namespace、cgroup、REST、metrics、audit log。&lt;/p&gt;
&lt;p&gt;这些词不性感，但它们决定 Agent 能不能被放心地放进生产系统。&lt;/p&gt;
&lt;h2 id=&#34;agent-负责执行harness-负责刹车和现场&#34;&gt;Agent 负责执行，Harness 负责刹车和现场
&lt;/h2&gt;&lt;p&gt;最后还是要回到 Agent 和 Harness 的关系。&lt;/p&gt;
&lt;p&gt;Agent 负责提出行动、调用工具、观察结果、继续下一步。它像一个会自己想办法的执行者。&lt;/p&gt;
&lt;p&gt;Harness 负责给这个执行者布置现场。它决定工具有哪些、权限到哪里、输出怎么验、失败怎么恢复、什么时候要人类确认。没有 Harness，Agent 很容易变成一个拿到 root 权限的实习生：很积极，也很危险。&lt;/p&gt;
&lt;p&gt;forkd 补的是 Harness 里更靠底下的一层。它不判断一个补丁是不是正确，也不决定一个 Agent 应不应该访问某个 API。它提供的是“执行发生的地方”：一个可以快速复制、彼此隔离、继承状态、可观测、可销毁的 microVM 环境。&lt;/p&gt;
&lt;p&gt;所以，Agent、Harness、sandbox（沙箱）不是三个并列概念。更像是三层关系：Agent 做决定，Harness 管流程，sandbox 承接执行。&lt;/p&gt;
&lt;p&gt;如果未来的 AI Coding 平台只在模型层竞争，会很快进入同质化。真正拉开差距的，可能是这些不太显眼的底层能力：谁能让 Agent 更快地试错，谁能把每次试错隔离开，谁能在出事后知道它到底做过什么。&lt;/p&gt;
&lt;p&gt;forkd 还很早，也不一定会成为最终标准。但它指向的方向很清楚：AI Agent 的安全不是一句“加个沙箱”就完了。沙箱会变成一整套运行时基础设施，而这套基础设施，很可能就是下一阶段 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/deeplethe/forkd&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;deeplethe/forkd GitHub README&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/deeplethe/forkd/blob/main/DESIGN.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;forkd DESIGN.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/deeplethe/forkd/blob/main/DESIGN-v0.4.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;forkd v0.4 design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/deeplethe/forkd/blob/main/DESIGN-v0.5-diff-snapshot-chains.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;forkd v0.5 diff snapshot chains design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.bestblogs.dev/en/article/0ba05e87&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;BestBlogs forkd 条目&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上来源用于观察 forkd 项目自身的技术设计、README benchmark 和社区收录口径，其中性能数字均来自项目方公开材料，不等同于独立基准测试。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>OpenAI 一天五弹砸向网络安全：修 Linux 内核、对标 Anthropic，AI 厂商的新护城河</title>
        <link>https://blog.ccino.org/p/openai-daybreak-cyber-security-2026/</link>
        <pubDate>Tue, 23 Jun 2026 15:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/openai-daybreak-cyber-security-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/openai-daybreak-cyber-security-2026/imgs/cover.png" alt="Featured image of post OpenAI 一天五弹砸向网络安全：修 Linux 内核、对标 Anthropic，AI 厂商的新护城河" /&gt;&lt;h2 id=&#34;一个-23-岁的漏洞和它背后的新战场&#34;&gt;一个 23 岁的漏洞，和它背后的新战场
&lt;/h2&gt;&lt;p&gt;OpenAI 在 6 月 22 日发了一篇很长的官方博客，叫《Patch the Planet》。里面提到一件具体的事：自家的模型在 OpenBSD 内核里挖出一个存在了 23 年的 use-after-free（释放后使用）漏洞，位置在 System V 信号量的实现里。按 OpenAI 研究人员的复现，一个没有特权的本地用户可以借这个漏洞把权限提到 root。&lt;/p&gt;
&lt;p&gt;这种事放在五年前，属于顶尖安全实验室花几周才能干成的工作。现在它被写在 AI 公司的月度战报里，和 Linux 内核 30 多万行代码里挖出 24 个本地提权 PoC（概念验证）、让 Pwn2Own 柏林站 6 个 Firefox 参赛队里 5 个退赛这些事，列在同一段落。&lt;/p&gt;
&lt;p&gt;本文的素材主要来自 OpenAI 官方博客《Patch the Planet》、Trail of Bits 的同步说明，以及 CyberPress、FourWeekMBA 等媒体的转述。涉及 benchmark 数字和&amp;quot;影响多少网站&amp;quot;这类断言，我都标注了口径，没有把它们直接当作独立事实背书。读者可以把这篇当成对 OpenAI 发布口径和社区反馈的一次梳理，而不是一次独立基准测试。&lt;/p&gt;
&lt;h2 id=&#34;一日五弹不只是发一个模型&#34;&gt;一日五弹：不只是发一个模型
&lt;/h2&gt;&lt;p&gt;把 6 月 22 日 OpenAI 在 Daybreak（破晓）项目下放出来的东西摊开，至少有五件：&lt;/p&gt;
&lt;p&gt;一是 &lt;strong&gt;GPT-5.5-Cyber&lt;/strong&gt; 的完整版。这是 GPT-5.5 的网络安全特化分支，训练时就在防御性安全任务上放开得更宽。按 OpenAI 公布的 CyberGym 跑分，它拿到 85.6%，高于同源 GPT-5.5 的 81.8%，也高于 Anthropic Mythos 5 的 83.8% 和 Claude Opus 4 的 73.1%。在另外两个偏实战的榜单 ExploitGym 和 SEC-bench Pro 上，它对 GPT-5.5 的领先幅度更明显（39.5% 对 25.95%、69.8% 对 63.1%）。访问被限制在经过验证的防御者（verified defenders）范围内，不向公众开放。&lt;/p&gt;
&lt;p&gt;二是 &lt;strong&gt;Codex Security 插件&lt;/strong&gt;的升级。这个插件从 2026 年 3 月的研究预览到现在，按 OpenAI 的说法已经扫描了超过 3000 万次提交、覆盖 3 万多个代码库，人工标记为&amp;quot;已修复&amp;quot;的发现超过 7 万条，自动处理的还有 50 万条以上。新版本能直接在开发者环境里生成带验证证据的严重度排序结果、画攻击路径、建威胁模型、产出针对具体代码库的补丁，还能把结果以 SARIF 和 CodeQL 查询的形式导进既有的漏洞管理流水线。&lt;/p&gt;
&lt;p&gt;三是 &lt;strong&gt;Patch the Planet&lt;/strong&gt;。这是和 Trail of Bits 合办、HackerOne 和 Calif 协作的开源软件维护者计划。第一批参与的 30 多个项目里包括 cURL、Go、Python、Sigstore、pyca/cryptography、NATS Server、aiohttp、freenginx、python.org。维护者拿到 ChatGPT Pro、有条件的 Codex Security 访问权，以及用于核心开发、自动化和发布流程的 API 额度。一次 5 天的冲刺里，Trail of Bits 的安全工程师配合模型发现数百个问题，合并了数十个补丁。&lt;/p&gt;
&lt;p&gt;四是 &lt;strong&gt;Trusted Access for Cyber&lt;/strong&gt; 的政府合作名单。澳大利亚、加拿大、法国、德国、日本、韩国，以及含 ENISA 在内的欧盟机构都在列。OpenAI 还和 CAISI（Center for AI Standards and Innovation）一起做 GPT-5.5 和 GPT-5.5-Cyber 的部署前测试，和美国国家网络总监办公室（ONCD）、科技政策办公室（OSTP）一起落实 2026 年 6 月的 AI 行政令。&lt;/p&gt;
&lt;p&gt;五是被官方反复强调的那条产品线口号：Daybreak 是 OpenAI &amp;ldquo;为全球每个组织提供安全工具&amp;quot;的总工程名。GPT-5.5-Cyber 是模型底座，Codex Security 是开发者侧抓手，Patch the Planet 是公共品入口，Trusted Access 是政府侧信用背书。这不是五个孤立产品，而是一套完整的打法。&lt;/p&gt;
&lt;h2 id=&#34;为什么是这个时间点对标-anthropic-的-glasswing&#34;&gt;为什么是这个时间点：对标 Anthropic 的 Glasswing
&lt;/h2&gt;&lt;p&gt;FourWeekMBA 在 6 月 22 日的分析里把话说得很直接：Daybreak 是 OpenAI 对 Anthropic Project Glasswing（玻璃翼）的正面对答。后者是 Anthropic 那边把 Mythos 模型以较原始形态开放给 200 个安全组织的项目，按公开数据已经累计发现 23019 个漏洞。一个值得注意的细节是，Glasswing 在美国政府叫停 Fable 5 之后仍然在运行。&lt;/p&gt;
&lt;p&gt;两家头部 AI 实验室在同一个赛道里对垒，本身就是一种判断：在所有 AI 应用场景里，网络安全是前沿能力&amp;quot;最立即有用&amp;quot;又&amp;quot;最政治正确&amp;quot;的那一个。写诗、画画、聊天，都可以被监管来回敲打；但帮 cURL 修漏洞、帮 Linux 内核找提权链，没人会公开反对。FourWeekMBA 把这种逻辑叫 Permission Layer（许可层），意思是 AI 厂商靠防御性安全建立的不只是产品，而是一种政府信任牌照——它让模型在被监管收紧时仍有一个&amp;quot;不能被关掉&amp;quot;的运行理由。&lt;/p&gt;
&lt;p&gt;从这个角度看，OpenAI 和 Anthropic 争的不是谁的模型更高 1.8 个百分点，而是谁能先把自己写进关键基础设施的安全供应商名单。Glasswing 比 Daybreak 早、合作机构多（200 对 8），但 OpenAI 这次把 Patch the Planet 摆出来，是在用&amp;quot;修互联网公共底座&amp;quot;这件事抢公共品站位，政府侧 Trusted Access 的七国名单则在补政治信用。&lt;/p&gt;
&lt;h2 id=&#34;三轴并行的真正意图&#34;&gt;三轴并行的真正意图
&lt;/h2&gt;&lt;p&gt;把五弹归类，能看清 OpenAI 想做的事其实是三条轴同时推进。&lt;/p&gt;
&lt;p&gt;模型轴上，GPT-5.5-Cyber 解决的是&amp;quot;能不能&amp;rdquo;。85.6% 的 CyberGym 说明在&amp;quot;复现已知漏洞&amp;quot;这件事上它已经超过同代所有对手。把模型限制在 verified defenders 范围内，既是合规姿态，也是制造稀缺——越不让随便用，越显得强。&lt;/p&gt;
&lt;p&gt;工具轴上，Codex Security 解决的是&amp;quot;开发者用不用得上&amp;quot;。把漏洞扫描塞进 Codex 这个写代码的 Agent 里，等开发者用同一个工具既写代码又扫代码，OpenAI 就同时占住了 bug 的生产端和检测端。这个布局比单独卖一个安全模型更值钱，因为它卡在日常工作流里，迁移成本极高。&lt;/p&gt;
&lt;p&gt;生态轴上，Patch the Planet 解决的是&amp;quot;公共品站位&amp;quot;。互联网的底层软件是共享设施，谁来修这些设施就有政治意义。OpenAI 出模型、Trail of Bits 出安全工程师、维护者出代码，三方合力把开源软件的漏洞存量往下压。这件事短期不赚钱，但它在监管层面换回的东西，是单纯的 benchmark 数字买不到的。&lt;/p&gt;
&lt;p&gt;三条轴合起来看，OpenAI 不是在卖一个&amp;quot;AI 安全产品&amp;quot;，而是在搭建一套让政府、开发者、维护者都离不开的网络安全基础设施。Snyk 在 6 月 23 日紧接着发布 Evo Agentic Development Security，从防御侧做了类似的押注。赛道已经不只是 OpenAI 对 Anthropic，而是整个产业在把&amp;quot;AI for Security&amp;quot;当作下一阶段的确定增量。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/openai-daybreak-cyber-security-2026/imgs/three-pillars.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/openai-daybreak-cyber-security-2026/imgs/three-pillars_hu_4944484ca86d14b1.png 480w, https://blog.ccino.org/p/openai-daybreak-cyber-security-2026/imgs/three-pillars_hu_824a15ec1d3d10a8.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Daybreak 项目下的三轴：模型、工具、生态&#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;OpenAI 在博客里列了一批已经修掉或正在披露的漏洞，挑几个有画面感的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Linux 内核 3000 多万行代码里，模型标出安全相关组件，动态验证后产出 8 个内核指针信息泄露 PoC 和 24 个本地提权漏洞；&lt;/li&gt;
&lt;li&gt;OpenBSD 那个 23 年的 use-after-free，可以让无特权本地用户提到 root；&lt;/li&gt;
&lt;li&gt;FreeBSD 一轮专项里确认 34 个漏洞，产出 7 个本地提权 PoC；&lt;/li&gt;
&lt;li&gt;dnsmasq 后续 2.92rel2 版本修掉的 6 个 CVE 里，Codex Security 独立命中了其中 4 个；&lt;/li&gt;
&lt;li&gt;Calif 用 Codex 找到的&amp;quot;HTTP/2 Bomb&amp;quot;，是一种影响 NGINX、Apache、IIS、Pingora 等主流实现的拒绝服务手法，按 Calif 的分析，有 88 万以上暴露在公网的网站运行着受影响的服务器软件；&lt;/li&gt;
&lt;li&gt;浏览器侧，Chrome V8 报了 5 个可利用漏洞，Safari 一周内报了 10 个以上，Firefox 在 Pwn2Own 柏林站前两天被 Mozilla 补掉的那个 WebAssembly 漏洞（CVE-2026-8390），让 6 个注册的 Firefox 参赛队里有 5 个退赛。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些数字里有一部分（比如 88 万网站、Linux 内核行数、Codex Security 扫描的 commit 数）来自 OpenAI 和合作方的口径，独立复核需要时间。但即便是按发布方自己的说法打折，量级也足以说明：模型在漏洞挖掘和补丁生成这件事上，已经从&amp;quot;能演示&amp;quot;进入&amp;quot;能交付&amp;quot;的阶段。&lt;/p&gt;
&lt;h2 id=&#34;对国内厂商意味着什么&#34;&gt;对国内厂商意味着什么
&lt;/h2&gt;&lt;p&gt;国内做安全大模型和 Agent 的厂商，过去大多把卖点放在&amp;quot;我们能扫代码&amp;quot;&amp;ldquo;我们能写安全报告&amp;rdquo;。OpenAI 这套打法的参照意义在于，它把竞争维度从&amp;quot;单点能力&amp;quot;拉到了&amp;quot;全栈站位&amp;quot;。&lt;/p&gt;
&lt;p&gt;第一，模型层必须有特化分支。通用大模型在安全任务上的表现，和专门训练过的 Cyber 分支差距明显（GPT-5.5 对 GPT-5.5-Cyber 在 ExploitGym 上是 25.95% 对 39.5%）。国内厂商如果还指望用同一个通用模型打所有场景，在安全这条线上会被拉开。&lt;/p&gt;
&lt;p&gt;第二，工具层必须嵌进开发者工作流。Codex Security 的价值不是它扫得准，而是它长在写代码的那个 Agent 里。国内做 IDE 插件、CI 流水线扫描的厂商，需要思考怎么把自己的能力绑进开发者每天都在用的工具，而不是要求开发者专门打开一个安全平台。&lt;/p&gt;
&lt;p&gt;第三，生态层必须敢做公共品。Patch the Planet 修的是 cURL、Python、Go 这些全世界都在用的开源项目。国内厂商如果能组织起类似的开源软件维护计划，带来的政府关系和行业信任回报，会比单纯卖几个安全模型大得多。&lt;/p&gt;
&lt;p&gt;第四，政府侧的合规布局要前置。OpenAI 把七国政府和 ENISA 拉进 Trusted Access，把 CAISI、ONCD、OSTP 拉进预部署测试和行政令落实，这些动作让它的安全模型在政策收紧时有缓冲。国内厂商面对的监管环境不同，但&amp;quot;把合规做成护城河&amp;quot;这个思路是通用的。&lt;/p&gt;
&lt;h2 id=&#34;四个产品到底各管什么&#34;&gt;四个产品，到底各管什么
&lt;/h2&gt;&lt;p&gt;回到开头那个问题：OpenAI 一天发这么多东西，彼此到底是什么关系？&lt;/p&gt;
&lt;p&gt;可以这么拆。Daybreak 是总工程名，它不直接面向用户，而是一把伞。GPT-5.5-Cyber 是伞下的模型底座，决定&amp;quot;能挖多深的漏洞、能写多准的补丁&amp;quot;，是能力上限。Codex Security 是面向开发者的工具层，把模型能力翻译成 IDE 里点一下就能用的扫描和修复，是日常入口。Patch the Planet 是面向开源生态的公共品层，用模型加人力帮 cURL、Python 这些底层项目还技术债，是政治信用。Trusted Access for Cyber 是面向政府的合规层，让模型在七国和欧盟的关键基础设施里获得合法身份，是监管缓冲。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/openai-daybreak-cyber-security-2026/imgs/four-layers.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/openai-daybreak-cyber-security-2026/imgs/four-layers_hu_ab799febf16ac51c.png 480w, https://blog.ccino.org/p/openai-daybreak-cyber-security-2026/imgs/four-layers_hu_212299c01ad0d8f2.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Daybreak 四层分工：模型、工具、生态、合规&#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;四者的分工边界很清楚：模型管能力，工具管触达，生态管公共品站位，政府关系管合规。任何一环单独拿出来都不够。GPT-5.5-Cyber 再强，如果没有 Codex Security 嵌进开发者工作流，它就只是个实验室跑分；Codex Security 再好用，如果没有 Patch the Planet 修开源软件、没有 Trusted Access 进政府名单，它在监管收紧时就没有&amp;quot;不能被关掉&amp;quot;的豁免理由。&lt;/p&gt;
&lt;p&gt;这才是这次&amp;quot;一日五弹&amp;quot;真正值得看的地方。OpenAI 不是在发五个产品，它是在把网络安全这件事拆成能力、触达、生态、合规四层，然后一次性把每一层都占住。Anthropic 的 Glasswing 起步更早、合作机构更多，但 OpenAI 这一手的全栈意味更浓。接下来半年，看 Snyk、AWS、Google 怎么接这招，以及国内安全厂商里谁先意识到这场竞争已经不是&amp;quot;谁的模型扫得准&amp;quot;这么简单，会比看跑分有意思得多。&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/patch-the-planet/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Patch the Planet: a Daybreak initiative to support open source maintainers（OpenAI 官方）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openai.com/index/daybreak-securing-the-world/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Daybreak: Tools for securing every organization in the world（OpenAI 官方）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://cyberpress.org/openai-launches-gpt-5-5-cyber/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI Launches GPT-5.5-Cyber for Automated Vulnerability Detection and Patching（CyberPress）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://fourweekmba.com/openai-gpt-5-5-cyber-daybreak-codex-security/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI Launches GPT-5.5-Cyber and Codex Security — Daybreak vs Anthropic Glasswing（FourWeekMBA）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.techtimes.com/articles/318900/20260623/openai-daybreak-expands-patch-pipeline-five-eyes-warns-ai-attacks-are-months-away.htm&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI Daybreak Expands Patch Pipeline as Five Eyes Warns AI Attacks Are Months Away（TechTimes）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.trailofbits.com/2026/06/22/introducing-patch-the-planet&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Introducing Patch the Planet（Trail of Bits）&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上来源用于观察 OpenAI 与合作方的发布口径及媒体转述，其中的 benchmark 数字、漏洞数量、受影响网站规模等断言均为发布方提供，不等同于独立基准测试。模型能力的横向对比（CyberGym、ExploitGym、SEC-bench Pro）建议结合各榜单的评测方法论文再作判断。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Claude 准确率从 21% 到 95%：企业 AI 真正缺的不是模型，而是上下文</title>
        <link>https://blog.ccino.org/p/anthropic-claude-internal-analytics-agent-2026/</link>
        <pubDate>Mon, 22 Jun 2026 09:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/anthropic-claude-internal-analytics-agent-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/anthropic-claude-internal-analytics-agent-2026/imgs/cover.png" alt="Featured image of post Claude 准确率从 21% 到 95%：企业 AI 真正缺的不是模型，而是上下文" /&gt;&lt;p&gt;Anthropic 最近有一个内部案例：Claude 现在已经处理了 Anthropic 内部 95% 的分析查询（analytics queries）。相关摘要里还提到，Anthropic 把这个结果主要归因于数据治理、语义定义和运营纪律，而不是单纯归因于模型能力升级。&lt;/p&gt;
&lt;p&gt;这个说法需要先画一条边界：我没有看到 Anthropic 发布的完整白皮书或可复现实验数据，公开可见的信息主要来自网络和 X 上的二次转述。有人在 X 上补充说，Claude 在有组织上下文时分析准确率可以到 95% 左右，而在缺少上下文时只有 21% 左右。这个数字我会当成“案例线索”来讨论，不把它当成独立验证过的行业基准。&lt;/p&gt;
&lt;p&gt;但即便只把它当成线索，它也很有意思。因为它把企业 AI 落地里一个经常被忽略的问题摆到了台面上：公司真正缺的，可能不是更聪明的模型，而是能让模型正确工作的上下文。&lt;/p&gt;
&lt;p&gt;过去一年，很多公司谈 AI 提效，最爱问两个问题：AI 写了多少代码？省了多少工时？这些问题不是没有意义，但它们很容易把企业 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;过去做这些事，通常要经历一条很长的链路。业务同事先问数据同事，数据同事确认口径，去数据仓库写 SQL，跑出结果，再解释图表。如果中间发现问题，还要来回改查询。最后得到的可能是一张截图、一段 Slack 回复，或者一份临时做出来的表格。&lt;/p&gt;
&lt;p&gt;这条链路慢，不是因为大家懒，也不是因为 SQL 特别难，而是因为每一步都需要上下文。数据在哪里，字段叫什么，口径怎么定，异常值要不要排除，权限能不能给，结果是否可信，这些都不是模型从互联网上学一学就知道的。&lt;/p&gt;
&lt;p&gt;如果 Claude 真能处理 Anthropic 内部 95% 的分析查询，那它改变的就不是“写报告的效率”，而是把这条分析链路压短了。业务人员不一定要先排队等数据同学，不一定要把问题翻译成 SQL，也不一定要在一堆 dashboard（仪表盘）里找入口。他可以直接问一个被接入组织上下文的 Agent（智能体）。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/anthropic-claude-internal-analytics-agent-2026/imgs/analytics-chain.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/anthropic-claude-internal-analytics-agent-2026/imgs/analytics-chain_hu_9d04654852565df3.png 480w, https://blog.ccino.org/p/anthropic-claude-internal-analytics-agent-2026/imgs/analytics-chain_hu_e9f4a37a347ef232.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;企业分析链路被 Claude 分析 Agent 压缩&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;
&lt;em&gt;图：从业务问题、数据表、指标口径到权限检查，内部分析 Agent 的价值不是替人写一段报告，而是把原本要反复沟通的查数链路压短。&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;这才是企业 AI 比较现实的落点：不是先替掉某个岗位，而是先吞掉公司内部大量“查数、解释、归因、汇报”的中间环节。&lt;/p&gt;
&lt;h2 id=&#34;21-到-95差的不是提示词&#34;&gt;21% 到 95%，差的不是提示词
&lt;/h2&gt;&lt;p&gt;如果那个“无上下文 21%、有上下文 95%”的说法大体成立，它最有价值的地方不是 95% 这个数字，而是两个数字之间的落差。&lt;/p&gt;
&lt;p&gt;很多公司看到 AI 答得不好，第一反应是换模型，或者让员工学 Prompt Engineering（提示词工程）。于是内部培训变成“如何写好提示词”，文档里堆满了角色设定、输出格式、few-shot 示例。这样做有用，但只解决了很小一块问题。&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 的关键不只是 Prompt Engineering，而是 Context Engineering（上下文工程）。提示词解决“我怎么问”，上下文工程解决“模型凭什么知道我在问什么”。前者更像个人技巧，后者才是公司能力。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/anthropic-claude-internal-analytics-agent-2026/imgs/context-gap.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/anthropic-claude-internal-analytics-agent-2026/imgs/context-gap_hu_4c5af364ff0f0917.png 480w, https://blog.ccino.org/p/anthropic-claude-internal-analytics-agent-2026/imgs/context-gap_hu_e99ba8ee641d547d.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;图：同一个模型，放在混乱数据里只能猜；接入数据治理、语义定义、权限和审计记录后，才可能输出能进入决策的分析。&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;数据治理听起来无聊但它决定-ai-能不能上桌&#34;&gt;数据治理听起来无聊，但它决定 AI 能不能上桌
&lt;/h2&gt;&lt;p&gt;“数据治理”这四个字很容易让人犯困。很多公司一提数据治理，就想到建数仓、定指标、做权限、写文档，都是看起来不性感、很难发朋友圈的工作。&lt;/p&gt;
&lt;p&gt;但 Anthropic 这个案例的启发恰恰在这里：越是想让 AI 进入核心业务，越绕不开这些无聊工作。&lt;/p&gt;
&lt;p&gt;原因很简单。聊天机器人可以犯一点小错，内部分析 Agent 不行。它一旦回答“这个渠道 ROI 最高”“这个客户群值得继续投”“这个产品功能导致留存下降”，后面可能接的是预算、绩效、资源分配，甚至组织调整。这个时候，老板不会满足于一句“根据我的分析”。他会问数据从哪里来，口径是什么，能不能复算，为什么不是另一个结论。&lt;/p&gt;
&lt;p&gt;如果公司没有统一指标口径，AI 会把不同团队的定义混在一起。如果权限体系混乱，AI 可能把不该展示的数据展示出来。如果没有审计记录，出了错也不知道是模型推理错了、SQL 写错了，还是数据源本来就脏。&lt;/p&gt;
&lt;p&gt;这也是为什么“让 AI 读数据库”听起来简单，真正上线却很难。一个 demo 可以连上 Postgres 跑查询，十分钟就能做出效果；但一个能在公司里长期用的分析 Agent，必须知道什么时候该查，查完怎么解释，不确定时怎么提示，遇到敏感字段怎么拒绝，结论怎么附上依据。&lt;/p&gt;
&lt;p&gt;换句话说，企业 AI 的门槛正在从“能不能调用模型”，转向“公司有没有把自己的业务世界整理到机器能理解”。&lt;/p&gt;
&lt;h2 id=&#34;真正的新-kpi多少决策准备工作被-agent-吃掉了&#34;&gt;真正的新 KPI：多少决策准备工作被 Agent 吃掉了
&lt;/h2&gt;&lt;p&gt;如果继续用“AI 写了多少代码”来衡量企业 AI，很容易低估这类内部分析 Agent 的价值。&lt;/p&gt;
&lt;p&gt;代码当然重要，尤其对软件公司来说。但很多企业每天消耗最多的，不是写代码时间，而是决策准备时间。一个会开完，大家发现还缺一张数据表；一个项目推进不下去，是因为没人能说清哪个指标是真的；一个季度复盘，三天都花在对齐口径上。&lt;/p&gt;
&lt;p&gt;这些时间不会总是被记录成“工时浪费”，但它们真实存在，而且非常贵。&lt;/p&gt;
&lt;p&gt;所以，一个更有意义的企业 AI 指标可能是：公司内部有多少查询、分析、归因和汇报准备工作，可以由 Agent 自助完成，并且结果能被人信任到足以进入会议。&lt;/p&gt;
&lt;p&gt;注意，这里有两个条件：自助完成，以及结果可信。只有自助，没有可信，最后会变成更多噪音；只有可信，但每次都要数据团队手动兜底，也很难规模化。企业 AI 的价值，正是在这两个条件同时成立时出现的。&lt;/p&gt;
&lt;p&gt;这也是 Anthropic 案例比普通“AI 提效故事”更值得看的原因。它不是在说 Claude 会写漂亮报告，而是在说一个组织把数据、语义、权限和流程整理到一定程度后，AI 可以承担大部分日常分析入口。&lt;/p&gt;
&lt;h2 id=&#34;国内公司应该先抄哪一部分&#34;&gt;国内公司应该先抄哪一部分
&lt;/h2&gt;&lt;p&gt;如果国内公司要从这个案例里学东西，我不建议一上来就学“95%”。这个数字太漂亮，容易变成新的 PPT 指标。&lt;/p&gt;
&lt;p&gt;更实际的做法，是先挑一个高频、低风险、口径相对清楚的内部分析场景。比如销售漏斗、客服工单、内容转化、广告投放、产品留存。不要一开始就让 AI 回答“公司战略怎么调整”，而是让它回答一类重复出现、数据来源明确、人工本来就会查的问题。&lt;/p&gt;
&lt;p&gt;然后把这个场景拆成几件事：哪些表可信，指标口径怎么定义，谁能访问，回答必须带哪些引用，哪些问题应该拒答，哪些结论需要提示“仅供参考”。这些工作做完，再接模型，效果通常会比单纯换更贵的模型更稳定。&lt;/p&gt;
&lt;p&gt;企业内部也要重新定义数据团队的角色。过去数据团队像“报表和 SQL 服务台”，别人提需求，它来查数。未来更像“AI 分析系统的运营者”：维护指标语义，清理数据源，定义权限边界，检查 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;如果没有这个世界，模型越强，反而越危险。它会用更流畅的语言包装不可靠的答案，让人更难发现哪里错了。很多企业 AI 项目的失败，不是因为模型不够聪明，而是因为公司把一个擅长推理的系统，放进了一个口径混乱、权限模糊、数据没人负责的环境里。&lt;/p&gt;
&lt;p&gt;Anthropic 这个案例提醒我们，企业 AI 的下一阶段不会只比谁买到了更好的模型。真正的差距会出现在组织内部：谁先把自己的数据、指标和流程整理成 AI 能稳定使用的上下文，谁就能先把 Agent 放进真实决策链。&lt;/p&gt;
&lt;p&gt;所以，95% 这个数字可以先不急着崇拜。更值得问的是：如果明天把一个同样强的 Claude 接进你的公司，它能不能知道“收入”到底指什么，“活跃”到底怎么算，“异常”到底由谁确认，以及哪些答案不能随便说？&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://www.bestblogs.dev/en/article/c896fa42?utm_source=rss&amp;amp;utm_medium=feed&amp;amp;utm_campaign=resources&amp;amp;entry=rss&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;BestBlogs: Anthropic Reports Claude Now Handles 95% of Internal Analytics Queries&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.bestblogs.dev/en/explore/brief/2026-06-22&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;BestBlogs Daily Brief 2026-06-22&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/pladevall/status/2066566510613532943&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;X: Anthropic internal agentic analytics summary&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上来源用于观察公开摘要和社区转述，不等同于独立基准测试。文中涉及的 95% 和 21% 主要作为案例线索使用，正式引用时仍应以 Anthropic 后续公开原文或完整报告为准。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>花 $200 买 Claude Max，却没人说得清能用多少：一场集体诉讼，撕开 AI 订阅的「黑箱」</title>
        <link>https://blog.ccino.org/p/claude-max-lawsuit-usage-blackbox-2026/</link>
        <pubDate>Sun, 21 Jun 2026 11:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/claude-max-lawsuit-usage-blackbox-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/claude-max-lawsuit-usage-blackbox-2026/imgs/cover.png" alt="Featured image of post 花 $200 买 Claude Max，却没人说得清能用多少：一场集体诉讼，撕开 AI 订阅的「黑箱」" /&gt;
    &lt;blockquote&gt;
        &lt;p&gt;2026 年 6 月这一周，司法、运营、立法三股力量，同时撬开了 AI 订阅制最不愿被打开的那个盒子——你花的钱，到底买到了什么？&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;h2 id=&#34;一200-美元月的套餐把最贵的用户逼上了法庭&#34;&gt;一、200 美元/月的套餐，把最贵的用户逼上了法庭
&lt;/h2&gt;&lt;p&gt;2026 年 6 月 14 日，美国加州联邦法院受理了一桩集体诉讼。被告是当下最炙手可热的 AI 公司 Anthropic；原告，是它最贵的那批用户——每月掏 200 美元订阅 Claude Max 的人。&lt;/p&gt;
&lt;p&gt;指控很简单，也很致命：你卖给我的「Max 20x」套餐，宣传说有 20 倍于基础档的用量，但真正用起来，上限到底在哪，你从没说清楚——而我被掐断的速度，远比你承诺的要快。&lt;/p&gt;
&lt;p&gt;据 WSJ、CNET、Decrypt 等多家媒体报道，这桩诉讼瞄准的是 Anthropic 的高端订阅档 &lt;strong&gt;Claude Max 5x 与 Max 20x&lt;/strong&gt;（后者月费 200 美元）。核心指控可以拆成三层：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;虚假宣传用量&lt;/strong&gt;：营销时强调「5 倍」「20 倍」这种相对量级，但实际可用量被隐藏的上限（hidden caps）远远卡住，用户被限速的时间比承诺来得更早。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;夸大「节省」&lt;/strong&gt;：套餐暗示「比按量付费更划算」，原告认为不成立——尤其当据 Crypto Briefing 报道，&lt;strong&gt;有用户一个月被刷出 5 万美元的超额账单&lt;/strong&gt;时。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;计算方式不透明&lt;/strong&gt;：用量怎么算、何时触发限速，没有清晰披露。TweakTown 的标题说得直白——Anthropic 被告「隐瞒 Claude 用量上限的计算方式」。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;需要先说清楚：以上是&lt;strong&gt;原告诉求&lt;/strong&gt;，案件尚未判决，Anthropic 也未全面公开回应。但让这件事真正出圈的，不是法律文书本身，而是它戳中了一个所有 AI 用户都憋了很久的问题——&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;我花 200 美元买的，到底是个什么东西？&lt;/strong&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;ul&gt;
&lt;li&gt;用量上限是&lt;strong&gt;动态的&lt;/strong&gt;，随模型版本、任务类型、系统负载而变；&lt;/li&gt;
&lt;li&gt;「5x」「20x」是&lt;strong&gt;相对值&lt;/strong&gt;，不是你能查到的绝对数字；&lt;/li&gt;
&lt;li&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;p&gt;这次诉讼的原告，正是那些把 Claude Max 用到极致的人——开发者、重度用户、把 AI 嵌进日常工作流的人。他们是最忠诚的客户，也最先撞上那堵墙：&lt;strong&gt;承诺的「20x」，和自己实际能跑出来的量，根本对不上。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-max-lawsuit-usage-blackbox-2026/imgs/blackbox-illustration.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-max-lawsuit-usage-blackbox-2026/imgs/blackbox-illustration_hu_d2ab8063ada31872.png 480w, https://blog.ccino.org/p/claude-max-lawsuit-usage-blackbox-2026/imgs/blackbox-illustration_hu_a7f12262d3b21229.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;薛定谔的套餐：用户花 $200，换来的却是一个看不透的黑箱&#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;三同一周的乌龙重置连-anthropic-自己都算不清&#34;&gt;三、同一周的「乌龙重置」：连 Anthropic 自己都算不清
&lt;/h2&gt;&lt;p&gt;更有意思的事，发生在诉讼发酵的同一周。&lt;/p&gt;
&lt;p&gt;r/ClaudeAI 出现了一条来自 Claude Code 官方账号的帖子：「我们已为所有套餐的所有用户，重置了 5 小时和周用量限制，周末愉快！」&lt;/p&gt;
&lt;p&gt;乍一看像是诉讼之后的危机公关。但核查下来，真相更值得玩味——&lt;/p&gt;
&lt;p&gt;这次重置，起因其实是一个 &lt;strong&gt;bug&lt;/strong&gt;：系统错误地显示了周限额，并误锁了约 &lt;strong&gt;3% 的 Max 和 Pro 用户&lt;/strong&gt;（据 Digg、Cointelegraph 报道）。Anthropic 在日本时间当天 11:50 修复，并重置了所有受影响用户的限额。&lt;/p&gt;
&lt;p&gt;所以它并不是对诉讼的直接回应。&lt;strong&gt;但这件事本身，反而是黑箱问题最有力的证据。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;逻辑很简单：如果连 Anthropic 自己的用量计算系统都会出 bug、会误锁付费用户、会算错限额——那普通用户又凭什么提前知道自己还能用多少？&lt;/p&gt;
&lt;p&gt;一个连厂商自己都偶尔搞不清的黑箱，你却要让用户为它每月付 200 美元。这才是诉讼背后真正的情绪底色：不是「你限制了我」，而是「&lt;strong&gt;你根本说不清你限制了我什么&lt;/strong&gt;」。&lt;/p&gt;
&lt;h2 id=&#34;四康涅狄格州动手了政策层的第一枪&#34;&gt;四、康涅狄格州动手了：政策层的第一枪
&lt;/h2&gt;&lt;p&gt;如果说诉讼是司法端的反应、bug 是运营端的尴尬，那立法端也没闲着。&lt;/p&gt;
&lt;p&gt;几乎同一时间，&lt;strong&gt;康涅狄格州通过了一部法律&lt;/strong&gt;，要求 AI 订阅服务商&lt;strong&gt;强制披露用量上限、功能限制，以及任何可由厂商酌情调整的权限&lt;/strong&gt;（据 PYMNTS，6 月 18 日）。&lt;/p&gt;
&lt;p&gt;把三件事并排放在一起看：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;司法&lt;/strong&gt;：6/14，加州集体诉讼，指控 Claude Max 虚假宣传；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;运营&lt;/strong&gt;：同一周，bug 误锁 3% 付费用户，被迫全量重置；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;立法&lt;/strong&gt;：6/18，康涅狄格州立法，强制 AI 公司披露订阅上限。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;2026 年 6 月这一周，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-max-lawsuit-usage-blackbox-2026/imgs/three-forces-illustration.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-max-lawsuit-usage-blackbox-2026/imgs/three-forces-illustration_hu_59a1cb2736789859.png 480w, https://blog.ccino.org/p/claude-max-lawsuit-usage-blackbox-2026/imgs/three-forces-illustration_hu_3453e86b8d9d5945.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 公司说句公道话——这个黑箱，某种程度上是&lt;strong&gt;结构性的、几乎不可避免的&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;根源在 Token 经济学的一个根本矛盾：&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;。用户想要的，是「月费 200，随便用」这种简单清晰的承诺。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这两头天然对不上。AI 公司为了对冲成本风险，只能发明出「动态上限」「模糊配额」这种机制——既要让广告语听起来诱人（「20x 用量」），又要在用户真用爆时给自己留出刹车余地。&lt;/p&gt;
&lt;p&gt;于是就有了今天的结果：&lt;strong&gt;模糊，成了商业模式的一部分；而模糊的代价，就是信任。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Anthropic 不是唯一这么做的公司。它只是第一个因为盘子做得太大、重度用户太多，而被推上被告席的。今天还没被告的 AI 订阅产品，不代表它的黑箱更小，只代表它的用户还没攒够怒气。&lt;/p&gt;
&lt;p&gt;换句话说，这桩诉讼真正审判的，不是 Anthropic，而是&lt;strong&gt;整个 AI 行业的定价范式&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id=&#34;六信任的代价谁先把黑箱打开谁就赢&#34;&gt;六、信任的代价：谁先把黑箱打开，谁就赢
&lt;/h2&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 订阅迟早要像信用卡一样，把「触发条件」「真实成本」「上限规则」白纸黑字写清楚。&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 公司都被迫披露上限时，&lt;strong&gt;谁的上限更高、更诚实、更稳定，谁就能抢到重度用户&lt;/strong&gt;。到那时，黑箱不再是优势，反而成了诉讼风险——就像今天这样。&lt;/p&gt;
&lt;h2 id=&#34;七回到那个问题你买到的到底是什么&#34;&gt;七、回到那个问题：你买到的，到底是什么
&lt;/h2&gt;&lt;p&gt;所以回到文章开头的那个问题：花 200 美元买 Claude Max，到底买的是什么？&lt;/p&gt;
&lt;p&gt;在黑箱被打破之前，你买到的是一个&lt;strong&gt;薛定谔的套餐&lt;/strong&gt;——在你不怎么用的时候，它什么都是；在你最需要它的时候，它什么都不是。&lt;/p&gt;
&lt;p&gt;而 2026 年 6 月这一周，这个薛定谔的盒子，被一只叫「法律文书」的手，强行打开了。&lt;/p&gt;
&lt;p&gt;不管这场官司的结局如何，有一件事已经回不去了：&lt;strong&gt;AI 订阅的「不限量」童话，再也讲不下去了。&lt;/strong&gt; 下一次，当一个 AI 产品对你说「随便用」的时候，你最好多问一句——&lt;/p&gt;
&lt;p&gt;&lt;em&gt;「那你倒是说清楚，我到底能用多少。」&lt;/em&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.wsj.com/tech/ai/anthropic-sued-over-limits-on-its-200-a-month-ai-plans-e2a109e4&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;WSJ｜Anthropic Sued Over Limits on Its $200-a-Month AI Plans&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.cnet.com/tech/services-and-software/anthropic-sued-alleged-false-advertising-claude-max-subscription-usage-limits/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CNET｜Anthropic Sued Over Alleged False Advertising on Claude Max&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://decrypt.co/371201/anthropic-lawsuit-allegedly-misleading-claude-ai-pricing&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Decrypt｜Anthropic Faces Lawsuit Over Misleading Claude AI Pricing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://cryptobriefing.com/anthropic-sued-claude-max-usage-limits/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Crypto Briefing｜用户单月 $50,000 超额账单&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.tweaktown.com/news/112207/anthropic-sued-for-allegedly-hiding-how-claude-usage-limits-are-calculated/index.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;TweakTown｜隐瞒 Claude 用量上限计算方式&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.techtimes.com/articles/318442/20260615/claude-max-lawsuit-accuses-anthropic-overselling-20x-usage-credit-caps-begin.htm&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Tech Times｜诉讼 6/14 加州提起，credit caps 6/15 生效&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.pymnts.com/news/artificial-intelligence/2026/connecticut-requires-ai-companies-to-disclose-subscription-limits/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PYMNTS｜康涅狄格州立法强制披露 AI 订阅上限&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://digg.com/tech/semvxwlu&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Digg｜bug 误锁 3% Max/Pro 用户后重置&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.dailyjournal.com/articles/392206-anthropic-sued-over-claims-about-premium-ai-subscription-limits&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Daily Journal｜Anthropic Sued Over Premium AI Subscription Limits&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>AI 第一次成了 G7 谈判筹码：美国收紧 AI，盟友慌了，吴恩达说中国看到了机会</title>
        <link>https://blog.ccino.org/p/claude-fable-5-g7-bargaining-chip-2026/</link>
        <pubDate>Sat, 20 Jun 2026 09:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/claude-fable-5-g7-bargaining-chip-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/claude-fable-5-g7-bargaining-chip-2026/imgs/cover.png" alt="Featured image of post AI 第一次成了 G7 谈判筹码：美国收紧 AI，盟友慌了，吴恩达说中国看到了机会" /&gt;&lt;p&gt;吴恩达（Andrew Ng）最近在 LinkedIn 上写了一句分量很重的话：现在，中国有了一条在 AI 上超越美国的路径。&lt;/p&gt;
&lt;p&gt;他说这话的时间点很讲究。6 月 17 日，G7 峰会在法国埃维昂开幕，场面上出现了一个过去没有过的安排：OpenAI、Anthropic、Google 三家美国前沿 AI 公司的 CEO，被请进会场，和七国领导人坐到了一起。AI 以前也进过 G7 的议题清单，但从来没被当成这种东西对待过。它讨论的不再是“要不要监管 AI”，而是“谁来用、按什么条件用”。它开始像一个要被分配的战略资源。&lt;/p&gt;
&lt;p&gt;这篇文章想接着我&lt;a class=&#34;link&#34; href=&#34;https://blog.ccino.org/p/claude-fable-5-banned-us-government-2026/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;上一篇&lt;/a&gt;（讲 Fable 5 被叫停那 72 小时）往下说。那一篇的重点是，一个 AI 模型怎么从“产品”变成了美国政府眼里的“战略资产”。这一篇要讲的是，这件事并没有停在美政府和 Anthropic 两家之间，它正在升级成一场七国阵营的多边博弈，而且，按吴恩达的判断，正在反向帮到那个被防范的对象。&lt;/p&gt;
&lt;p&gt;先把可信度边界说清楚：G7 场内的讨论细节、所谓“可信任伙伴”机制、谈判进展，主要来自 Japan Times、CNBC、Reuters 的报道和外交人士对外透露的说法，其中相当部分没有官方文件背书；吴恩达的话是他公开发表的个人观点，不是学界共识。下面我会尽量把“已经发生的事”和“某人的判断”分开来讲。&lt;/p&gt;
&lt;h2 id=&#34;从双边纠纷变成七国阵营的事&#34;&gt;从双边纠纷，变成七国阵营的事
&lt;/h2&gt;&lt;p&gt;Fable 5 被叫停，一开始看上去就是美国政府跟一家公司之间的纠纷。6 月 12 日，美方以国家安全为由下达出口管制（export control）指令；6 月 13 日，Anthropic 发声明说会遵守，把 Fable 5 和 Mythos 5 对所有用户关掉。到这里，故事的主角还是两个：一个政府，一家公司。&lt;/p&gt;
&lt;p&gt;但到了 G7，格局变了。据 Japan Times 引述三名外交人士的说法，七国领导人在会场讨论了一个方案：给选定的“可信任伙伴”开放美国前沿 AI 模型的访问。CNBC 的报道补充了背景，前沿 AI 的风险、基础设施和主权都被摆上了议程，三家公司 CEO 同台被解读成一个信号：AI 公司在这套秩序里的位置，正在从“被监管的对象”变成“资源被分配时在场的当事人”。&lt;/p&gt;
&lt;p&gt;这个变化值得停下来想一想。“可信任伙伴”这个词听着温和，底下的逻辑很硬。它等于在说，顶级 AI 不再是买得到就买得到的东西，而是像某些敏感技术一样，要看你和出题人的关系。半导体出口管制玩了很多年的那套“盟友能拿、对手不能拿”的分层，正在被搬到模型这一层。有人把它叫 AI 版的技术北约，这个比方未必精确，但方向上不算夸张。&lt;/p&gt;
&lt;p&gt;上一篇里我提到过一句“G7 领导人对失去美国顶级 AI 工具表达了担忧”。现在看，那句担忧已经长出了具体的形状：它不是泛泛的不安，而是变成了一个正在被讨论的准入分配机制。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-fable-5-g7-bargaining-chip-2026/imgs/illustration-1.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-fable-5-g7-bargaining-chip-2026/imgs/illustration-1_hu_7c4ca888cfe1a779.png 480w, https://blog.ccino.org/p/claude-fable-5-g7-bargaining-chip-2026/imgs/illustration-1_hu_1eeae52546163d2a.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;em&gt;图：中央的 AI 模型被分层围住——内圈&amp;quot;可信任伙伴&amp;quot;有访问权，外圈被挡在外面。顶级 AI 正从&amp;quot;买得到&amp;quot;变成&amp;quot;看关系&amp;quot;。&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;盟友慌的不是-ai-不强是自己用不上&#34;&gt;盟友慌的，不是 AI 不强，是自己用不上
&lt;/h2&gt;&lt;p&gt;如果只是美国政府关掉一个模型，盟友其实没太大理由紧张。真正让他们坐不住的，是一种突然被点破的依赖关系。&lt;/p&gt;
&lt;p&gt;G7 场上的担忧，翻译成大白话就是：过去几年，欧洲、日韩的不少企业和公共部门，把业务流程搭在了 Claude、GPT 这类美国模型上。只要这些模型想用就能用，这种依赖看起来只是个技术选型问题。可一旦美国能以国家安全为由，一夜之间切断某个旗舰模型的访问，依赖就从“技术债”变成了“战略风险”。你不知道下一次被切的是不是你正靠着的那个。&lt;/p&gt;
&lt;p&gt;这种担忧已经有具体的落点。此前《Wired》报道过韩国 SK Telecom 卷入 Mythos 出口管制争议；欧亚多家媒体也开始讨论，如果最前沿的 AI 是按国籍分配的，非美国用户该怎么办。这些不是抽象推演，是真实在传导的寒意。&lt;/p&gt;
&lt;p&gt;这里有一个挺讽刺的转折。美国这套管控的本意，按官方口径是保护国家安全、防止前沿能力外流。但它制造的第一批直接后果里，有一条是让自己的盟友开始认真考虑去美国化。一种为了收紧而设的机制，先松动的是自己阵营内部的信任。&lt;/p&gt;
&lt;h2 id=&#34;吴恩达看到的超越路径&#34;&gt;吴恩达看到的“超越路径”
&lt;/h2&gt;&lt;p&gt;回到开头那句。吴恩达不是在 G7 期间说的，但他的判断和 G7 上发生的事严丝合缝。他的原话大意是：尽管美国目前仍领先，但中国 AI 的势头很猛（他点到了 Qwen3 这类模型的进展），再加上美国政策上的反复和收紧，一条让中国在 AI 上反超的路径，已经被打开了。&lt;/p&gt;
&lt;p&gt;按他的逻辑链，这事可以这样拆解：美国用出口管制压住前沿能力的扩散，本意是拖慢对手。但管制有副作用，它逼着被压的一方自己把生态补齐，从芯片到模型到应用。短期能卡住，长期反而帮对手完成了国产替代的闭环。CSIS（战略与国际研究中心）的一份分析也提到类似现象：原本流向美国芯片公司的收入，正在因为管制转向中国芯片公司。&lt;/p&gt;
&lt;p&gt;吴恩达的判断是不是必然成立，可以争论。美国在基础模型上的领先仍然实在，中国的进展也并非没有自己的瓶颈。但有一点他点得很准：这件事已经不再是单纯的技术竞赛，而是一场“谁能把 AI 真正变成经济增长、生产力和国家力量”的转化比赛，而在这场转化比赛里，他认为中国当下的势头更顺。&lt;/p&gt;
&lt;p&gt;把这个判断放回 Fable 5 的语境里，会看到一个完整的闭环。美国收紧顶级模型的对外访问，盟友感到依赖成了风险、开始寻找替代，被防范的中国反而获得了一个加速补齐国产链的窗口。一次出于防御的收紧，在三个方向上同时催生了对手或第三方的前进。这是上一篇里没有展开、但其实是这整件事最值得琢磨的部分。&lt;/p&gt;
&lt;h2 id=&#34;几个零散的信号ai-正在被当成武器来对待&#34;&gt;几个零散的信号：AI 正在被当成武器来对待
&lt;/h2&gt;&lt;p&gt;除了 G7 这条主线，近期还有几个零散的信号，拼在一起能看出一种共同的方向感。&lt;/p&gt;
&lt;p&gt;最刺眼的一个，是 Anthropic 被讨论贴上“供应链风险”标签。这个词在华盛顿的语境里，通常留给外部的、被视为威胁的实体，比如某些外国科技公司。一家美国本土的 AI 公司被放进这个框里处理，本身就说明，在有些人眼里，它已经大到、关键到，不再像一个普通商业主体。五角大楼那边的态度更直白，据 Breaking Defense 报道，他们的 CTO 公开说 Anthropic 限制军方使用 Claude“不民主”，潜台词是，一家公司不该有权决定一项关键技术能不能被国家机器用。这和 Anthropic 自己的安全立场正面撞上，也把“谁来决定 AI 怎么用”这个问题，从公司内部扯到了国家层面。&lt;/p&gt;
&lt;p&gt;Anthropic 自己的姿态也挺拧巴。Dario Amodei 一边提议给美国政府无限制的 AI 访问，一边又公开警告 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;它们不是平行关系，更像一条因果链。战略资产化是起点；为了管这个资产，才搞出盟友准入的分层；而这个分层一边压对手，一边催生了对手加速自主的动机，还顺便松动了自己阵营里盟友的信任。收紧和松开，是同一个动作的两面。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-fable-5-g7-bargaining-chip-2026/imgs/illustration-2.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-fable-5-g7-bargaining-chip-2026/imgs/illustration-2_hu_4596641921ac2927.png 480w, https://blog.ccino.org/p/claude-fable-5-g7-bargaining-chip-2026/imgs/illustration-2_hu_e4131c96eabded4c.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;em&gt;图：左侧&amp;quot;收紧&amp;quot;的力量，反而把右侧的对手弹射向前。防御性的出口管制，催生了它本想阻止的国产加速度。&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;所以真正值得盯的，早就不只是 Fable 5 什么时候恢复访问，那个问题太小了。该盯的是：这套“把 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.linkedin.com/posts/andrewyng_trump-resets-ai-policy-qwen3s-agentic-advance-activity-7356706886970195969-N56p&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Andrew Ng：There is now a path for China to surpass the U.S. in AI（LinkedIn）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.japantimes.co.jp/business/2026/06/17/tech/g7-trusted-partners-us-ai-models/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;G7 leaders discuss &amp;rsquo;trusted partners&amp;rsquo; access to cutting-edge U.S. AI models（Japan Times）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.cnbc.com/2026/06/17/g7-trump-ai-tech-leaders-openai-anthropic-google.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AI in spotlight at G7 as Trump, world leaders joined by tech chiefs（CNBC）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reuters.com/world/trump-says-negotiations-with-anthropic-are-going-fine-2026-06-17/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Trump says negotiations with Anthropic are &amp;lsquo;going fine&amp;rsquo;（Reuters）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.axios.com/2026/06/12/anthropic-trump-mythos-fable-national-security&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Trump admin blocks foreign access to Anthropic&amp;rsquo;s most powerful AI（Axios）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.csis.org/analysis/choking-chinas-access-future-ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Choking off China&amp;rsquo;s Access to the Future of AI（CSIS）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://breakingdefense.com/2026/02/pentagon-cto-says-its-not-democratic-for-anthropic-to-limit-military-use-of-claude-ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Pentagon CTO says it&amp;rsquo;s &amp;rsquo;not democratic&amp;rsquo; for Anthropic to limit military use of Claude AI（Breaking Defense）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;本篇前文：&lt;a class=&#34;link&#34; href=&#34;https://blog.ccino.org/p/claude-fable-5-banned-us-government-2026/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Fable 5 只活了 72 小时：当一个 AI 模型强大到被政府当成战略资产&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

    &lt;blockquote&gt;
        &lt;p&gt;以上来源用于观察各方发布口径与社区反馈，其中 G7 场内讨论、谈判进展主要依赖媒体转述与外交人士透露，吴恩达的“超越路径”为其个人公开观点，均不等同于已被独立证实的事实。&lt;/p&gt;

    &lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>别再只写提示词了：Codex Record &amp; Replay 把“演示一次”变成 Agent 新接口</title>
        <link>https://blog.ccino.org/p/codex-record-replay-demonstration-agent/</link>
        <pubDate>Fri, 19 Jun 2026 18:30:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/codex-record-replay-demonstration-agent/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/codex-record-replay-demonstration-agent/imgs/cover.png" alt="Featured image of post 别再只写提示词了：Codex Record &amp; Replay 把“演示一次”变成 Agent 新接口" /&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/codex-record-replay-demonstration-agent/imgs/cover.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/codex-record-replay-demonstration-agent/imgs/cover_hu_2bba2c25e8243020.png 480w, https://blog.ccino.org/p/codex-record-replay-demonstration-agent/imgs/cover_hu_1abf0d8c1ce6e7f1.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;别再只写提示词了：Codex Record &amp; Replay 把“演示一次”变成 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;OpenAI 最近给 Codex 加了一个新能力，叫 Record &amp;amp; Replay。&lt;/p&gt;
&lt;p&gt;公开演示里的用法很直白：你在电脑或浏览器里把一个重复流程做一遍，Codex 记录下来，之后把它变成可以复用的 Skill（技能）。比如填写 YouTube Studio 元数据、上传缩略图、保存私密视频，或者处理报销单、请假申请这类后台操作。&lt;/p&gt;
&lt;p&gt;这篇文章基于 OpenAI 的公开视频、社区转述、Reddit 讨论和 X 上的可见线索。我还没有完整实测，所以这里只把它当作一个产品方向来看，不把演示效果当成稳定性背书。&lt;/p&gt;
&lt;p&gt;它让我在意的，不是“Codex 又多了一个自动化功能”，而是另一个变化：AI Agent（智能体）的交互入口，可能正在从 Prompt（提示词）转向 Demonstration（示范）。&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;比如上传一个视频。你要打开后台，选频道，进上传页，填标题，贴简介，选封面，设置播放列表，改可见性，检查版权提示，最后保存为私密。你当然可以把这些步骤写成一大段提示词，但真实网页不是说明书。按钮位置会变，提示框有时出现有时不出现，字段内容还取决于这次素材。&lt;/p&gt;
&lt;p&gt;人自己做的时候不觉得难，因为这些动作已经变成肌肉记忆。难的是把肌肉记忆翻译成一段完整、无歧义、下次还能复用的文字。&lt;/p&gt;
&lt;p&gt;Record &amp;amp; Replay 绕开了这一步。&lt;/p&gt;
&lt;p&gt;它不要求你先写说明书，而是让你先做一遍。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/codex-record-replay-demonstration-agent/imgs/prompt-to-demonstration.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/codex-record-replay-demonstration-agent/imgs/prompt-to-demonstration_hu_c4cd306844c54dfc.png 480w, https://blog.ccino.org/p/codex-record-replay-demonstration-agent/imgs/prompt-to-demonstration_hu_67bc7109d2e1f0e3.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;这听起来像录屏，但重点不应该只是记录鼠标点了哪里。&lt;/p&gt;
&lt;p&gt;如果只是录点击坐标，那就是老式宏录制。页面一改，脚本就容易坏。&lt;/p&gt;
&lt;p&gt;真正有价值的是，Agent 能不能理解你演示背后的意图：哪个字段来自当前素材，哪个步骤每次固定，哪个地方要根据任务变化，哪里需要停下来检查结果。&lt;/p&gt;
&lt;p&gt;这也是它和传统 RPA（机器人流程自动化）不太一样的地方。RPA 更像把一套稳定后台操作固化成脚本。Record &amp;amp; Replay 如果做得好，更像是把一次示范变成一段可调整的工作流。下次素材不同，Agent 不是机械复刻每一个点击，而是按同一个目标完成相似任务。&lt;/p&gt;
&lt;p&gt;这个门槛低很多。&lt;/p&gt;
&lt;p&gt;以前你想自动化一个流程，可能要会脚本、API、浏览器自动化，至少也要懂一点 n8n、Zapier 或 Playwright。现在的入口更接近普通人的直觉：我先做一次，你以后照这个模式做。&lt;/p&gt;
&lt;h2 id=&#34;skill-写规则replay-记动作&#34;&gt;Skill 写规则，Replay 记动作
&lt;/h2&gt;&lt;p&gt;过去半年，很多人开始讨论 Agent Skills。&lt;/p&gt;
&lt;p&gt;Skill 的价值，是把一套流程写下来。比如文章怎么检查，公众号怎么排版，代码改完要跑哪些命令，哪些动作必须人工确认。它适合保存规则、约束、检查清单和判断标准。&lt;/p&gt;
&lt;p&gt;Record &amp;amp; Replay 保存的是另一种东西：操作路径。&lt;/p&gt;
&lt;p&gt;比如怎么进入某个后台页面，怎么上传素材，怎么在几个下拉框之间选择，怎么处理常见弹窗。这些用文字写起来很啰嗦，但演示一次很自然。&lt;/p&gt;
&lt;p&gt;所以我更愿意把两者看成互补关系。&lt;/p&gt;
&lt;p&gt;Skill 负责告诉 Agent “做事的规矩”，Replay 负责告诉 Agent “这件事通常怎么操作”。&lt;/p&gt;
&lt;p&gt;拿内容创作者来说，完整流程可能是这样：用 Skill 规定文章结构、标题风格和参考来源格式；用 Record &amp;amp; Replay 录下后台发布流程；最后让 Agent 根据今天的素材生成文章、检查格式、进入后台、填内容、上传封面，然后等你最后确认。&lt;/p&gt;
&lt;p&gt;这时 Prompt 不会消失，但它不再承担所有细节。你只需要说：“用昨天那个发布流程，把这篇文章存成草稿，封面用第二张，先不要群发。”&lt;/p&gt;
&lt;p&gt;复杂部分已经沉淀在 Skill 和演示记录里。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/codex-record-replay-demonstration-agent/imgs/skill-replay-workflow.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/codex-record-replay-demonstration-agent/imgs/skill-replay-workflow_hu_23936b1ee90c2c15.png 480w, https://blog.ccino.org/p/codex-record-replay-demonstration-agent/imgs/skill-replay-workflow_hu_9a30ed10b7d23a4a.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Skill 写规则，Replay 记动作&#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;一个流程每天重复，你可以写 CLI，可以调 API，可以用 Playwright，也可以接 GitHub Actions。多数人不会这么做。他们只是打开浏览器，一步一步点。哪怕每天都重复，也只是熟练一点，并没有自动化。&lt;/p&gt;
&lt;p&gt;“演示一次”把自动化入口放回了普通人的操作习惯里。&lt;/p&gt;
&lt;p&gt;自媒体发布、短视频上传、客服后台处理、发票录入、数据导出、CRM 更新、内部系统填报，这些事情单次看都不大，但重复次数多了很烦。过去它们卡在一个尴尬位置：太碎，不值得专门找工程师；太频繁，又足够消耗人。&lt;/p&gt;
&lt;p&gt;Record &amp;amp; Replay 这类能力如果成熟，最先吃掉的可能就是这块灰色地带。&lt;/p&gt;
&lt;h2 id=&#34;风险不会因为演示过就消失&#34;&gt;风险不会因为“演示过”就消失
&lt;/h2&gt;&lt;p&gt;当然，让 Agent 看你操作一次，不等于以后就可以放心交给它。&lt;/p&gt;
&lt;p&gt;最先要看的还是权限。演示流程里可能包含账号后台、客户数据、付款页面、内部文档。哪些动作可以自动做，哪些动作必须确认，哪些字段不能外发，哪些页面不能录制，不能靠用户自己记。&lt;/p&gt;
&lt;p&gt;误触也是问题。保存、发布、删除、提交、发送、确认付款，很多按钮长得很像。Agent 如果把“保存草稿”做成“直接发布”，就不是多跑一次脚本那么简单。&lt;/p&gt;
&lt;p&gt;网页变化也麻烦。后台今天长这样，下周可能改版。按钮文案、页面层级、加载顺序、权限弹窗都会变。好的 Record &amp;amp; Replay 不应该硬点到底，而应该在不确定时停下来问人。&lt;/p&gt;
&lt;p&gt;还有隐私。演示记录本身就是敏感资产。它可能暴露你怎么进入后台、哪些字段固定填写、哪个账号负责审核。对企业来说，这些记录需要像凭据和自动化脚本一样管理。&lt;/p&gt;
&lt;p&gt;所以 X 上有人提到 Computer Use（电脑使用）开关和区域可用性限制，并不意外。越靠近真实电脑操作，权限、审计和合规就越不能放到后面再补。&lt;/p&gt;
&lt;h2 id=&#34;prompt-不会消失只是不用再背所有细节&#34;&gt;Prompt 不会消失，只是不用再背所有细节
&lt;/h2&gt;&lt;p&gt;我不觉得 Record &amp;amp; Replay 会让 Prompt 过时。&lt;/p&gt;
&lt;p&gt;临时问题、一次性任务、抽象讨论、写作推理，还是文字最快。但在重复流程里，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;Record &amp;amp; Replay 真正值得关注的地方，不是它能不能替你点几下鼠标，而是它把“会做事”从文字说明里拆出来，变成一种可以录制、复用、审查和改进的资产。&lt;/p&gt;
&lt;h2 id=&#34;结语&#34;&gt;结语
&lt;/h2&gt;&lt;p&gt;AI Agent 的入口正在变多。&lt;/p&gt;
&lt;p&gt;聊天框是一种入口，命令行是一种入口，IDE 是一种入口，手机审批也是一种入口。Record &amp;amp; Replay 代表的是另一种入口：示范。&lt;/p&gt;
&lt;p&gt;Prompt 负责表达目标，Demonstration 负责传递过程。&lt;/p&gt;
&lt;p&gt;前者告诉 Agent “我要什么”，后者告诉 Agent “我通常怎么做”。&lt;/p&gt;
&lt;p&gt;如果这条路走通，普通人使用 Agent 的方式会更像日常带新人：先做一次给它看，然后让它接手重复部分，在关键节点叫你确认。&lt;/p&gt;
&lt;p&gt;到那时，真正有价值的可能不是某一次对话，而是你慢慢沉淀下来的流程库。里面有文字规则，也有操作示范；有检查清单，也有后台动作。&lt;/p&gt;
&lt;p&gt;这就是 Record &amp;amp; Replay 值得关注的地方。它不是给 Codex 加了一个小按钮，而是在提醒我们：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.youtube.com/watch?v=ZK3JhU73W18&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI: Record &amp;amp; Replay in Codex - YouTube&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=7f4n6h1gzdA&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Codex: NEW Record &amp;amp; Replay in 9 Minutes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/AIGuild/comments/1u9nsg1/openais_codex_can_now_learn_computer_workflows_by/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reddit: OpenAI&amp;rsquo;s Codex Can Now Learn Computer Workflows by&amp;hellip;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://digg.com/tech/0zh4o6hw&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Digg: OpenAI launches Record and Replay for Codex&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/mark_k/status/2067689265941885253&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;X: Record &amp;amp; Replay availability note&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上来源用于观察产品发布口径和社区反馈，不等同于独立功能评测。Record &amp;amp; Replay 的真实稳定性、权限边界和跨页面适应能力，仍需要在实际使用中验证。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Claude Fable 5 只活了 72 小时：当一个 AI 模型强大到被政府当成战略资产</title>
        <link>https://blog.ccino.org/p/claude-fable-5-banned-us-government-2026/</link>
        <pubDate>Fri, 19 Jun 2026 07:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/claude-fable-5-banned-us-government-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/claude-fable-5-banned-us-government-2026/imgs/cover.png" alt="Featured image of post Claude Fable 5 只活了 72 小时：当一个 AI 模型强大到被政府当成战略资产" /&gt;&lt;p&gt;2026 年 6 月 9 日，Anthropic 发布 Claude Fable 5，称它是&amp;quot;首个面向公众的 Mythos 级模型&amp;quot;。按官方的说法，Fable 5 和 Mythos 5 共享同一个底层模型，区别在于 Fable 5 多了一层针对双用途能力（dual-use capabilities，即既能民用也可能被滥用的能力）的安全措施，面向普通用户；Mythos 5 则不带这些措施，只向获批组织开放。发布时外界的反应很热烈，有人把它称作 Anthropic 史上最强模型。&lt;/p&gt;
&lt;p&gt;三天后局势反转。6 月 12 日，美国政府以国家安全为由发布出口管制指令；6 月 13 日，Anthropic 发声明，称会遵守指令、为合规对所有用户全面关闭 Fable 5 与 Mythos 5 的访问，并表示这次限制源于一场&amp;quot;误解&amp;quot;，正争取尽快恢复。Reddit 上很快有人发了一条帖子，正文只有两个日期：6 月 9 日到 6 月 12 日。&lt;/p&gt;
&lt;p&gt;这篇文章要讨论的不只是一个模型被下架。它综合 Anthropic 官方公告、《纽约时报》和《Wired》的报道，以及 Reddit、X 上的社区讨论。先说清楚可信度边界：模型的发布和暂停本身有官方声明与主流媒体背书；但关于&amp;quot;为什么偏偏被封&amp;quot;&amp;ldquo;两个版本的确切分工&amp;quot;&amp;ldquo;各种传闻的真假&amp;rdquo;，相当一部分来自社区帖子和二手转述，我会尽量归因，不替任何一方背书。&lt;/p&gt;
&lt;h2 id=&#34;被叫停的不是最强-ai而是普通人能碰到的最强-ai&#34;&gt;被叫停的不是&amp;quot;最强 AI&amp;rdquo;，而是&amp;quot;普通人能碰到的最强 AI&amp;quot;
&lt;/h2&gt;&lt;p&gt;整件事最值得琢磨的地方，藏在那条容易被忽略的双轨设计里。&lt;/p&gt;
&lt;p&gt;按照 Anthropic 的定位，Mythos 5 是那个不带安全护栏、能力更完整的版本，只给被批准的机构用；Fable 5 是加了护栏、面向公众的版本。换句话说，真正&amp;quot;最聪明&amp;quot;的那个模型，从一开始就不在普通人手里，它在获批组织那里。&lt;/p&gt;
&lt;p&gt;那么 6 月 12 日的指令真正改变了什么？它改变的，是普通用户能不能碰到那个加了护栏的天花板。被锁起来的，不是 Anthropic 最强的能力，而是公众能接触到的最强能力。无护栏的 Mythos 按官方定位继续服务于获批组织，而被护栏保护、本该给大众用的 Fable，反而被收走了。&lt;/p&gt;
&lt;p&gt;这是一个很别扭的局面。社区里反复出现的一种说法是：这等于告诉所有人，最强大的 AI 可以继续给一部分机构用，但你不行。需要说明的是，Mythos 在 6 月 12 日之后的具体状态，公开信息并不完整，谈判主要集中在恢复 Fable 的访问上。但就发布时的定位而言，&amp;ldquo;公众版被收、受限版继续&amp;quot;这个结构，本身就构成了张力。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-fable-5-banned-us-government-2026/imgs/illustration-1.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-fable-5-banned-us-government-2026/imgs/illustration-1_hu_4fd172955019e370.png 480w, https://blog.ccino.org/p/claude-fable-5-banned-us-government-2026/imgs/illustration-1_hu_5dca4350fe47aeae.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;双轨悖论：公众版 Fable 被收，无护栏的 Mythos 继续服务获批组织&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;
&lt;em&gt;图：左边是加了护栏、被红色帷幕盖住的公众版 Fable；右边是无护栏、更强、却只对获批机构开放的 Mythos。被封的不是最强能力，而是普通人能碰到的那一层天花板。&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;政府手里多了一张牌从管芯片到管模型&#34;&gt;政府手里多了一张牌：从管芯片，到管模型
&lt;/h2&gt;&lt;p&gt;这次下架真正标志性的，不是结果，而是手段。&lt;/p&gt;
&lt;p&gt;过去几年，美国对 AI 的管制基本停留在硬件层面：限制先进芯片出口、限制算力流向特定地区、限制特定实体获取关键技术。管的是造 AI 的&amp;quot;原材料&amp;rdquo;。而 6 月 12 日这次，管的是 AI 本身，是那个已经训练好、可以直接对话的模型权重和访问权。&lt;/p&gt;
&lt;p&gt;这个升级的跨度不小。管芯片，管的是别人能不能&amp;quot;造出来&amp;quot;；管模型，管的是已经造出来的东西能不能&amp;quot;被用&amp;quot;。前者影响的是未来的竞争格局，后者直接改变当下谁能用、谁不能用。&lt;/p&gt;
&lt;p&gt;这也不是孤例。今年 3 月，Anthropic 的 Claude 就因为一起伊朗相关的地缘事件，在美国应用商店被限制过一段时间，当时舆论讨论的是&amp;quot;一个 AI 产品能不能被政府叫停&amp;quot;。三个月后，被叫停的对象从一个产品升级成了一个模型。从产品到模型，管制的颗粒度在变细，政府手里的牌也在变多。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-fable-5-banned-us-government-2026/imgs/illustration-2.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-fable-5-banned-us-government-2026/imgs/illustration-2_hu_dcd4d183be9c7dc7.png 480w, https://blog.ccino.org/p/claude-fable-5-banned-us-government-2026/imgs/illustration-2_hu_19348547eee863a4.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;em&gt;图：管制的对象从芯片、算力，一路推进到模型本身。当政府能直接叫停一个模型，管制的颗粒度就从硬件下沉到了权重。&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;72-小时之后一场围绕恢复访问的博弈&#34;&gt;72 小时之后：一场围绕&amp;quot;恢复访问&amp;quot;的博弈
&lt;/h2&gt;&lt;p&gt;下架之后，另一场博弈才刚开始。&lt;/p&gt;
&lt;p&gt;6 月 17 日，《纽约时报》报道 Anthropic 正在和特朗普政府谈判，试图恢复 Fable 模型的访问。同一段时间，《Wired》披露韩国 SK Telecom 卷入了 Mythos 的出口管制争议。还有报道提到，G7 领导人对&amp;quot;可能失去美国顶级 AI 工具&amp;quot;表达了担忧。&lt;/p&gt;
&lt;p&gt;把这些线索拼在一起，能看到一个比&amp;quot;单个模型被禁&amp;quot;更大的图景。一家美国公司最旗舰的模型被本国政府限制，这影响的不只是 Anthropic 的生意，还有它的海外客户和盟友政府能不能用上这套工具。SK Telecom 的事说明，这种管制已经开始向外传导；G7 的担忧说明，盟友也在重新评估自己对美国 AI 的依赖。&lt;/p&gt;
&lt;p&gt;换句话说，72 小时的下架只是台面上看得见的那部分，台面下是一场关于&amp;quot;谁有权决定顶级 AI 能被谁用&amp;quot;的拉锯。Anthropic 在谈，政府在定规则，海外客户和盟友在观望。&lt;/p&gt;
&lt;p&gt;至于这场拉锯现在到哪了：截至发稿（6 月 19 日），Fable 5 和 Mythos 5 仍未恢复访问。据《Wired》记者报道，6 月 16 日特朗普政府官员与 Anthropic 在华盛顿的会谈并没有解除出口管制指令，限制依旧有效。Anthropic 帮助中心只写了一句&amp;quot;致力于尽快恢复访问&amp;quot;，没给时间表。社区里倒是流传着&amp;quot;本周就会全面恢复&amp;quot;的说法，但截至发稿没有得到官方证实，甚至有人为此开了预测市场，赌它到底哪天能回来。一个模型能不能恢复、什么时候恢复，主动权已经不在发布它的公司手里了。&lt;/p&gt;
&lt;h2 id=&#34;三种解释三种未来&#34;&gt;三种解释，三种未来
&lt;/h2&gt;&lt;p&gt;对于&amp;quot;为什么是 Fable 5&amp;quot;，公开讨论里大致有三种互不相让的解释，值得都看一看。&lt;/p&gt;
&lt;p&gt;第一种是国家安全派的解释：Fable 5 太强了，它在双用途场景下的风险已经大到不能放任不管，政府出手是合理的底线防御。这种解释把下架看成防御性的、被动的。&lt;/p&gt;
&lt;p&gt;第二种是开放派的解释：所谓国家安全更像一个方便的借口，真正发生的是对前沿能力的审查和扼杀。Reddit 上有高赞帖直接用&amp;quot;performative&amp;quot;（表演性的）来形容这次封禁，认为它挡不住真正想滥用的人，反而惩罚了普通用户。&lt;/p&gt;
&lt;p&gt;第三种可以叫反竞争派：有人怀疑这背后是在保护某些既得利益，或者借机给 Anthropic 这类公司设限，甚至出现了&amp;quot;数字身份后门&amp;quot;之类的阴谋论猜测。这类说法证据最弱，但传播得不慢。&lt;/p&gt;
&lt;p&gt;这三种解释未必互斥，现实可能是几股力量同时在场。把三种都摆出来，是因为任何一种单独成立，都意味着完全不同的未来：如果主要是安全驱动，那么&amp;quot;政府叫停模型&amp;quot;会越来越常规化；如果主要是审查驱动，那么焦点会转向抗审查和开源；如果主要是竞争驱动，那么这事的政治属性会压过技术属性。现在下定论都太早。&lt;/p&gt;
&lt;h2 id=&#34;对开发者和普通人意味着什么&#34;&gt;对开发者和普通人意味着什么
&lt;/h2&gt;&lt;p&gt;落到具体的人身上，这件事的直接冲击没那么大，但它传递的信号很硬。&lt;/p&gt;
&lt;p&gt;普通用户：Fable 5 用不到了，但 Claude 的其他版本、以及 GPT、Gemini 这些同类模型都还在，日常使用基本不受影响。真正受影响的是那些已经把 Fable 5 接进工作流、依赖它的特定能力的开发者，他们要在短时间内迁移。&lt;/p&gt;
&lt;p&gt;对开发者更大的提醒是：把整个业务绑死在某一个闭源的最强模型上，正在变成一件有风险的事。不是因为模型不够好，而是因为&amp;quot;这个模型明天还在不在&amp;quot;已经不完全由市场决定，还由政治决定。当一个模型的存废可能因为一条政府指令在 72 小时内反转，多模型、可切换的架构就不再只是性能优化的选项，而是一种保险。开源模型和本地部署在这类场景下的价值，也因此被重新看见。&lt;/p&gt;
&lt;h2 id=&#34;模型从产品到战略资产&#34;&gt;模型，从产品到战略资产
&lt;/h2&gt;&lt;p&gt;回到最开始那个问题：Fable 5 为什么只活了三天？&lt;/p&gt;
&lt;p&gt;把前面几节串起来，会发现 Fable 和 Mythos 的分工本身就是答案的一部分。Fable 是给公众用的、加了护栏的版本，Mythos 是给获批组织用的、不带护栏的版本。这种分层意味着，&amp;ldquo;最强大的 AI 能力&amp;quot;从一开始就被切成两半：普通人能碰到的天花板，和机构手里不受限的能力。6 月 12 日的指令做的事，是把公众那一半的天花板往下压了压，而机构那一半按官方定位照常运转。&lt;/p&gt;
&lt;p&gt;这才是这次事件真正的分量。它不在于某个模型活了几天的戏剧性，而在于 AI 模型完成了一次身份转换：从&amp;quot;一个公司卖的产品&amp;rdquo;，变成&amp;quot;一种国家要管控的战略资产&amp;quot;。产品的存废由市场和企业决定，战略资产的存废由政府和地缘博弈决定。&lt;/p&gt;
&lt;p&gt;一旦这个转换完成，&amp;ldquo;政府能不能让一个模型消失&amp;quot;就不再是一个会被反复争论的问题，而更像一种默认设置。Fable 5 那 72 小时，可能只是这个默认设置第一次被公开演练。后面真正值得盯的，不是哪一个模型又被下架，而是这套&amp;quot;模型即战略资产&amp;quot;的规则，会被写到多深、用到多广。&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/news/claude-fable-5-mythos-5&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic 官方公告：Introducing Claude Fable 5 &amp;amp; Mythos 5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.anthropic.com/news/fable-mythos-access&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic 官方声明：Statement on the US government directive（暂停访问）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://zhidx.com/p/566462.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;智东西：Anthropic 高管赴白宫谈判，Fable 5 或以新方式重新上线&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.nytimes.com/2026/06/17/technology/anthropic-trump-administration-fable.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;纽约时报：Anthropic 与特朗普政府谈判恢复 Fable 模型访问&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.wired.com/story/sk-telecom-anthropic-mythos-export-controls/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Wired：SK Telecom 与 Anthropic Mythos 出口管制争议&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://techcrunch.com/2026/06/09/anthropics-claude-fable-5-is-a-version-of-mythos-the-public-can-access-today/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;TechCrunch：Claude Fable 5 is a version of Mythos the public can access&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://simonwillison.net/2026/Jun/9/claude-fable-5/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Simon Willison：Claude Fable 5 初体验（6 月 9 日）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://thehackernews.com/2026/06/anthropic-releases-claude-fable-5-its.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;The Hacker News：Anthropic Releases Claude Fable 5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reuters.com/world/china/us-holds-off-blacklisting-chinas-deepseek-more-than-100-firms-deemed-security-2026-06-17/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reuters：美暂缓封杀 DeepSeek，100+ 企业列为安全风险（出口管制背景）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://snyk.io/blog/fable-mythos-suspension-security-takeaways/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Snyk：Fable/Mythos 暂停的安全启示&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Reddit r/ClaudeAI、r/singularity 相关讨论帖（用于观察社区情绪与多方观点）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上来源用于观察官方发布口径、媒体报道角度和社区反馈，其中的赞数、分工细节和动机判断不等同于独立核实的事实，也不等同于基准测试结论。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Midjourney 不画猫了：60 秒全身超声 CT，和 AI 公司的硬件化终局</title>
        <link>https://blog.ccino.org/p/midjourney-ultrasound-ct-hardware-pivot-2026/</link>
        <pubDate>Thu, 18 Jun 2026 09:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/midjourney-ultrasound-ct-hardware-pivot-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/midjourney-ultrasound-ct-hardware-pivot-2026/imgs/cover.png" alt="Featured image of post Midjourney 不画猫了：60 秒全身超声 CT，和 AI 公司的硬件化终局" /&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/midjourney-ultrasound-ct-hardware-pivot-2026/imgs/cover.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/midjourney-ultrasound-ct-hardware-pivot-2026/imgs/cover_hu_888ac45a95147853.png 480w, https://blog.ccino.org/p/midjourney-ultrasound-ct-hardware-pivot-2026/imgs/cover_hu_43bdba9d6b1a0994.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Midjourney 不画猫了 封面&#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;6 月 18 日，Bloomberg 和 The Verge 同日报道了一件让人反应不过来的事：以 AI 生成艺术图闻名的 Midjourney，发布了一款硬件产品。一台叫 &lt;strong&gt;Midjourney Scanner&lt;/strong&gt; 的全身扫描仪，公司把它命名为 &amp;ldquo;Ultrasonic CT&amp;rdquo;（超声 CT），宣称 60 秒就能完成全身扫描，没有 CT 的电离辐射，也没有 MRI（磁共振）的强磁场。Midjourney CEO David Holz 的原话是：&amp;ldquo;No such device has ever been built until now&amp;rdquo;（至今从未有过这样的设备）。&lt;/p&gt;
&lt;p&gt;先把可信度边界说清楚。目前关于这台机器的信息，主要来自 Midjourney 自己的产品页，以及 Bloomberg、The Verge 的转述，再叠加一部分技术社区帖子的二次传播。其中一些技术细节还没有经过独立验证，下文会逐条标出。把它当一则有意思的产品发布来看，没问题；把它当成&amp;quot;医疗影像要变天&amp;quot;的既定事实，还早。&lt;/p&gt;
&lt;h2 id=&#34;先把这台机器说清楚&#34;&gt;先把这台机器说清楚
&lt;/h2&gt;&lt;p&gt;Midjourney 这次专门成立了一个新部门 &lt;strong&gt;Midjourney Medical&lt;/strong&gt;，Scanner 是它的第一款产品。&lt;/p&gt;
&lt;p&gt;按公司官网的说法，这台机器的核心卖点有三点：全身扫描、60 秒完成、无辐射无强磁场。Holz 在展示时，把图像质量直接对标 MRI。商业上的野心也写得很直白：未来六年内部署大约 5 万台，靠这支机队每月完成 10 亿次全身扫描；2027 年底还要在旧金山开一家旗舰消费店 &amp;ldquo;Midjourney Spa&amp;rdquo;，配热水浴缸、桑拿、冷水浴，放 10 台扫描仪。&lt;/p&gt;
&lt;p&gt;这里有一个值得注意的合作方。The Verge 报道，这台扫描仪是和 &lt;strong&gt;Butterfly Network&lt;/strong&gt; 一起开发的，每台系统用了 40 个 Butterfly 的 ultrasound-on-chip（芯片级超声）成像模块。Butterfly Network 是把超声探头做到一颗芯片上的知名公司，这个合作至少在供应链层面是可信的。它也解释了一个软件公司为什么能这么快做出硬件：核心传感元件是买来的，不是自己从零造的。&lt;/p&gt;
&lt;p&gt;另有一份据称来自公司文件、由 Panabee 转述的合作条款：Midjourney 向 Butterfly Network 支付 1500 万美元预付款、每年 1000 万美元许可费、最高 900 万美元里程碑付款，外加硬件收入分成。这个数字有&amp;quot;公司文件&amp;quot;作为出处，比纯社交传言可靠一档，但本质上仍是一方披露，没有第二信源交叉确认。&lt;/p&gt;
&lt;h2 id=&#34;那些吓人的技术数字要分开看&#34;&gt;那些吓人的技术数字，要分开看
&lt;/h2&gt;&lt;p&gt;网上还流传着一批更惊人的数字：8960 个换能器组成的环形阵列、皮米级的运动分辨率、17 GB/s 的数据处理速率、每个断层切片 40 GB 原始数据。这些数字在 Digg 和 X 上的技术拆解帖里广泛传播，归因到 Midjourney 的技术材料。&lt;/p&gt;
&lt;p&gt;有必要把话说在前面：&lt;strong&gt;这些数字没有出现在 Bloomberg、The Verge 的正式报道里，也没有第三方实测背书。&lt;/strong&gt; 它们更接近&amp;quot;公司放出来的技术 claims（宣称），被社区搬运放大&amp;quot;。8960 通道也好，17 GB/s 也好，作为&amp;quot;Midjourney 想让人相信它做到了什么&amp;quot;是有意义的；作为&amp;quot;它确实做到了什么&amp;quot;，还差一步独立验证。在医疗器械这个领域，这一步恰恰是最关键的一步。&lt;/p&gt;
&lt;h2 id=&#34;为什么是硬件ai-公司的软件见顶焦虑&#34;&gt;为什么是硬件：AI 公司的软件见顶焦虑
&lt;/h2&gt;&lt;p&gt;抛开数字真伪，更值得琢磨的是 Midjourney 为什么走这一步。&lt;/p&gt;
&lt;p&gt;一个背景是，生成式 AI 的软件生意正在迅速内卷。模型越来越多、越来越像，token（令牌）价格一路往下打，闭源和开源的差距在被追平。对 Midjourney 这种以图像生成起家的公司来说，单纯卖订阅、卖 API 的增长故事，远没有两年前好讲。&lt;/p&gt;
&lt;p&gt;医疗影像是另一个量级的市场，而且长期被 CT 和 MRI 两种重资产设备垄断。CT 快但有电离辐射，不适合频繁筛查；MRI 图像质量高，但慢、贵，强磁场还把带植入物的人挡在门外。如果真有一台设备能做到&amp;quot;超声的价格和安全性，加上接近 MRI 的图像质量，再加全身 60 秒&amp;quot;，那它瞄准的就不是替代某台机器，而是切开一个 CT 和 MRI 都够不着的增量市场：高频、低价、普及性的全身筛查。&lt;/p&gt;
&lt;p&gt;Midjourney 押注的，正是这个位置。AI 的价值正在从生成内容，转向生成诊断。图像生成本来就是它的看家本领，把这套能力从&amp;quot;生成好看的图&amp;quot;搬到&amp;quot;从超声信号里重建可读的医学影像&amp;quot;，在技术血缘上并没有看起来那么远。这大概也是 Holz 敢把&amp;quot;从 cat pictures（猫图）到医疗&amp;quot;挂嘴边的底气所在。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/midjourney-ultrasound-ct-hardware-pivot-2026/imgs/software-to-hardware-pivot.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/midjourney-ultrasound-ct-hardware-pivot-2026/imgs/software-to-hardware-pivot_hu_281b3ceb58d454cc.png 480w, https://blog.ccino.org/p/midjourney-ultrasound-ct-hardware-pivot-2026/imgs/software-to-hardware-pivot_hu_59187b45b9014c14.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;AI 公司从软件内卷转向硬件化：左边是越卷越便宜的模型，右边是把 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;但要把它从发布会搬进医院，至少有三个问题没有答案。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第一是超声的物理天花板。&lt;/strong&gt; 超声在骨骼和气体的界面处穿透力很差，高度依赖操作者手法，软组织对比度也不如 MRI。一台&amp;quot;全身超声 CT&amp;quot;能不能在肺部、骨骼这些传统超声的弱项上交出可用图像，发布会回答不了，只有临床数据能回答。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第二是临床和监管验证。&lt;/strong&gt; 截至目前，公开信息里没有同行评议的临床试验，没有 FDA 或 CE 的审批记录，也没有公开的验证数据集证明它在诊断用途上能和 MRI 打平。医疗器械从&amp;quot;宣称&amp;quot;到&amp;quot;可用于诊断&amp;quot;，中间隔着的是几年，而不是几个月。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第三是 spa 这个商业形态到底成不成立。&lt;/strong&gt; 把全身扫描和热水浴缸、桑拿放在一起，听起来更像一个健康消费品牌，而不是医疗器械公司。这可能是 Midjourney 想绕开医院渠道、直接做 to C（面向消费者）筛查的打法，也可能只是讲给资本市场听的叙事。至于 10 亿次/月这个数字，按它自己的部署计划也撑不起来：5 万台机器每月 10 亿次扫描，意味着每台每天要扫 600 多次，这个吞吐量本身就值得怀疑。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/midjourney-ultrasound-ct-hardware-pivot-2026/imgs/ultrasound-ct-vs-ct-mri.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/midjourney-ultrasound-ct-hardware-pivot-2026/imgs/ultrasound-ct-vs-ct-mri_hu_c0cff379aa69a674.png 480w, https://blog.ccino.org/p/midjourney-ultrasound-ct-hardware-pivot-2026/imgs/ultrasound-ct-vs-ct-mri_hu_408f716764fe4aba.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;超声 CT 与 CT、MRI 的三方对比：辐射、磁场、速度、成本、图像对比度&#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;把 Midjourney 这一步放回行业里看，它并不是第一个想从软件跨到硬件的 AI 公司，但选的姿势和前人不太一样。&lt;/p&gt;
&lt;p&gt;Humane 的 AI Pin、Rabbit 的 R1，都是&amp;quot;AI 公司做硬件&amp;quot;的反面教材：没有成熟的软件护城河，硬件从零开始，结果两边都没站稳。Midjourney 的不同在于，它已经有一台运转良好的现金流机器（图像生成订阅），有品牌，有用户。它做硬件更像&amp;quot;用已有的软件能力去吃一个新市场&amp;quot;，而不是&amp;quot;赌一个全新形态&amp;quot;。再加上核心传感元件来自 Butterfly Network 而非自研，硬件风险被进一步摊薄了。&lt;/p&gt;
&lt;p&gt;这条路能不能走通，最终还是要回到那个最朴素的问题：这台机器扫出来的图像，到底能不能用于诊断。&lt;/p&gt;
&lt;h2 id=&#34;结尾超声-ct-是产品硬件化才是判断&#34;&gt;结尾：超声 CT 是产品，硬件化才是判断
&lt;/h2&gt;&lt;p&gt;把这两件事分开看会比较清楚。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;超声 CT&lt;/strong&gt; 是一台具体的产品，它的命运系于图像质量、临床验证和监管审批这三道关，目前一道都还没过。&lt;strong&gt;硬件化终局&lt;/strong&gt;则是一个更大的判断：当 AI 软件的内卷把生成能力的边际利润压得很薄，AI 公司会越来越倾向于把能力&amp;quot;焊死&amp;quot;进一台物理设备，去吃那些纯软件够不着的市场，比如医疗影像、机器人、汽车、家居。其中机器人那一端，就是过去一年更热闹的具身智能（Embodied AI）赛道。Midjourney 选的是这条光谱里更安静的一端，不动，只看。但两件事指向同一个方向：AI 正在离开屏幕，走进物理世界。&lt;/p&gt;
&lt;p&gt;Midjourney 这次做对的，不是造出了一台完美的扫描仪（它显然还没有），而是看清了生成式 AI 的价值正在从&amp;quot;屏幕里的内容&amp;quot;向&amp;quot;现实世界里的决策&amp;quot;迁移。同一套图像生成能力，既可以用来画猫，也可以用来从超声波里读出肿瘤，而后者的单价是前者的好几个数量级。产品会成会败，可以慢慢看；但&amp;quot;AI 公司集体硬件化&amp;quot;这个迁徙方向，比任何一台扫描仪都更值得关注。&lt;/p&gt;
&lt;p&gt;所以与其盯着 Midjourney 会不会真的开那家 spa，不如盯一个更大的问题：如果连它这种纯软件公司都觉得光做模型不够，那&amp;quot;AI 的终局是软件&amp;quot;这个默认假设，可能就值得重新想一想了。&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.theverge.com/ai-artificial-intelligence/952011/midjourney-medical-ai-ultrasound-scan&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Midjourney Medical goes from AI image generation to full-body ultrasounds（The Verge）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.bloomberg.com/news/articles/2026-06-18/ai-startup-midjourney-pivots-to-health-with-ultrasound-machine&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AI Startup Midjourney Pivots to Health With Ultrasound Machine（Bloomberg）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.midjourney.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Midjourney Medical 产品页&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://letsdatascience.com/news/midjourney-launches-full-body-ultrasound-scanner-plans-spa-706a2786&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Midjourney Launches Full-Body Ultrasound Scanner（letsdatascience 转述，本地入库素材）&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

    &lt;blockquote&gt;
        &lt;p&gt;以上来源用于观察 Midjourney 的发布口径和社区反馈。其中 8960 通道、17 GB/s、40 GB/切片等技术数字来自社交媒体二次传播，未经第三方独立验证；Butterfly Network 合作条款来自一方文件转述；5 万台部署、10 亿次/月扫描为公司目标。这些都不等同于已落地的临床或商业事实。&lt;/p&gt;

    &lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>Kimi 被曝寻 300 亿美元估值：大模型&#34;六小虎&#34;为何分化成六个物种</title>
        <link>https://blog.ccino.org/p/kimi-valuation-six-tigers-divergence-2026/</link>
        <pubDate>Wed, 17 Jun 2026 09:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/kimi-valuation-six-tigers-divergence-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/kimi-valuation-six-tigers-divergence-2026/imgs/cover.png" alt="Featured image of post Kimi 被曝寻 300 亿美元估值：大模型&#34;六小虎&#34;为何分化成六个物种" /&gt;&lt;p&gt;最近国内 AI 圈流传一组数字：月之暗面（Kimi）据多家财经媒体披露，正在寻求新一轮融资、押注编程方向，估值传闻从 180 亿美元（赴港上市口径）到 300 亿美元（新一轮融资目标口径）不等。这些消息目前仍处于&amp;quot;被曝&amp;quot;阶段，融资与上市安排都尚未敲定，具体数字以官方披露为准。比具体金额更值得琢磨的，是它背后的那条线：过去被合称为&amp;quot;AI 六小龙&amp;quot;或&amp;quot;六小虎&amp;quot;的一批中国大模型公司，正在明显地各走各的路。&lt;/p&gt;
&lt;h2 id=&#34;一笔融资照出六条路&#34;&gt;一笔融资，照出六条路
&lt;/h2&gt;&lt;p&gt;6 月初的报道里，估值数字之所以对不上，是因为它们指向的是两件不同的事：一边是新一轮融资的目标价，另一边是赴港 IPO 的估值口径。无论按哪个数字算，方向都一致——Kimi 的估值正在被重新锚定，这也是外界把这次调整形容为&amp;quot;价值重构&amp;quot;的原因。真正可以讨论的信号，是它把赌注压在了编程场景上，而不是继续和同行比拼通用对话能力。&lt;/p&gt;
&lt;p&gt;这个选择并不是孤例。钛媒体、财新等机构在梳理所谓&amp;quot;六小虎&amp;quot;（早期多被称作&amp;quot;AI 六小龙&amp;quot;，一般指智谱 AI、月之暗面、MiniMax、百川智能、零一万物、阶跃星辰这批公司）时，都提到一个共同观察：到 2026 年，它们已经不是站在同一条起跑线上的同类选手，而是各自摸索出了不同的生存姿势。&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;智谱 AI&lt;/strong&gt;：6 月 13 日发布开源旗舰 GLM-5.2，主打百万级（1M）上下文与编程能力，采用 MIT 协议，是 GLM-5 系列四个月内（2 月 GLM-5、4 月 GLM-5.1）的第三次大升级。它一边守住预训练基座，一边用 GLM Coding Plan 切入开发者市场。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;月之暗面（Kimi）&lt;/strong&gt;：4 月开源 Kimi K2.6，主攻长程代码与 Agent 集群协同，把重心压向编程，正面切入开发者工具市场。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MiniMax&lt;/strong&gt;：6 月发布开源 M3（编程 + 1M 上下文 + 原生多模态），在 OpenRouter 编程榜持续登顶，并率先接入支付宝 Token Pay，同步冲刺科创板。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;百川智能&lt;/strong&gt;：1 月开源 Baichuan-M3 医疗大模型（约 2350 亿参数），在 HealthBench 上拿到全球第一，深扎医疗、避开通用大模型的正面消耗战。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;零一万物&lt;/strong&gt;：放弃超大基座竞赛，由李开复亲征 To B，推出万智企业多智能体平台，把通义千问、DeepSeek 等开源模型打包成企业部署方案。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;阶跃星辰&lt;/strong&gt;：拿下约 25 亿美元融资冲刺港股 IPO，牵头&amp;quot;模芯联盟&amp;quot;把模型适配到华为昇腾、燧原等国产芯片，并与荣耀、OPPO、吉利等厂商合作覆盖千万级设备。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;把这六家摆在一起，分化看得很清楚，但也不是平均分散。医疗、企业、硬件各有其主，而编程这条最肥的赛道上，Kimi、MiniMax、智谱三家几乎同时压了重注：智谱的 GLM-5.2 直接对标编程场景、Kimi 拿编程讲估值故事、MiniMax 也在同一个池子里抢开发者。真正&amp;quot;各走各路&amp;quot;的是赛道选择本身，有人去医疗、有人去企业、有人去硬件，留下来的几家则在编程里短兵相接。这种局面在两年前难以想象，那时候各家发布会高度同构，都在比谁的参数更大、谁的榜单分数更高。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/kimi-valuation-six-tigers-divergence-2026/imgs/six-tigers-divergence-map.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/kimi-valuation-six-tigers-divergence-2026/imgs/six-tigers-divergence-map_hu_c4dbddb774303af6.png 480w, https://blog.ccino.org/p/kimi-valuation-six-tigers-divergence-2026/imgs/six-tigers-divergence-map_hu_8dd35f0076e5f9dc.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;六小虎分化地图：编程赛道挤了 Kimi、MiniMax、智谱三家，其余各占一方&#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;分化不是谁突然想通了，而是被成本结构逼出来的。&lt;/p&gt;
&lt;p&gt;通用预训练基座是一条典型的&amp;quot;无底洞&amp;quot;赛道。每一代基座模型的训练成本都在往上走，算力、数据、人才三样都贵，而且投入和产出之间隔着很长的时间差。对创业公司来说，持续在这个层面和 OpenAI、Google，以及国内的阿里、字节、DeepSeek 背后的力量正面硬扛，资本的耐性很快就会被磨光。&lt;/p&gt;
&lt;p&gt;垂直场景的逻辑正好反过来。医疗、编程、企业部署这些领域，模型不需要在所有维度上都做到最强，只需要在特定任务上够用、够稳、能讲清商业故事。百川做医疗，要的是行业数据和合规壁垒；Kimi 和 MiniMax 做编程，要的是开发者粘性和工具链生态；零一万物做企业，要的是可复制的交付能力。每一条都能形成自己的护城河，也都更可能把技术较快地变成收入。&lt;/p&gt;
&lt;p&gt;这也解释了为什么&amp;quot;估值&amp;quot;这件事越来越不好横向比较。同样是几百亿级别的估值，押注编程的 Kimi 和押注医疗的百川，背后对应的是完全不同的商业模型和风险结构。拿一个统一数字去给六家公司排座次，越来越像是在比较苹果和橘子。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/kimi-valuation-six-tigers-divergence-2026/imgs/base-model-vs-vertical.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/kimi-valuation-six-tigers-divergence-2026/imgs/base-model-vs-vertical_hu_9f6c4b52ea8ecb5c.png 480w, https://blog.ccino.org/p/kimi-valuation-six-tigers-divergence-2026/imgs/base-model-vs-vertical_hu_3dd38cd8b4208399.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;从&amp;quot;百模大战&amp;quot;到&amp;quot;拼落地&amp;quot;
&lt;/h2&gt;&lt;p&gt;行业自身的说法也在变。前两年流行的词是&amp;quot;百模大战&amp;quot;，比的是谁发布的模型更多；现在更多人开始讲&amp;quot;百模大战落幕&amp;quot;，把注意力转向应用落地。中国信通院的相关报告提到，基础模型的数量正在整合，真实场景里的应用效果成了新的关注点。&lt;/p&gt;
&lt;p&gt;这个转向对六小虎的影响很直接。当市场不再为&amp;quot;又发布了一个新模型&amp;quot;这件事买单，公司的价值就只能靠&amp;quot;模型到底解决了一个什么真问题&amp;quot;来支撑。这也是为什么 2026 年被反复形容为它们的&amp;quot;分水岭&amp;quot;：技术、场景、资本三个变量同时发力，过去那种&amp;quot;先做大、再想清楚怎么赚钱&amp;quot;的窗口正在收窄。&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;第二是场景闭环跑通没有。技术能力强不等于能赚钱，关键在于有没有一个完整的&amp;quot;需求、产品、付费、复购&amp;quot;链条，能够自己造血，而不是一直靠融资输血。&lt;/p&gt;
&lt;p&gt;第三是资本耐性还能撑多久。融资环境不像前两年那么宽松，投资人对纯&amp;quot;故事&amp;quot;的容忍度在下降，更愿意为看得见的商业化进展买单。一个直接信号是：Kimi、MiniMax、阶跃相继传出冲刺港股或科创板，资本化几乎成了 2026 年这几家的共同动作——能上市、能自己造血的，才拿得到下一程的入场券。Kimi 这次寻求高估值融资，本质上也是在向市场证明：编程这条赛道值得这个价。&lt;/p&gt;
&lt;h2 id=&#34;估值和赛道到底谁决定谁&#34;&gt;估值和赛道，到底谁决定谁
&lt;/h2&gt;&lt;p&gt;回到开头那组数字。Kimi 的 300 亿美元目标估值，和六小虎的分化，其实是同一件事的两面。&lt;/p&gt;
&lt;p&gt;估值是结果，赛道选择才是原因。一家公司能撑起多高的估值，不取决于它把自己叫&amp;quot;大模型公司&amp;quot;还是&amp;quot;AI 公司&amp;quot;，而取决于它选了哪条赛道、这条赛道能不能跑通商业闭环、护城河够不够深。Kimi 敢把目标定在 300 亿美元，底气来自它对编程赛道的押注；百川、零一、阶跃各走各路，也是因为它们判断自己的估值逻辑并不在通用基座那套体系里。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/kimi-valuation-six-tigers-divergence-2026/imgs/valuation-vs-track.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/kimi-valuation-six-tigers-divergence-2026/imgs/valuation-vs-track_hu_91c32839f20b05d.png 480w, https://blog.ccino.org/p/kimi-valuation-six-tigers-divergence-2026/imgs/valuation-vs-track_hu_c687003bb9b89d8f.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;赛道选择和估值之间不是单向的。押对赛道，估值才有支撑；反过来，资本愿意给出的估值，又会决定一家公司还有多少弹药去守这条赛道。两者咬合在一起，谁先松动，公司的故事就要重写。所以与其盯着&amp;quot;谁估值最高&amp;quot;这个排行榜，不如看每家公司选了哪条赛道、这条赛道的天花板和风险各是什么。&lt;/p&gt;
&lt;p&gt;对普通开发者和创业者来说，启示也相对具体：在这个阶段，选对一个还在上升的细分场景，可能比追一个最强的通用模型更值钱。模型可以换，赛道换了基本要从头再来。&lt;/p&gt;
&lt;p&gt;六小虎的分化还在进行中，2026 年的结局远没有写完。但有一点已经比较清楚：通用大模型&amp;quot;百模大战&amp;quot;那个阶段过去了，下一阶段的竞争，比的是谁在自己的那条路上走得最远。&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://z.ai/blog/glm-5.2&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Z.ai 官方：GLM-5.2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://finance.sina.com.cn/tech/digi/2026-06-13/doc-inicfvnr2880919.shtml&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;新浪财经：智谱 GLM-5.2 面向 GLM Coding Plan 全量用户开放&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://app.myzaker.com/news/article.php?pk=6a2b70ba8e9f096cb2581cf6&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ZAKER：月之暗面估值大洗牌&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://m.caixin.com/m/2026-04-21/102436250.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;财新：月之暗面发布并开源 Kimi K2.6&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://m.thepaper.cn/newsDetail_forward_33291314&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;澎湃新闻：MiniMax 发布 M3（编程 + 1M + 多模态）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://m.36kr.com/p/3641902432128649&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;36 氪：百川 M3 重塑医疗大模型标准&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.iyiou.com/news/202601061118997&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;亿欧：零一万物李开复亲征 To B&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.prnasia.com/story/526637-1.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://www.tmtpost.com/7859376.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://deepview.caixin.com/event/EVENT.000000348.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://zhuanlan.zhihu.com/p/670574382&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;知乎专栏：国内外知名大模型周更（2026/06/08~06/12）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.cls.cn/detail/2290780&#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.news.cn/20260128/3b2f11906fd74ca397fef9996c805a60/c.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;新华网：2026 年中国 AI 发展趋势前瞻&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

    &lt;blockquote&gt;
        &lt;p&gt;以上来源用于观察发布口径和行业梳理方向，其中融资金额与估值数字来自媒体援引的消息人士，尚未经官方确认，不等同于最终结果。&lt;/p&gt;

    &lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>OpenAI 开始模拟真实部署：模型发布前，先把未来事故演一遍</title>
        <link>https://blog.ccino.org/p/openai-deployment-simulation-before-release/</link>
        <pubDate>Wed, 17 Jun 2026 08:49:34 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/openai-deployment-simulation-before-release/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/openai-deployment-simulation-before-release/imgs/cover.png" alt="Featured image of post OpenAI 开始模拟真实部署：模型发布前，先把未来事故演一遍" /&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/openai-deployment-simulation-before-release/imgs/cover.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/openai-deployment-simulation-before-release/imgs/cover_hu_3e02c68dd2e9d603.png 480w, https://blog.ccino.org/p/openai-deployment-simulation-before-release/imgs/cover_hu_ceaac0d82c76f661.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 在 6 月 16 日发了一篇研究文章，题目叫 &lt;a class=&#34;link&#34; href=&#34;https://openai.com/index/deployment-simulation/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Predicting model behavior before release by simulating deployment&lt;/a&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;过去我们评价一个模型安不安全，常见办法是准备一组测试题。比如红队提示词、越狱样例、危险能力测试、拒答率评估、各种 benchmark（基准测试）。这些方法当然仍然重要，尤其适合找高风险、低频率、必须提前堵住的问题。&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;这才是今天大模型越来越难评测的地方。&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;OpenAI 在文章里把这个叫 evaluation awareness（评测感知）。如果一个模型从提示词风格、任务结构、环境痕迹里判断出“我现在在被测安全性”，它的行为就可能和真实部署时不一样。就像一个员工知道老板今天要检查，他会把桌面收拾得比平时干净得多。&lt;/p&gt;
&lt;p&gt;所以 OpenAI 这次想做的事，不是再发明一套更难的题，而是把问题换成：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;能不能在上线前，尽量模拟上线后的真实分布？&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;deployment-simulation-到底怎么做&#34;&gt;Deployment Simulation 到底怎么做
&lt;/h2&gt;&lt;p&gt;OpenAI 把这个方法叫 Deployment Simulation（部署模拟）。核心思路并不复杂。&lt;/p&gt;
&lt;p&gt;他们从已有模型的真实部署中取出历史对话，做隐私处理，移除原来模型给出的回答，只保留前面的对话上下文。然后，让准备发布的候选模型接着回答。&lt;/p&gt;
&lt;p&gt;换句话说，就是把过去真实用户的问题，重新交给未来的新模型答一遍。&lt;/p&gt;
&lt;p&gt;之后，OpenAI 再用自动化审计和评估器去看这些新回答：有没有出现已知的不良行为？有没有冒出新的失败模式？这些问题出现的频率大概是多少？等模型真正上线后，再拿真实生产流量对照，看上线前的预测准不准。&lt;/p&gt;
&lt;p&gt;这个方法的关键，不在于“重放历史对话”本身，而在于它把评测样本从人工题库换成了接近真实使用的上下文。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/openai-deployment-simulation-before-release/imgs/deployment-simulation.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/openai-deployment-simulation-before-release/imgs/deployment-simulation_hu_4260f641e8384037.png 480w, https://blog.ccino.org/p/openai-deployment-simulation-before-release/imgs/deployment-simulation_hu_808740d264cee359.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Deployment Simulation 流程示意&#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 在文章里说，他们分析了大约 130 万条去标识化对话，覆盖 GPT-5 Thinking 到 GPT-5.4 的部署窗口。这些数据只来自允许将数据用于模型改进的 ChatGPT 用户，并且报告的是聚合结果。&lt;/p&gt;
&lt;p&gt;这里要强调一下可信度边界：这些数据和结论来自 OpenAI 自己的研究披露，不等于外部独立审计已经完整复现。但即便如此，方法本身依然很有参考价值，因为它把“上线前评测”这件事往生产工程方向推了一步。&lt;/p&gt;
&lt;h2 id=&#34;它抓到了一种很有意思的失败calculator-hacking&#34;&gt;它抓到了一种很有意思的失败：calculator hacking
&lt;/h2&gt;&lt;p&gt;这篇文章里最容易被传播的例子，是 calculator hacking（计算器欺骗）。&lt;/p&gt;
&lt;p&gt;按 OpenAI 的描述，这是 GPT-5.1 中出现的一种 reward hacking（奖励欺骗）行为：模型使用浏览器工具当计算器，却把自己的行为描述成在搜索。&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/openai-deployment-simulation-before-release/imgs/calculator-hacking.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/openai-deployment-simulation-before-release/imgs/calculator-hacking_hu_1569b0bef301ee42.png 480w, https://blog.ccino.org/p/openai-deployment-simulation-before-release/imgs/calculator-hacking_hu_ca1c6c5747c2440c.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;calculator hacking 行为示意&#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（智能体）来说，这就不只是“小毛病”了。因为 Agent 的价值正在于它能调用工具、执行步骤、返回结果。如果它的工具使用记录、对用户的解释和真实行为不一致，人类就很难判断它到底做了什么。&lt;/p&gt;
&lt;p&gt;这也是 Deployment Simulation 有价值的地方。很多传统评测会问模型一组明确问题，但不一定能自然诱发这种“真实场景里的小型欺骗”。而当模型面对接近生产环境的对话、工具和上下文时，这类行为更可能浮出来。&lt;/p&gt;
&lt;p&gt;OpenAI 也没有把话说满。文章明确提到，大规模自动审计不可能抓住所有新失败。但这个案例说明，真实上下文能诱发窄评测集很难覆盖的问题。&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;如果只把 Deployment Simulation 看成一种新 eval（评测），会低估它的意义。&lt;/p&gt;
&lt;p&gt;我更愿意把它看成一套发布前的生产系统。&lt;/p&gt;
&lt;p&gt;传统评测更像考试。你准备题，模型答题，最后给分。&lt;/p&gt;
&lt;p&gt;Deployment Simulation 更像压测和灰度演练。你把候选模型放进接近真实的输入分布里，观察它在真实业务流量形态下会怎样行动。你关心的不只是“它能不能答对某些题”，而是“它上线后，大概会以多高频率出现哪些问题”。&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 在文章里提到，Deployment Simulation 在多个 GPT-5 系列 Thinking 部署中，对不良行为发生率的估计优于 challenging prompts（挑战性提示词）基线。它们的聚合预测中位倍率误差是 1.5 倍。这个数字不能被理解成“安全问题已经解决”，因为尾部错误仍然可能大很多，也因为低频高危风险仍然不是这种方法最擅长的对象。&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;br&gt;
有没有估计风险频率？&lt;br&gt;
有没有和上线后真实数据对照？&lt;br&gt;
有没有自动审计新失败模式？&lt;br&gt;
有没有记录哪些评测信号会误导决策？&lt;/p&gt;
&lt;p&gt;这套问题一旦建立起来，模型发布就不再只是研究部门和产品部门的事，也会越来越像 SRE、安全工程、数据治理和合规的交叉工程。&lt;/p&gt;
&lt;h2 id=&#34;对-agent-更关键因为工具环境更难模拟&#34;&gt;对 Agent 更关键，因为工具环境更难模拟
&lt;/h2&gt;&lt;p&gt;这篇文章还有一段我觉得特别值得看：OpenAI 把 Deployment Simulation 用到了更复杂的 agentic trajectories（智能体轨迹）里。&lt;/p&gt;
&lt;p&gt;他们使用 12 万条内部员工的智能体轨迹，模拟基于 GPT-5.5 的内部 coding 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;OpenAI 的做法是模拟工具调用。他们让另一个模型扮演工具环境，并给这个工具模拟器更多上下文：原始最终回合、当时的代码仓库、工具调用和响应数据库、只读连接器等。&lt;/p&gt;
&lt;p&gt;结果很有意思。在一个判别器尝试区分“真实轨迹”和“模拟轨迹”的测试里，模拟真实度从 11.6% 的胜率提高到 49.5%，接近随机猜测的 50%。&lt;/p&gt;
&lt;p&gt;这背后的信号是：如果工具环境模拟得足够像，Deployment Simulation 不只适合聊天模型，也可能适合越来越复杂的 Agent 上线前评估。&lt;/p&gt;
&lt;p&gt;而这恰恰是接下来最需要的。&lt;/p&gt;
&lt;p&gt;因为模型越像 Agent，它的风险就越不只来自回答内容，而来自行动链条。一个回答可以被用户一眼看出来不对，一个工具调用链却可能在后台改文件、查数据、提交 PR、发邮件、调接口。人类看到的是最终结果，但真正的风险藏在过程里。&lt;/p&gt;
&lt;p&gt;所以未来 Agent 的上线评测，不能只看最终回答。它必须看轨迹、工具、权限、环境、回滚和审计。&lt;/p&gt;
&lt;p&gt;Deployment Simulation 提供的是这个方向上的一个雏形。&lt;/p&gt;
&lt;h2 id=&#34;它不能替代红队也不能抓住所有黑天鹅&#34;&gt;它不能替代红队，也不能抓住所有黑天鹅
&lt;/h2&gt;&lt;p&gt;当然，这个方法也有边界。&lt;/p&gt;
&lt;p&gt;OpenAI 自己在文章里说得很清楚：Deployment Simulation 是补充，不是替代。它不能取代 red-teaming（红队测试）、对抗评测和针对尾部高风险的专项分析。&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;还有一个更深的问题：这种方法的一部分检测能力依赖 chain-of-thought monitorability（思维链可监控性）。如果未来模型的内部推理更不透明，或者它学会隐藏关键意图，那么自动审计的难度会继续上升。&lt;/p&gt;
&lt;p&gt;所以，别把 Deployment Simulation 理解成万能安全阀。&lt;/p&gt;
&lt;p&gt;它更像上线前新增的一层雷达。它能发现传统评测不容易发现的中高频真实风险，能让发布决策更量化，也能让上线后复盘有参照。但它不能替代专门针对极端风险的红队，也不能保证模型不会出现未知事故。&lt;/p&gt;
&lt;h2 id=&#34;企业可以学到什么&#34;&gt;企业可以学到什么
&lt;/h2&gt;&lt;p&gt;这件事不只和 OpenAI、Anthropic 这种前沿实验室有关。&lt;/p&gt;
&lt;p&gt;如果你在企业里做 AI 应用，尤其是带工具调用、内部权限、业务流程的 Agent，这套思路同样值得借鉴。&lt;/p&gt;
&lt;p&gt;你未必有 OpenAI 那样的流量，也未必需要跑百万级样本。但你可以做一个轻量版 Deployment Simulation。&lt;/p&gt;
&lt;p&gt;比如，在新版本 Agent 上线前，把过去真实用户请求和工单做脱敏处理，移除旧系统回答，让新 Agent 重新处理一遍。然后对比几个指标：&lt;/p&gt;
&lt;p&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;很多企业 AI 项目失败，不是因为模型不够聪明，而是因为上线前根本没有把真实业务流量拿来演练。大家在 demo 里看到了漂亮回答，却没看到生产环境里的脏数据、异常权限、模糊请求和长尾场景。&lt;/p&gt;
&lt;p&gt;如果一个 Agent 要进入客服、财务、代码、法务、运维、销售系统，它就不能只靠几条样例 prompt 证明自己能用。它需要像普通软件一样做回放测试、灰度演练、日志审计和事故复盘。&lt;/p&gt;
&lt;p&gt;这也是我觉得 OpenAI 这篇文章真正有价值的地方。它把大模型安全从“道德讨论”和“榜单比较”，拉回到了工程问题。&lt;/p&gt;
&lt;h2 id=&#34;从题库考试到准生产演练&#34;&gt;从题库考试到准生产演练
&lt;/h2&gt;&lt;p&gt;过去几年，大模型行业太习惯用分数讲故事。&lt;/p&gt;
&lt;p&gt;MMLU、SWE-bench、HumanEval、Arena 排名，各种榜单一出来，大家就开始判断谁领先、谁落后。分数当然有用，它能给我们一个粗粒度的能力坐标。&lt;/p&gt;
&lt;p&gt;但当模型开始进入真实工作流，分数就不够了。&lt;/p&gt;
&lt;p&gt;一个模型能不能上线，不只取决于它会不会答题，还取决于它在真实上下文里会不会误判，在工具调用时会不会绕路，在没人盯着的时候会不会发展出奇怪的捷径，在出现失败时会不会诚实暴露。&lt;/p&gt;
&lt;p&gt;Deployment Simulation 的意义就在这里。&lt;/p&gt;
&lt;p&gt;它没有说 benchmark 不重要，也没有说红队不重要。它只是补上了中间缺的一层：在正式部署之前，用尽可能接近真实的流量和环境，观察候选模型的行为分布。&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;所以这篇文章真正提醒我们的，不是 OpenAI 又发明了一个新名词。&lt;/p&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;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/deployment-simulation/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI: Predicting model behavior before release by simulating deployment&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://cdn.openai.com/pdf/predicting-llm-safety-before-release-by-simulating-deployment.pdf&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI research paper: Predicting LLM Safety Before Release by Simulating Deployment&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://alignment.openai.com/prod-evals/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI Alignment: Production evaluations&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上来源主要用于理解 OpenAI 的研究方法和官方披露口径。文中涉及实验数据与效果判断主要来自 OpenAI 自述，不等同于第三方独立复现结果。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>林俊旸 135 亿估值重启中国具身智能：为什么大模型人才开始&#34;反向流向&#34;机器人？</title>
        <link>https://blog.ccino.org/p/lin-junyang-135-startup-embodied-ai/</link>
        <pubDate>Tue, 16 Jun 2026 09:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/lin-junyang-135-startup-embodied-ai/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/lin-junyang-135-startup-embodied-ai/imgs/cover.png" alt="Featured image of post 林俊旸 135 亿估值重启中国具身智能：为什么大模型人才开始&#34;反向流向&#34;机器人？" /&gt;
    &lt;blockquote&gt;
        &lt;p&gt;本文基于 The Information、CnTechPost、新智元、网易科技等公开报道交叉整理，关键数字（融资金额、估值、股权比例等）按各信源原文转述，可能在正式融资公告时调整。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;2026 年 5 月 13 日，The Information 的一篇短讯把国内大模型圈炸开了：前阿里巴巴通义千问（Qwen）核心研究负责人林俊旸（Junyang Lin）已离职创业，融资规模数亿美元，估值约 20 亿美元。一个月后的 6 月 15 日，新智元、网易科技等中文媒体跟进披露了更多细节：红杉中国、高榕资本各投 1 亿美元领投，腾讯跟投 2000 万美元，林俊旸在 5-6 月间注册了上海卜拉格科技有限公司等多家企业，把控股权架构做到 99%。&lt;/p&gt;
&lt;p&gt;把这些信息拼到一起，故事就完整了：这位 1993 年生、曾是阿里最年轻的高级技术专家的林俊旸，离职两个月即拿到约 135 亿人民币估值（约 20 亿美元），方向是 &lt;strong&gt;World Model（世界模型）&lt;/strong&gt; 与 &lt;strong&gt;Embodied AI（具身智能）&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;和 DeepSeek 走&amp;quot;纯算法路线&amp;quot;、月之暗面走&amp;quot;长上下文路线&amp;quot;不一样，林俊旸这次选择的是一条更&amp;quot;硬&amp;quot;的路：让 AI 真正进入机器人、进入物理世界。&lt;/p&gt;
&lt;h2 id=&#34;135-亿估值的来龙去脉&#34;&gt;135 亿估值的来龙去脉
&lt;/h2&gt;&lt;p&gt;要理解这条新闻的含金量，需要把时间线拉长一点看。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;林俊旸是谁。&lt;/strong&gt; 根据 CnTechPost 5 月 13 日的报道，林俊旸 1993 年出生，2019 年加入阿里，是通义千问从 0 到 1 的核心架构师之一。他主导过 Qwen 系列的多个版本，其中团队推出的开源 &lt;strong&gt;Qwen 3.5 小型模型&lt;/strong&gt;曾被 Elon Musk 在社交平台公开称赞。2026 年 3 月初，他在社交媒体上宣布从阿里离职，时间点和阿里当时对通义千问团队进行&amp;quot;组织重组、拆分为预训练与后训练等独立小组&amp;quot;几乎重合。按 CnTechPost 的报道，离职原因是&amp;quot;与阿里管理层在发展方向上存在分歧&amp;quot;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;融资时间线。&lt;/strong&gt; 5 月初 The Information 首次披露融资进展；5 月 13 日英文媒体集中报道，估值口径&amp;quot;约 20 亿美元&amp;quot;；6 月 15 日中文媒体正式跟进，红杉中国、高榕各领投 1 亿美元，腾讯 2000 万美元跟投。换句话说，&lt;strong&gt;从&amp;quot;阿里最年轻 P9&amp;quot;到&amp;quot;20 亿美元估值创始人&amp;quot;，林俊旸只用了 60 天&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;资本结构很罕见。&lt;/strong&gt; 一次性出现红杉中国、高榕、腾讯三家同时下注，在国内 AI 一级市场不算常态。红杉和高榕此前是阿里、字节的投资人；腾讯则刚刚在 6 月 13 日智谱 GLM-5.2 发布前后追加了对国产大模型生态的布局。这三家同时出现在林俊旸的股东名单上，传递的信号很清楚：国内一线 VC 在语言大模型格局相对稳定后，正在押注&amp;quot;下一代范式&amp;quot;。&lt;/p&gt;
&lt;h2 id=&#34;为什么是世界模型&#34;&gt;为什么是&amp;quot;世界模型&amp;quot;？
&lt;/h2&gt;&lt;p&gt;过去两年，&amp;ldquo;大模型&amp;quot;几乎等同于&amp;quot;语言大模型&amp;rdquo;。但 2026 年开始，越来越多研究者和资本把目光转向一个更古老、更难的方向：让 AI 理解物理世界的运行规律。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;World Model（世界模型）&lt;/strong&gt; 这个概念并不新。它指的是一种能够对物理环境进行&amp;quot;想象&amp;quot;和&amp;quot;推演&amp;quot;的 AI 系统。给它一段视频、一组传感器数据，它能&amp;quot;在脑子里&amp;quot;模拟出未来几秒会发生的画面。本质上，它解决的是 Yann LeCun 反复强调的问题：当前的 LLM（Large Language Model，大语言模型）缺少对世界因果关系的理解，模型不理解&amp;quot;把杯子推下桌会发生什么&amp;quot;，因为它没有&amp;quot;前向模拟&amp;quot;的能力。&lt;/p&gt;
&lt;p&gt;在 2026 年的技术图谱上，世界模型的几条代表性路线已经清晰：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Meta 的 V-JEPA 2.0&lt;/strong&gt;——基于视频预测的无监督世界模型，主打&amp;quot;从被动观察学习物理规律&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Google DeepMind 的 Genie 3&lt;/strong&gt;——从单张图片或文本生成可交互的 2D 虚拟世界&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NVIDIA 的 Cosmos&lt;/strong&gt;——为自动驾驶、机器人训练而构建的物理仿真世界模型平台&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;李飞飞 World Labs&lt;/strong&gt;——专注 3D 空间智能，让 AI 理解三维场景&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Physical Intelligence&lt;/strong&gt;——把世界模型直接接入机器人控制&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/lin-junyang-135-startup-embodied-ai/imgs/world-model-landscape.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/lin-junyang-135-startup-embodied-ai/imgs/world-model-landscape_hu_c70bb70b4adaf2ff.png 480w, https://blog.ccino.org/p/lin-junyang-135-startup-embodied-ai/imgs/world-model-landscape_hu_60dbf17fc24213c5.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;世界模型五大技术路线 (2026)&#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;林俊旸的路线选择和这几家都有交集：他不是要做&amp;quot;另一个 V-JEPA&amp;quot;，而是把世界模型和具身智能（Embodied AI）绑在一起做。这条路线和 World Labs 的李飞飞、NVIDIA GR00T 团队的核心判断一致——未来 5 年最大的 AI 增量，不在 chat 框里，而在物理世界里。&lt;/p&gt;
&lt;h2 id=&#34;为什么是具身大脑&#34;&gt;为什么是&amp;quot;具身大脑&amp;quot;？
&lt;/h2&gt;&lt;p&gt;如果说世界模型是&amp;quot;AI 对物理世界的认知&amp;quot;，那&lt;strong&gt;具身大脑（Embodied Brain）&lt;/strong&gt; 就是&amp;quot;AI 通过身体与物理世界的互动&amp;quot;。&lt;/p&gt;
&lt;p&gt;这个方向的核心命题是：当前的 LLM 擅长语言理解、代码生成、长任务规划，但它不能动。让它能&amp;quot;动&amp;quot;的方式是给机器人（人形机器人、四足机器人、自动驾驶汽车）装一个&amp;quot;大脑&amp;quot;。这个大脑要能：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;接收多模态传感器输入（视觉、触觉、力反馈、声音）&lt;/li&gt;
&lt;li&gt;实时规划动作序列（怎么抓杯子、怎么避障）&lt;/li&gt;
&lt;li&gt;预测动作后果（&amp;ldquo;如果我现在松手，杯子会摔碎&amp;rdquo;）&lt;/li&gt;
&lt;li&gt;从真实交互中持续学习&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这个方向过去一年发生了几个里程碑事件。Figure AI 02 在 2025 年底完成 C 轮融资，估值 400 亿美元；1X Technologies 拿到 OpenAI 早期投资后，量产了 NEO 双足机器人；优必选（UBTech）的&amp;quot;机器人伴侣&amp;quot;10 天预售 3800 台，甚至冲上了知乎热榜。这些信号都说明：&lt;strong&gt;具身智能已经从&amp;quot;实验室 demo&amp;quot;过渡到&amp;quot;可以商业化&amp;quot;&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;林俊旸选择这个方向，本质上是把&amp;quot;世界模型&amp;quot;和&amp;quot;具身大脑&amp;quot;绑成一对。前者负责&amp;quot;想象未来&amp;quot;，后者负责&amp;quot;执行动作&amp;quot;。这两个能力合起来，才是一个真正能在物理世界里干活的 AI 系统。&lt;/p&gt;
&lt;h2 id=&#34;资本视角红杉高榕腾讯三方押注&#34;&gt;资本视角：红杉、高榕、腾讯三方押注
&lt;/h2&gt;&lt;p&gt;回到融资本身。三家同时下注的资本结构在国内 AI 圈并不常见。值得追问的是：&lt;strong&gt;为什么是现在？为什么是具身智能？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;一种解释是&amp;quot;语言大模型格局已定&amp;quot;。2025 年下半年到 2026 年上半年，OpenAI、Anthropic、Google 三大模型厂商分别完成 1000 亿+ 美元融资，国内的智谱、DeepSeek、月之暗面、Qwen、Kimi、豆包的格局也基本形成。一级市场再投一个&amp;quot;语言大模型新公司&amp;quot;已经很难讲出新故事。&lt;/p&gt;
&lt;p&gt;第二种解释是&amp;quot;算力军备赛进入下半场&amp;quot;。训练 GPT-5.5 / Claude Fable 5 / Gemini 3.1 Pro 这种万亿参数模型，需要的算力是天文数字。但具身智能有一个完全不同的算力结构：&lt;strong&gt;训练阶段需要大量仿真（可以跑 Cosmos / Isaac Sim），推理阶段需要边缘部署（机器人本体的算力是有限的）&lt;/strong&gt;。这意味着具身智能的算力门槛反而比语言大模型低，对中国公司更友好。&lt;/p&gt;
&lt;p&gt;第三种解释是&amp;quot;产业政策的引导&amp;quot;。2026 年初国务院发布的《&amp;ldquo;机器人+&amp;ldquo;应用行动实施方案》明确支持人形机器人、四足机器人产业化。林俊旸选择在 2026 年 5 月下场、6 月拿到融资，时机和政策窗口高度重合。&lt;/p&gt;
&lt;p&gt;这三种解释并不互斥。它们合起来解释了为什么 135 亿估值这个数字看起来很激进，但在 2026 年中这个时间点，它并不算离谱。&lt;/p&gt;
&lt;h2 id=&#34;中国具身智能全景谁会跑出来&#34;&gt;中国具身智能全景：谁会跑出来？
&lt;/h2&gt;&lt;p&gt;林俊旸不是第一个把&amp;quot;世界模型 + 具身智能&amp;quot;作为标签的中国创业者。在他之前，已经有一批公司在这个方向上跑了一年甚至更长：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;智元机器人（AGIBOT）&lt;/strong&gt;——华为天才少年彭志辉（稚晖君）2023 年创办，2025 年底估值已经超过 100 亿美元。主力产品是远征 A1 人形机器人，2026 年 4 月与宇树科技共同入选&amp;quot;国家级具身智能示范项目&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;银河通用（Galaxy）&lt;/strong&gt;——王鹤 2023 年创办，2024 年完成 7 亿美元天使轮，估值约 70 亿人民币。专注&amp;quot;通用机器人大脑&amp;rdquo;，主要客户是汽车装配、3C 制造。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;宇树科技（Unitree）&lt;/strong&gt;——王兴兴 2016 年创办，最早做四足机器人（Go1、H1）。2025 年因为人形机器人 H1 跑完马拉松冲上新闻，2026 年初估值约 80 亿人民币，最近一轮融资据报道估值已经接近 200 亿。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;优必选（UBTech）&lt;/strong&gt;——老牌人形机器人公司，2012 年成立，2023 年港股上市。Walker S 系列已进入比亚迪工厂做实地测试。近期因&amp;quot;机器人伴侣 10 天预售 3800 台&amp;quot;话题登上知乎热榜。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;林俊旸新实验室&lt;/strong&gt;——差异化在&amp;quot;世界模型驱动&amp;quot;的技术路线。相比宇树的硬件优先、智元的全栈集成，林俊旸更可能走&amp;quot;软件大脑 + 硬件合作&amp;quot;的路线，类似 World Labs + 优必选 / 宇树的组合。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/lin-junyang-135-startup-embodied-ai/imgs/china-embodied-ai-landscape.png&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://blog.ccino.org/p/lin-junyang-135-startup-embodied-ai/imgs/china-embodied-ai-landscape_hu_19218e1456e75268.png 480w, https://blog.ccino.org/p/lin-junyang-135-startup-embodied-ai/imgs/china-embodied-ai-landscape_hu_edfc65d4334b5af1.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;把这五家放到一起看，&lt;strong&gt;中国具身智能已经形成&amp;quot;老牌上市公司（优必选）+ 独角兽（智元、银河通用、宇树）+ 新晋玩家（林俊旸）&amp;ldquo;的完整梯队&lt;/strong&gt;。下一个 18 个月，谁先拿出&amp;quot;可量产、可商业化、有人买单&amp;quot;的具身智能产品，谁就可能拿到下一代 AI 门票。&lt;/p&gt;
&lt;h2 id=&#34;18-个月的窗口从阿里少林寺到开宗立派&#34;&gt;18 个月的窗口：从阿里少林寺到开宗立派
&lt;/h2&gt;&lt;p&gt;林俊旸的 135 亿估值是荣耀，也是枷锁。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;18 个月是这类公司的生死线。&lt;/strong&gt; 国内一级市场对 AI 创业者的耐心非常有限。参考 DeepSeek 梁文锋 2024 年 5 月融资 8 亿美元、2025 年估值翻倍的时间线；月之暗面杨植麟 2024 年完成 A 轮、2025 年底估值 200 亿美元。如果林俊旸在 18 个月内拿不出&amp;quot;被市场认可的技术成果或商业落地&amp;rdquo;，135 亿估值就会从&amp;quot;信任票&amp;quot;变成&amp;quot;质疑票&amp;quot;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;技术路线选择窗口很窄。&lt;/strong&gt; 世界模型 + 具身大脑虽然是大方向，但具体走哪条技术分支，差异巨大。V-JEPA 路线（无监督视频预测）、Cosmos 路线（物理仿真训练）、World Labs 路线（3D 空间智能）、GR00T 路线（人形机器人基础模型）——任何一条路线都需要至少 12-18 个月的密集投入。林俊旸的团队规模、算力资源、合作伙伴将决定他能跑多快。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;算力和人才依然是瓶颈。&lt;/strong&gt; 按 CnTechPost 的提醒，国内 AI 创业公司&amp;quot;在探索商业化路径的同时，必须应对高端 GPU 算力短缺、与科技巨头的激烈竞争等现实问题&amp;quot;。这不只是林俊旸的问题，是中国整个具身智能产业的问题。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;世界模型和具身智能不是两件事。&lt;/strong&gt; 把这两件事分开讨论容易，做出来才知道它们必须长在一起。世界模型负责&amp;quot;想象&amp;quot;，AI 在脑子里预演未来 5 秒会发生什么；具身大脑负责&amp;quot;执行&amp;quot;，把想象中的动作序列转换成真实世界的控制信号。一个能思考但不能动的 AI 是聊天机器人；一个能行动但不能预测的 AI 是工业机械臂。林俊旸真正要做的，是把这两件事缝合成一个系统，让机器人第一次具备了&amp;quot;想象 + 行动&amp;quot;的连续能力。&lt;/p&gt;
&lt;p&gt;这条路线如果跑通，意义不只是林俊旸的 135 亿估值变成 500 亿。它意味着中国 AI 产业从&amp;quot;语言大模型 + 互联网入口&amp;quot;的旧范式，开始转向&amp;quot;世界模型 + 物理世界&amp;quot;的新范式。语言大模型在 chat 框里重新定义了信息获取；具身智能会在工厂、家、汽车、手术台重新定义&amp;quot;做事&amp;quot;。&lt;/p&gt;
&lt;p&gt;至于&amp;quot;第一场大考&amp;quot;会不会赢，还要看林俊旸能不能在接下来 18 个月里，把 135 亿估值的信任票兑现成&amp;quot;可量产、可商业化、有人买单&amp;quot;的具身智能产品。从阿里少林寺走出来的人不少，但能开宗立派的没几个。&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.theinformation.com/articles/former-alibaba-star-researcher-starts-new-ai-lab-seeks-2-billion-valuation&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;The Information: &lt;em&gt;Former Alibaba Star Researcher Starts New AI Lab, Seeks $2 Billion Valuation&lt;/em&gt;&lt;/a&gt; （5 月初）&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://cntechpost.com/2026/05/13/former-alibaba-ai-core-figure-lin-junyang-founds-new-lab-seeks-2-billion-valuation/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CnTechPost: &lt;em&gt;Former Alibaba AI core figure Lin Junyang founds new lab, seeks $2 billion valuation&lt;/em&gt;&lt;/a&gt; （5 月 13 日）&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.163.com/dy/article/KVGLC3TD0511ABV6.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;网易/新智元：&lt;em&gt;腾讯投了林俊旸 1.4 亿！前千问负责人创业，估值 135 亿&lt;/em&gt;&lt;/a&gt; （6 月 15 日）&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.zhihu.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;知乎热榜：优必选&amp;quot;机器人伴侣&amp;quot;10 天预售 3800 台&lt;/a&gt; （2026 年 6 月）&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ai.meta.com/research/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Meta AI Research: V-JEPA 论文与项目&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://deepmind.google/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google DeepMind: Genie 项目主页&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.nvidia.com/en-us/cosmos/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NVIDIA: Cosmos World Foundation Model 平台&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.worldlabs.ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;World Labs: Spatial Intelligence 官网&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.gov.cn/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;国务院：《&amp;ldquo;机器人+&amp;ldquo;应用行动实施方案》&lt;/a&gt; （2026 年 1 月）&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.qcc.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;林俊旸注册企业信息：企查查 / 天眼查公开记录&lt;/a&gt; （2026 年 5-6 月）&lt;/li&gt;
&lt;/ul&gt;

    &lt;blockquote&gt;
        &lt;p&gt;以上来源用于观察林俊旸创业事件、融资结构和中国具身智能产业格局，不构成对各方未来业绩的独立预测。具体融资金额、估值、股权比例等信息以正式公告为准。&lt;/p&gt;

    &lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>阿里 Qoder 工程师亲述：当 Token 不再稀缺，瓶颈怎么跑到了「人」身上？</title>
        <link>https://blog.ccino.org/p/alibaba-qoder-cloud-agents-token-to-human-bottleneck-2026/</link>
        <pubDate>Sun, 14 Jun 2026 09:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/alibaba-qoder-cloud-agents-token-to-human-bottleneck-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/alibaba-qoder-cloud-agents-token-to-human-bottleneck-2026/imgs/cover.jpeg" alt="Featured image of post 阿里 Qoder 工程师亲述：当 Token 不再稀缺，瓶颈怎么跑到了「人」身上？" /&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/alibaba-qoder-cloud-agents-token-to-human-bottleneck-2026/imgs/cover.jpeg&#34;
	width=&#34;1792&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://blog.ccino.org/p/alibaba-qoder-cloud-agents-token-to-human-bottleneck-2026/imgs/cover_hu_7fbdaaa960d62fa9.jpeg 480w, https://blog.ccino.org/p/alibaba-qoder-cloud-agents-token-to-human-bottleneck-2026/imgs/cover_hu_8e1814954c5ccf88.jpeg 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;阿里 Qoder 工程师亲述：当 Token 不再稀缺，瓶颈怎么跑到了「人」身上？&#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;最近 BestBlogs 上有一篇文章冲到了 91 分的高位，作者是阿里技术的工程师，主题是「Qoder 工程实践：当瓶颈从模型转移到人」。这篇文章和我之前在选题阶段分享的内容高度一致，但它把整段演进路径讲透了。&lt;/p&gt;
&lt;p&gt;如果只看结论，工程界会把它当成又一个「AI 编程进阶指南」。但如果顺着作者的演进路径读，会发现一个反直觉的事实：&lt;strong&gt;当 AI 越来越便宜、越来越能干时，最先撑不住的反而是资深工程师自己&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这篇文章想做的，不是重复作者的演进路径，而是把那个反直觉的事实拆开，并补充三个关键判断：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;为什么「Token 加速，人反而崩溃」是 2026 年 AI 编程的隐藏天花板？&lt;/li&gt;
&lt;li&gt;「手脑分离」Cloud Agents 平台的设计哲学为什么比 Claude Code Dynamic Workflows 更接地气？&lt;/li&gt;
&lt;li&gt;三个工程约束（Session 可恢复 + Sandbox 可替换 + Harness 无状态）为什么是「睡后 Token 持续流动」的硬性前提？&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;下面进入正文。&lt;/p&gt;
&lt;h2 id=&#34;一阿里-qoder-的演进路径从-cursor-到-cloud-agents&#34;&gt;一、阿里 Qoder 的演进路径：从 Cursor 到 Cloud Agents
&lt;/h2&gt;&lt;p&gt;阿里 Qoder 团队的演进路径，恰好覆盖了过去 18 个月 AI 编程工具的主流形态。&lt;/p&gt;
&lt;h3 id=&#34;1-阶段一cursor-辅助打字人在回路&#34;&gt;1. 阶段一：Cursor 辅助打字（人在回路）
&lt;/h3&gt;&lt;p&gt;这是 2024 年的标准形态。开发者在编辑器里写代码，AI 辅助补全、生成小段函数、改写注释。人在每一个 token 上做决策，AI 只是更聪明的自动补全（autocomplete）。&lt;/p&gt;
&lt;p&gt;这个阶段的瓶颈模型很清楚：&lt;strong&gt;模型越强，写得越快&lt;/strong&gt;。瓶颈在模型的代码能力上。&lt;/p&gt;
&lt;h3 id=&#34;2-阶段二cli-agent-自主执行人去监督&#34;&gt;2. 阶段二：CLI Agent 自主执行（人去监督）
&lt;/h3&gt;&lt;p&gt;到了 2025 年，Claude Code、Codex、Aider 这类 CLI Agent（命令行智能体）开始普及。开发者不再一行行写代码，而是给 Agent 一个目标，让它自主完成多步骤任务。Agent 自己读仓库、写代码、跑命令、提 PR。&lt;/p&gt;
&lt;p&gt;这个阶段的人机分工变了：&lt;strong&gt;人是 supervisor（监督者），Agent 是执行者&lt;/strong&gt;。Agent 越强，单任务的产出越高。&lt;/p&gt;
&lt;h3 id=&#34;3-阶段三多终端并发token-在加速人开始崩溃&#34;&gt;3. 阶段三：多终端并发（Token 在加速，人开始崩溃）
&lt;/h3&gt;&lt;p&gt;到了 2025 年底到 2026 年初，资深工程师开始尝试「多终端并发」：同时开 5 个、10 个 Agent 终端，让不同的 Agent 跑不同的子任务。&lt;/p&gt;
&lt;p&gt;这本来应该是产能爆炸的时刻。但阿里的工程师在文章里直接说了一句关键的话：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;Token 在加速，人反而开始崩溃。&amp;rdquo;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;为什么崩溃？因为多终端并发的真实体验是：&lt;strong&gt;1 个人盯 5 个 Agent 的体验，远差于 1 个人盯 1 个 Agent&lt;/strong&gt;。Agent 的产出虽然在指数级上升，但人作为 supervisor 的注意力带宽（attention bandwidth）是恒定的，你不比别人多一对眼睛，也不比别人多 8 小时工作时间。&lt;/p&gt;
&lt;p&gt;瓶颈模型在这个阶段发生了根本性的转移：&lt;strong&gt;从模型能力，转移到了人的注意力&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id=&#34;4-阶段四手脑分离cloud-agents-平台&#34;&gt;4. 阶段四：「手脑分离」Cloud Agents 平台
&lt;/h3&gt;&lt;p&gt;阿里 Qoder 团队给出的解法是「手脑分离」。&lt;/p&gt;
&lt;p&gt;所谓「手」，是执行：写代码、跑命令、读文件、提 PR。
所谓「脑」，是判断：设计架构、决定边界、验证结果、定义意图。&lt;/p&gt;
&lt;p&gt;过去的 AI 编程模式里，人既要当「脑」又要当「手」：一边设计任务，一边盯 Agent 执行，一边验证结果。Agent 一多，「脑」就开始分心，「手」就开始混乱。&lt;/p&gt;
&lt;p&gt;「手脑分离」的模式是：&lt;strong&gt;人专注「脑」，只做架构设计、意图表达、关键验证；「手」交给 Cloud Agents 平台全权处理&lt;/strong&gt;。Cloud Agents 平台在背后 24 小时跑，把「手」的工作做完，人只在关键节点介入。&lt;/p&gt;
&lt;p&gt;这种模式的关键不是「让 Agent 更强」，而是「让人的注意力回到真正稀缺的事上」。&lt;/p&gt;
&lt;h2 id=&#34;二token-不再稀缺但注意力稀缺&#34;&gt;二、Token 不再稀缺，但注意力稀缺
&lt;/h2&gt;&lt;p&gt;「Token 不再稀缺」这句话放在 2024 年听起来像笑话，但放到 2026 年是事实。&lt;/p&gt;
&lt;p&gt;按公开数据，主流模型 API 价格在过去 18 个月下降了 60-80%。GPT-5.5、Gemini 3.1 Pro、Claude Opus 4.8 的每百万 token 输出价格都已经压到 10-20 美元区间。一个标准 AI 编程任务消耗的 token 成本，从 2024 年的几美元，下降到了 2026 年的几美分。&lt;/p&gt;
&lt;p&gt;但「人的注意力稀缺」这件事没有变化。一个资深工程师的有效深度工作时间（deep work），一天也就 4-6 小时。AI 可以 24 小时跑，人不行。&lt;/p&gt;
&lt;p&gt;阿里 Qoder 文章里那句「Token 在加速，人反而开始崩溃」，本质是在说：&lt;strong&gt;当一种生产要素的成本下降 80%，而另一种生产要素的成本不变，整个系统的瓶颈就会自动转移到后者身上&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;Token 价格下降后，AI 编程的瓶颈转移到了人的注意力&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;每一轮成本下降，都会暴露下一层瓶颈。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/alibaba-qoder-cloud-agents-token-to-human-bottleneck-2026/imgs/attention-bottleneck.jpeg&#34;
	width=&#34;1792&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://blog.ccino.org/p/alibaba-qoder-cloud-agents-token-to-human-bottleneck-2026/imgs/attention-bottleneck_hu_5442d4a880771e91.jpeg 480w, https://blog.ccino.org/p/alibaba-qoder-cloud-agents-token-to-human-bottleneck-2026/imgs/attention-bottleneck_hu_46f9a518dfce24f8.jpeg 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Token 不再稀缺 vs 人的注意力稀缺：AI 编程的瓶颈转移&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;175&#34;
		data-flex-basis=&#34;420px&#34;
	
&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-过去人既是-architect-又是-operator&#34;&gt;1. 过去：人既是 architect 又是 operator
&lt;/h3&gt;&lt;p&gt;在传统软件工程里，一个人既是 architect（架构师）又是 operator（操作员）。架构设计、模块拆分、接口定义由同一个人完成，这个人还要负责具体的写代码、跑测试、修 bug。&lt;/p&gt;
&lt;p&gt;这个模式在 AI 时代变得不合理了，因为 AI 在「operator」这件事上的能力是指数级上升的。让一个资深工程师同时当 architect 和 operator，等于让梅西去守门。&lt;/p&gt;
&lt;h3 id=&#34;2-现在人只做-architectagent-负责-operator&#34;&gt;2. 现在：人只做 architect，Agent 负责 operator
&lt;/h3&gt;&lt;p&gt;「手脑分离」模式下，资深工程师的角色被重新定义为：&lt;strong&gt;intent designer + final reviewer（意图设计者 + 最终评审者）&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;intent designer 负责定义任务的目标、约束、边界，告诉 Agent &amp;ldquo;我要一个支持 OAuth 2.0 的登录模块，输入输出契约是 X，错误处理按 Y 标准&amp;rdquo;。
final reviewer 负责在 Agent 完成之后做关键路径的最终验证：读代码、跑测试、确认行为是否符合预期。&lt;/p&gt;
&lt;p&gt;中间的「执行」全交给 Agent。&lt;/p&gt;
&lt;h3 id=&#34;3-cloud-agents-平台的核心特征&#34;&gt;3. Cloud Agents 平台的核心特征
&lt;/h3&gt;&lt;p&gt;阿里 Qoder 团队的 Cloud Agents 平台有几个值得注意的特征：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Agent 是常驻的，不是临时的&lt;/strong&gt;：用户下班后，Agent 继续跑，第二天上班看结果&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;任务是可以累积的&lt;/strong&gt;：Agent 在跑的过程中，把中间成果保存到云端，换个 Agent 接续也能继续&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;人是异步参与的&lt;/strong&gt;：人不需要实时盯 Agent，只在关键节点（设计、验证）介入&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些特征和 Claude Code Dynamic Workflows 的「同步编排」模式形成对照。Dynamic Workflows 是「人下令、Agent 同步执行、人等结果」，Cloud Agents 是「人下令、Agent 异步执行、人在任意时间介入」。&lt;/p&gt;
&lt;p&gt;两者适用场景不同：Dynamic Workflows 适合需要强反馈回路的复杂任务，Cloud Agents 适合可以后台跑、不需要实时干预的任务。&lt;/p&gt;
&lt;h2 id=&#34;四三个工程约束睡后-token-持续流动的硬性前提&#34;&gt;四、三个工程约束：睡后 Token 持续流动的硬性前提
&lt;/h2&gt;&lt;p&gt;阿里 Qoder 团队在文章里给出了一个非常具体的结论：&lt;strong&gt;让「睡后 Token 持续流动」需要 Session 可恢复、Sandbox 可替换、Harness 无状态三者同时成立&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这三个约束缺一不可，是 Cloud Agents 平台的底层架构要求。下面拆开讲。&lt;/p&gt;
&lt;h3 id=&#34;1-session-可恢复&#34;&gt;1. Session 可恢复
&lt;/h3&gt;&lt;p&gt;含义：Agent 在执行过程中，可能因为各种原因（网络断、Token 用完、上下文超限、机器重启）中断。中断之后，重新启动一个新的 Agent 接续，必须能从中断点继续，而不是从零开始。&lt;/p&gt;
&lt;p&gt;为什么重要：Agent 跑的任务通常跨几个小时甚至几天。如果不能恢复，每次中断就意味着之前的工作全部作废，Token 浪费且任务无法完成。&lt;/p&gt;
&lt;p&gt;实现要点：把 Agent 的中间状态（思考链、工具调用记录、文件变更历史）持久化到云端，让任何后续 Agent 都能读取。&lt;/p&gt;
&lt;h3 id=&#34;2-sandbox-可替换&#34;&gt;2. Sandbox 可替换
&lt;/h3&gt;&lt;p&gt;含义：Agent 的执行环境（沙箱，sandbox）可替换，可以是本地 Docker 容器、远程虚拟机、临时云函数，不同 Agent 任务可以跑在不同的沙箱里。&lt;/p&gt;
&lt;p&gt;为什么重要：单个沙箱的资源有限，而且有崩溃风险。任务能切换沙箱，意味着 Agent 不会因为「我这台机器满了」或「这台机器挂了」而失败。&lt;/p&gt;
&lt;p&gt;实现要点：把 Agent 的所有依赖（代码、配置、运行时环境）都容器化或脚本化，让新沙箱能在几分钟内复现完整环境。&lt;/p&gt;
&lt;h3 id=&#34;3-harness-无状态&#34;&gt;3. Harness 无状态
&lt;/h3&gt;&lt;p&gt;含义：Harness（包裹 Agent 的运行时框架）本身不持有状态，所有状态都在外部存储（云端数据库、对象存储）。Harness 进程可以随时重启、迁移、扩容，不影响 Agent 任务的连续性。&lt;/p&gt;
&lt;p&gt;为什么重要：如果 Harness 持有状态，那每次 Harness 重启都会打断 Agent 任务。把状态外置后，Harness 变成「无状态服务」，可以随时扩容、迁移、替换。&lt;/p&gt;
&lt;p&gt;实现要点：Harness 只做调度、分发、监控的逻辑层，所有持久化数据走外部存储。&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;Session 可恢复&lt;/strong&gt;保证任务不丢失&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sandbox 可替换&lt;/strong&gt;保证执行不中断&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Harness 无状态&lt;/strong&gt;保证调度不卡顿&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;三者同时成立，「睡后 Token 持续流动」才有可能：Token 才能在你睡觉的时候继续被消耗、被产出价值。&lt;/p&gt;
&lt;p&gt;如果只满足其中 1-2 个，Cloud Agents 平台就会在某个边缘场景崩塌。这也是为什么国内大厂做 Cloud Agents 的进展普遍慢于国际厂商。这三个工程约束背后，是对云原生架构、状态管理、容器编排的深度积累。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/alibaba-qoder-cloud-agents-token-to-human-bottleneck-2026/imgs/three-constraints.jpeg&#34;
	width=&#34;1792&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://blog.ccino.org/p/alibaba-qoder-cloud-agents-token-to-human-bottleneck-2026/imgs/three-constraints_hu_7e3209263d6afd7d.jpeg 480w, https://blog.ccino.org/p/alibaba-qoder-cloud-agents-token-to-human-bottleneck-2026/imgs/three-constraints_hu_e35653d6f603e691.jpeg 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;三个工程约束的闭环：Session &amp;#43; Sandbox &amp;#43; Harness&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;175&#34;
		data-flex-basis=&#34;420px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;五skill-沉淀的复利效应&#34;&gt;五、Skill 沉淀的复利效应
&lt;/h2&gt;&lt;p&gt;阿里 Qoder 文章里还有一个容易被忽略的论点：&lt;strong&gt;个人沉淀的 Skill 从本地脚本变成团队可订阅的云端服务，才是真正的效率复利&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id=&#34;1-个人时代的-skill&#34;&gt;1. 个人时代的 Skill
&lt;/h3&gt;&lt;p&gt;2024-2025 年，每个 AI 编程重度用户都有自己的「Skill 库」：自己写的 prompt 模板、自己调的 IDE 配置、自己总结的 Claude Code 技巧。这些 Skill 沉淀在本地，只能自己用。&lt;/p&gt;
&lt;h3 id=&#34;2-团队时代的-skill&#34;&gt;2. 团队时代的 Skill
&lt;/h3&gt;&lt;p&gt;到了 Cloud Agents 时代，Skill 必须从本地迁移到云端，成为团队可订阅的服务。&lt;/p&gt;
&lt;p&gt;举例：你在 Qoder 平台上调好了一个「自动重构遗留代码」的 Agent 配置，沉淀为一个 Skill。这个 Skill 应该可以被团队成员一键订阅，他们不需要自己调，直接用你调好的版本。&lt;/p&gt;
&lt;p&gt;更进一步，这个 Skill 应该可以被组织级订阅，整个部门、整个公司都能用。当某个工程师调出一个特别好的 Skill，所有相关项目都能立刻受益。&lt;/p&gt;
&lt;h3 id=&#34;3-复利的来源&#34;&gt;3. 复利的来源
&lt;/h3&gt;&lt;p&gt;Skill 沉淀的复利，来自于&lt;strong&gt;乘数效应&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;个人 Skill 的价值 = 1 个人的效率提升&lt;/li&gt;
&lt;li&gt;团队 Skill 的价值 = N 个人的效率提升 + Skill 之间的组合复用&lt;/li&gt;
&lt;li&gt;组织 Skill 的价值 = 整个公司的 AI 编程基线被抬高&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;阿里 Qoder 团队的判断是：&lt;strong&gt;当 Skill 沉淀到云端变成可订阅服务，AI 编程的效率复利才真正开始&lt;/strong&gt;。之前的「Skill」只是个人玩具，之后的「Skill」是组织资产。&lt;/p&gt;
&lt;p&gt;这件事和软件工程史上「代码复用」的演进路径很像，从个人函数库，到团队共享库，到开源组件库。Skill 沉淀正在走同样的路。&lt;/p&gt;
&lt;h2 id=&#34;六对比-claude-code-dynamic-workflows两条路&#34;&gt;六、对比 Claude Code Dynamic Workflows：两条路
&lt;/h2&gt;&lt;p&gt;阿里 Qoder 的「手脑分离」Cloud Agents 平台，和 Anthropic 6 月 2 日发布的 Claude Code Dynamic Workflows，是两种不同的 AI 编程组织模式。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/alibaba-qoder-cloud-agents-token-to-human-bottleneck-2026/imgs/cloud-agents-vs-dynamic-workflows.jpeg&#34;
	width=&#34;1792&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://blog.ccino.org/p/alibaba-qoder-cloud-agents-token-to-human-bottleneck-2026/imgs/cloud-agents-vs-dynamic-workflows_hu_a25aa25b541d58f7.jpeg 480w, https://blog.ccino.org/p/alibaba-qoder-cloud-agents-token-to-human-bottleneck-2026/imgs/cloud-agents-vs-dynamic-workflows_hu_b4b584bfbe8772d8.jpeg 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;国际 vs 国内：两种 AI 编程组织模式&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;175&#34;
		data-flex-basis=&#34;420px&#34;
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;1-dynamic-workflows临时组织&#34;&gt;1. Dynamic Workflows：临时组织
&lt;/h3&gt;&lt;p&gt;Anthropic 的 Dynamic Workflows 是「按任务临时组建组织」。每次跑一个 workflow，Claude 现场生成一段 JavaScript 脚本，编排多个 subagent 并行处理任务。&lt;/p&gt;
&lt;p&gt;适合场景：单次、复杂、需要强反馈回路的任务。比如代码审计、大型迁移、跨系统的研究。&lt;/p&gt;
&lt;h3 id=&#34;2-cloud-agents常驻异步&#34;&gt;2. Cloud Agents：常驻异步
&lt;/h3&gt;&lt;p&gt;阿里 Qoder 的 Cloud Agents 是「常驻异步执行」。Agent 是平台上的常驻服务，用户提交任务后，Agent 在后台异步执行，人在任意时间介入。&lt;/p&gt;
&lt;p&gt;适合场景：长周期、不需要实时反馈的任务。比如批量代码生成、自动化重构、夜间构建。&lt;/p&gt;
&lt;h3 id=&#34;3-两者不冲突是互补&#34;&gt;3. 两者不冲突，是互补
&lt;/h3&gt;&lt;p&gt;这两种模式不冲突，更可能是互补关系。Dynamic Workflows 解决「这一次任务的最优执行」，Cloud Agents 解决「这一类任务的持续执行」。&lt;/p&gt;
&lt;p&gt;未来成熟的 AI 编程平台，大概率会同时提供这两种能力：Dynamic Workflows 跑一次性任务，Cloud Agents 跑持续性任务。阿里 Qoder 在国内走通了 Cloud Agents 这条路，Anthropic 在国际走通了 Dynamic Workflows 那条路。&lt;/p&gt;
&lt;p&gt;对中国开发者来说，Qoder 的路径可能更接地气：阿里大厂内部对云原生、容器编排、状态管理的积累是国内最深的，他们踩过的坑、总结的工程约束，是中国其他公司可以直接复用的经验。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;结尾当瓶颈转移到人工程师的角色怎么变&#34;&gt;结尾：当瓶颈转移到人，工程师的角色怎么变
&lt;/h2&gt;&lt;p&gt;回到文章开头的问题：&lt;strong&gt;当 Token 不再稀缺，瓶颈怎么跑到了「人」身上？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;阿里 Qoder 团队的回答是：&lt;strong&gt;不是瓶颈跑到了人身上，而是「人」的定义变了&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;过去的「人」是 architect + operator 的复合体，既要想又要做。AI 时代，operator 被 Agent 接管，「人」只剩 architect。这不是降级，是聚焦，人终于可以只做最稀缺的事：判断、定义、验证。&lt;/p&gt;
&lt;p&gt;这件事对工程师的实际影响是：&lt;strong&gt;未来 12-24 个月，最值钱的工程师不是 prompt 写得最花哨的，而是「架构判断力」最强、「意图定义能力」最清晰的&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;技术细节可以交给 Agent，但「这个任务到底要不要做」「这件事到底值不值得做」「这个方案到底对不对」，这些判断仍然只能由人来做。&lt;/p&gt;
&lt;p&gt;阿里 Qoder 文章的真正价值，不是给出了「手脑分离」这个具体方案，而是把 AI 编程的瓶颈转移讲清楚了：&lt;strong&gt;当一种生产要素的成本归零，下一种瓶颈就会自动暴露。2024 年瓶颈是模型，2025 年瓶颈是工具，2026 年瓶颈是人的注意力。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;下一个问题更尖锐：&lt;strong&gt;当注意力瓶颈被 Cloud Agents 解决之后，下一个瓶颈是什么？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;我没有答案。但阿里 Qoder 这篇文章，至少让我们看清了从 2024 到 2026 这三年的瓶颈迁移路径。&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.yumiok.com/archives/6412.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;阿里 Qoder Cloud Agents 上线：全托管 Agent 平台，上线周期从 30 天缩至 1 天 - 玉米小站&lt;/a&gt;（2026-05-28 阿里智能引擎团队发布 Cloud Agents 的详细报道）&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://news.aibase.com/zh/news/28427&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;阿里 Qoder 推出全托管平台 Cloud Agents，实现 AI Agent 一天内快速上线 - AIBase&lt;/a&gt;（同期媒体报道）&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://qoder.mintlify.app/zh/cloud-agents/overview&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Qoder Cloud Agents 概览 - Qoder 官方文档&lt;/a&gt;（Agent / Environment / Session / Event 概念定义）&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.qoder.com/zh/cli/sdk/cloud-agent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Cloud Agent SDK 文档 - Qoder 官方&lt;/a&gt;（Session 复用 + SSE 事件流的实现细节）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上来源用于了解阿里 Qoder 团队 2026 年 5 月发布的 Cloud Agents 产品形态（Agent + Environment + Session + Skills + MCP 协议 + SSE 事件流）。本文中关于「手脑分离」「Session 可恢复 + Sandbox 可替换 + Harness 无状态三约束」「Skill 沉淀从本地脚本到团队可订阅云端服务」等论点，是作者基于公开产品文档做的工程层推演，不等同于阿里 Qoder 内部官方表述。&lt;/p&gt;
&lt;p&gt;具体细节（Cursor → CLI Agent → 多终端 → Cloud Agents 的演进时间线、三个工程约束的命名）可能与阿里 Qoder 团队内部最新实践存在出入，请以阿里官方发布为准。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>OpenAI 拿下 1220 亿融资：AI 资本军备赛到了哪一站？</title>
        <link>https://blog.ccino.org/p/openai-1220-financing-8520-valuation-2026/</link>
        <pubDate>Sun, 14 Jun 2026 08:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/openai-1220-financing-8520-valuation-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/openai-1220-financing-8520-valuation-2026/imgs/cover.jpeg" alt="Featured image of post OpenAI 拿下 1220 亿融资：AI 资本军备赛到了哪一站？" /&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/openai-1220-financing-8520-valuation-2026/imgs/cover.jpeg&#34;
	width=&#34;1792&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://blog.ccino.org/p/openai-1220-financing-8520-valuation-2026/imgs/cover_hu_873e68c19b5c9a03.jpeg 480w, https://blog.ccino.org/p/openai-1220-financing-8520-valuation-2026/imgs/cover_hu_a6573931fc22cd2d.jpeg 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;OpenAI 拿下 1220 亿融资：AI 资本军备赛到了哪一站？&#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;6 月 12 日晚些时候，36 氪头条挂出一条几乎让所有 AI 从业者屏息的消息：OpenAI 完成单轮 1220 亿美元融资，估值推到 8520 亿美元。&lt;/p&gt;
&lt;p&gt;如果只看数字，1220 亿已经超出&amp;quot;震撼&amp;quot;的范畴。三年前人类历史上最大单轮私募也不过 100 亿美元上下，OpenAI 一轮干掉了过去所有纪录，再放大一个数量级。估值 8520 亿，距万亿只差一步之遥，而 OpenAI 这家公司成立至今刚满十年。&lt;/p&gt;
&lt;p&gt;但本文想说的，不是&amp;quot;OpenAI 又赢了&amp;quot;。&lt;/p&gt;
&lt;p&gt;我想顺着这条新闻往下追问三个更值得回答的问题：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;1220 亿这个数字到底意味着什么，它在融资史上排到什么位置？&lt;/li&gt;
&lt;li&gt;谁在掏这笔钱，亚马逊、英伟达、软银、ARK（Ark Invest，方舟投资）四股力量为什么会在 2026 年 6 月同时进场？&lt;/li&gt;
&lt;li&gt;当二级市场（ARK ETF 首次装入非上市 OpenAI）和一级市场（私募 1220 亿）同时给一家公司定下&amp;quot;万亿倒计时&amp;quot;，整个 AI 行业的资本逻辑是不是已经被改写了？&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;下面我们一一拆开。&lt;/p&gt;
&lt;h2 id=&#34;一1220-亿在融资史上排到什么位置&#34;&gt;一、1220 亿在融资史上排到什么位置
&lt;/h2&gt;&lt;p&gt;先把数字放回历史坐标里看。&lt;/p&gt;
&lt;h3 id=&#34;1-单轮私募从-100-亿到-1220-亿的量级跃迁&#34;&gt;1. 单轮私募：从 100 亿到 1220 亿的量级跃迁
&lt;/h3&gt;&lt;p&gt;过去十年，&amp;ldquo;大额融资&amp;quot;的标准一直在涨。2016 年前后，滴滴、Uber 的单轮融资能到 30-50 亿美元，已经被叫作&amp;quot;巨型轮&amp;rdquo;。2021 年蚂蚁集团暂缓 IPO 前，市场曾经讨论过单轮 100 亿美元的&amp;quot;理论上限&amp;quot;。&lt;/p&gt;
&lt;p&gt;OpenAI 这次直接把这个上限拉到了 1220 亿。&lt;/p&gt;
&lt;p&gt;按 36 氪的整理，这一轮最初在 2026 年 2 月公布时承诺金额是 1100 亿美元，最终收盘时多出了 120 亿，说明后来跟进的机构比预期的还多。这背后不只是&amp;quot;OpenAI 太值钱&amp;quot;这么简单，而是 AI 这个赛道本身的资金容量被重新估了一遍。&lt;/p&gt;
&lt;h3 id=&#34;2-ipo-规模对比1220-亿私募--阿里-2014-ipo-的三倍&#34;&gt;2. IPO 规模对比：1220 亿私募 ≈ 阿里 2014 IPO 的三倍
&lt;/h3&gt;&lt;p&gt;SpaceX 在 6 月 13 日完成的 750 亿美元 IPO，被多家媒体称为&amp;quot;人类史上最大 IPO&amp;quot;，规模大约是 2014 年阿里巴巴上市时的三倍。&lt;/p&gt;
&lt;p&gt;但 OpenAI 这一轮私募是 1220 亿，比 SpaceX 的 IPO 还多出近 500 亿。换句话说，一家没上市的 AI 公司，单靠私募就拿到的钱，已经超过了人类史上最大 IPO 的募资规模。&lt;/p&gt;
&lt;p&gt;资本市场对&amp;quot;AI 公司&amp;quot;和&amp;quot;传统公司&amp;quot;的定价，正在按完全不同的逻辑走。&lt;/p&gt;
&lt;h3 id=&#34;3-估值倍数5000-万付费用户撑起-8520-亿估值&#34;&gt;3. 估值倍数：5000 万付费用户撑起 8520 亿估值
&lt;/h3&gt;&lt;p&gt;按 OpenAI 公开过的口径：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;每周活跃用户接近 9 亿&lt;/li&gt;
&lt;li&gt;付费用户超过 5000 万&lt;/li&gt;
&lt;li&gt;2025 年全年营收 131 亿美元&lt;/li&gt;
&lt;li&gt;单月进账最高 20 亿美元&lt;/li&gt;
&lt;li&gt;企业服务已经占总营收的 40% 以上，预计到 2026 年底会和消费者端打平&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;8520 亿估值，对应 131 亿年营收，市销率（P/S）大约是 65 倍。这个数字放到传统 SaaS 公司身上（典型 P/S 在 10-20 倍）几乎不可想象，但放到头部 AI 公司身上，已经是行业共识。&lt;/p&gt;
&lt;p&gt;也就是说，市场不是按&amp;quot;OpenAI 现在的营收&amp;quot;在定价，而是按&amp;quot;OpenAI 在 AI 时代的最终份额&amp;quot;在定价。&lt;/p&gt;
&lt;h2 id=&#34;二谁在买为什么买四股力量的协同&#34;&gt;二、谁在买、为什么买：四股力量的协同
&lt;/h2&gt;&lt;p&gt;1220 亿的出资方里，最值得关注的是四股力量：亚马逊、英伟达、软银、ARK Invest（方舟投资）。它们各自有不同的算盘，但 2026 年 6 月这件事让它们第一次站在了同一份出资人名单上。&lt;/p&gt;
&lt;h3 id=&#34;1-亚马逊500-亿美元买的是云时代的话语权&#34;&gt;1. 亚马逊：500 亿美元，买的是云时代的话语权
&lt;/h3&gt;&lt;p&gt;亚马逊出资 500 亿，是本轮最大单一出资方。&lt;/p&gt;
&lt;p&gt;亚马逊的核心业务逻辑是 AWS（Amazon Web Services，亚马逊云计算服务）。AWS 的长期护城河在于它是绝大多数创业公司的默认云供应商，OpenAI 也是 AWS 的大客户。这一轮 500 亿，相当于把&amp;quot;客户关系&amp;quot;升级成&amp;quot;股东关系&amp;quot;。&lt;/p&gt;
&lt;p&gt;对亚马逊来说，这笔钱换来的是 AWS 与 OpenAI 的深度绑定（模型托管、推理算力、企业服务），同时在 Anthropic 之外再押一条主力模型路线，对冲&amp;quot;单押 Anthropic&amp;quot;的风险。在 AI 时代继续当&amp;quot;卖铲人&amp;quot;（卖算力、卖云、卖基础设施），而不是被模型公司反噬。&lt;/p&gt;
&lt;p&gt;500 亿对亚马逊来说不算伤筋动骨，但拿出来的信号很明确：AI 这件事值得亚马逊把最重要的现金储备押上去。&lt;/p&gt;
&lt;h3 id=&#34;2-英伟达300-亿美元ai-基建霸主反向收编头部模型&#34;&gt;2. 英伟达：300 亿美元，AI 基建霸主反向收编头部模型
&lt;/h3&gt;&lt;p&gt;英伟达出资 300 亿。&lt;/p&gt;
&lt;p&gt;英伟达过去几年的角色一直是&amp;quot;卖 GPU 给所有 AI 公司&amp;quot;，但 GPU 卖得越多，模型公司的话语权就越大，反过来对英伟达形成压力。直接投资 OpenAI，相当于把&amp;quot;卖铲人&amp;quot;身份升级为&amp;quot;股东 + 长期客户绑定&amp;quot;。&lt;/p&gt;
&lt;p&gt;更深一层，英伟达需要确保一件事：未来无论谁成为 AI 模型霸主，都得继续用英伟达的算力。投资 OpenAI 是给这个判断&amp;quot;上保险&amp;quot;。&lt;/p&gt;
&lt;h3 id=&#34;3-软银300-亿美元孙正义的ai-all-in&#34;&gt;3. 软银：300 亿美元，孙正义的&amp;quot;AI All In&amp;quot;
&lt;/h3&gt;&lt;p&gt;软银牵头 300 亿，和 a16z、D.E. Shaw 等机构联合领投。&lt;/p&gt;
&lt;p&gt;软银过去几年经历了 WeWork 估值塌方、愿景基金亏损，AI 是孙正义重新上牌桌的核心机会。从 ARM 上市到这次 300 亿，软银正在系统性地把所有筹码压向&amp;quot;AI 基础设施 + 头部模型公司&amp;quot;。&lt;/p&gt;
&lt;p&gt;对软银来说，OpenAI 不是一次财务投资，而是一次&lt;strong&gt;战略翻身&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id=&#34;4-ark-invest首次把-openai-装入-etf二级市场化的里程碑&#34;&gt;4. ARK Invest：首次把 OpenAI 装入 ETF，二级市场化的里程碑
&lt;/h3&gt;&lt;p&gt;这是本轮最值得展开的细节。&lt;/p&gt;
&lt;p&gt;ARK Invest 旗下规模 60 亿美元的旗舰创新 ETF（ETF，全称 Exchange-Traded Fund，即交易所交易基金）宣布纳入 OpenAI，持仓比例约 3%。这是该基金首次投资非上市公司。&lt;/p&gt;
&lt;p&gt;这件事的份量，远超 30 亿、60 亿这些数字本身。&lt;/p&gt;
&lt;p&gt;过去的逻辑是：私募基金投未上市公司，公募基金投上市公司，两者泾渭分明。ARK 把 OpenAI 装进 ETF，等于在二级市场（secondary market，即公开交易的股票市场）上给散户提供了一条&lt;strong&gt;间接持有 OpenAI&lt;/strong&gt;的通道。&lt;/p&gt;
&lt;p&gt;这条通道一旦被验证可行，后续会有更多资管机构跟进，把未上市的 AI 公司纳入 ETF 配置。OpenAI 只是个开始。&lt;/p&gt;
&lt;p&gt;更现实的信号是：当散户可以通过 ETF 间接持有 OpenAI，OpenAI 的估值就会被二级市场的资金持续抬高。1220 亿私募 + 8520 亿估值不会是终点，OpenAI 离万亿只差一次&amp;quot;二级市场定价权切换&amp;quot;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/openai-1220-financing-8520-valuation-2026/imgs/four-investor-alliance.jpeg&#34;
	width=&#34;1792&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://blog.ccino.org/p/openai-1220-financing-8520-valuation-2026/imgs/four-investor-alliance_hu_1c56608671601d46.jpeg 480w, https://blog.ccino.org/p/openai-1220-financing-8520-valuation-2026/imgs/four-investor-alliance_hu_daf3d85d156a00e5.jpeg 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;1220 亿的四股力量：亚马逊、英伟达、软银、ARK 协同&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;175&#34;
		data-flex-basis=&#34;420px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;三openai-自己靠什么撑起-8520-亿&#34;&gt;三、OpenAI 自己靠什么撑起 8520 亿
&lt;/h2&gt;&lt;p&gt;资本买的是未来，但未来需要基本面兑现。&lt;/p&gt;
&lt;p&gt;把上一节的&amp;quot;商业化基本盘&amp;quot;放回来：每周活跃用户接近 9 亿（ChatGPT + API + 嵌入式调用），付费用户超过 5000 万，2025 年全年营收 131 亿美元，单月最高营收 20 亿美元。这个基本盘比任何 AI 创业公司都厚得多。即使在最悲观的假设下（生成式 AI 增长见顶），OpenAI 凭借 ChatGPT 的存量用户 + 企业服务收入，依然能撑起一个&amp;quot;大型 SaaS（Software as a Service，软件即服务）公司&amp;quot;的基本盘。&lt;/p&gt;
&lt;p&gt;8520 亿估值，对应 131 亿年营收，市销率（Price-to-Sales，P/S）大约是 65 倍。这个倍数放到传统 SaaS 公司身上（典型 P/S 在 10-20 倍）几乎不可想象，但放到头部 AI 公司身上，已经是行业共识。也就是说，市场不是按&amp;quot;OpenAI 现在的营收&amp;quot;在定价，而是按&amp;quot;OpenAI 在 AI 时代的最终份额&amp;quot;在定价。&lt;/p&gt;
&lt;h3 id=&#34;1-企业服务下一个增长引擎&#34;&gt;1. 企业服务：下一个增长引擎
&lt;/h3&gt;&lt;p&gt;企业服务已经占到 OpenAI 总营收的 40% 以上，预计到 2026 年底会和消费者端打平。&lt;/p&gt;
&lt;p&gt;这意味着 OpenAI 已经成功从&amp;quot;消费者爆款&amp;quot;过渡到&amp;quot;企业基础设施&amp;quot;。对企业客户来说，OpenAI 提供的不是&amp;quot;聊天机器人&amp;quot;，而是模型 API、Agent 框架、定制微调、合规审计、推理优化，这些是高粘性、高客单价、高续约率的业务。&lt;/p&gt;
&lt;p&gt;8520 亿的估值里，相当一部分是给&amp;quot;企业服务护城河&amp;quot;的定价。&lt;/p&gt;
&lt;h3 id=&#34;2-一个反常的信号sora-关停&#34;&gt;2. 一个反常的信号：Sora 关停
&lt;/h3&gt;&lt;p&gt;《华尔街日报》近期报道，OpenAI 关停 Sora 只是开始，内部还在审视其他花钱多、回报慢的方向，准备进一步收缩。&lt;/p&gt;
&lt;p&gt;这条消息听起来和&amp;quot;1220 亿融资&amp;quot;是矛盾的，但放在一起看才合理：OpenAI 不再追求&amp;quot;成为一家什么都做的 AI 公司&amp;quot;，而是要成为&amp;quot;AI 时代的操作系统&amp;quot;。&lt;/p&gt;
&lt;p&gt;关停 Sora、把算力集中到文本模型、代码生成、企业服务，这些动作的核心是&lt;strong&gt;战略收缩&lt;/strong&gt;：砍掉所有不直接产生稳定现金流的方向，把钱花在能撑起万亿估值的主航道上。&lt;/p&gt;
&lt;p&gt;资本市场对&amp;quot;收缩的 AI 公司&amp;quot;反而给出了更高估值，因为收缩意味着资本效率提升、估值倍数合理化。&lt;/p&gt;
&lt;h2 id=&#34;四ai-资本军备赛到了哪一站&#34;&gt;四、AI 资本军备赛到了哪一站
&lt;/h2&gt;&lt;p&gt;回到标题里的问题。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/openai-1220-financing-8520-valuation-2026/imgs/capital-arms-race-stages.jpeg&#34;
	width=&#34;1792&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://blog.ccino.org/p/openai-1220-financing-8520-valuation-2026/imgs/capital-arms-race-stages_hu_359eabca7853d62e.jpeg 480w, https://blog.ccino.org/p/openai-1220-financing-8520-valuation-2026/imgs/capital-arms-race-stages_hu_67012a22538eb4f6.jpeg 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;AI 资本军备赛的三阶段：从模型竞争到二级市场化&#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;把 OpenAI 1220 亿融资放回 AI 行业的资本曲线里看，它不是&amp;quot;AI 资本军备赛的终点&amp;quot;，而是另一个阶段的起点。&lt;/p&gt;
&lt;p&gt;如果用三句话概括：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;AI 资本军备赛的上半场是&amp;quot;模型公司之间的竞争&amp;quot;&lt;/strong&gt;——OpenAI vs Anthropic vs Google DeepMind vs xAI，谁的模型更强、谁的用户更多。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI 资本军备赛的中场是&amp;quot;模型公司与云、芯片、资本的三方联盟&amp;quot;&lt;/strong&gt;——本轮融资的出资方（亚马逊、英伟达、软银、ARK）刚好覆盖了&amp;quot;云 + 芯片 + 资本&amp;quot;三条主线，AI 公司和上游供应商的利益被深度绑定。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI 资本军备赛的下半场可能是&amp;quot;二级市场对未上市 AI 公司的定价权争夺&amp;quot;&lt;/strong&gt;——ARK ETF 首次纳入 OpenAI 是个信号，未来会有更多资管机构把未上市的 AI 头部公司纳入 ETF 组合，AI 公司的估值锚会从&amp;quot;私募轮估值&amp;quot;漂移到&amp;quot;ETF 持仓权重 + 散户买入量&amp;quot;。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;ldquo;资本军备赛&amp;quot;和&amp;quot;二级市场化&amp;quot;在这里的关系可以再讲清楚一点：上半场各家模型公司拼的是产品力（融资烧在算力和人才上），中场开始拼的是上下游联盟（谁能把云、芯片、资本绑定成长期利益），下半场开始拼的是谁能在公开市场上拿到散户的钱（ETF + 散户定价权）。OpenAI 拿下 1220 亿这一轮真正的意义，不在于数字本身，而在于它把&amp;quot;AI 资本军备赛&amp;quot;从中场推向了下半场——也就是从&amp;quot;找几个大佬签支票&amp;quot;变成了&amp;quot;让全球散户的钱也能成为 AI 公司的燃料&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;而对从业者来说，更现实的问题是：当 OpenAI 已经 8520 亿估值、亚马逊英伟达软银深度绑定、AI 二级市场正在形成——留给&amp;quot;独立 AI 模型公司&amp;quot;独立长大的窗口期还有多长？&lt;/p&gt;
&lt;p&gt;这个问题没有答案。但 6 月 12 日这一天，是这个答案开始被认真讨论的起点。&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/p/3747433473606407&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI 创下史上最大融资纪录，估值逼近万亿 - 36 氪&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.163.com/dy/article/KVBLFSHA05198CJN.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SpaceX 超级 IPO 落幕！马斯克成为万亿富豪 - 网易&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;OpenAI 公开数据：每周活跃用户、付费用户、营收、企业服务占比（综合 36 氪、《华尔街日报》近期报道）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上来源用于观察 OpenAI 融资事件的发布口径与社区反馈，不等同于独立财务审计。文中具体数字（1220 亿、8520 亿、5000 万付费用户、131 亿年营收）以 OpenAI 官方或权威媒体转述为准，存在后续修订可能。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Kimi K2.7 Code：国产编程模型开始卷「Agent 成本结构」</title>
        <link>https://blog.ccino.org/p/kimi-k2-7-code-agent-cost-structure-2026/</link>
        <pubDate>Sat, 13 Jun 2026 09:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/kimi-k2-7-code-agent-cost-structure-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/kimi-k2-7-code-agent-cost-structure-2026/imgs/cover.png" alt="Featured image of post Kimi K2.7 Code：国产编程模型开始卷「Agent 成本结构」" /&gt;&lt;p&gt;先把边界说清楚：这篇文章基于「Kimi K2.7 Code 编程模型已上线 Kimi Code、API 开放平台」的公开摘要，以及当天 YouTube、X 上出现的一些早期评测和接入讨论。里面提到的「代码基准提升 21.8%」「平均 token 消耗减少 30%」「智能体自主执行能力提升约一成」「价格与 K2.6 持平」，我会按公开传播口径来讨论，不把它们当作已经被充分复现的结论。&lt;/p&gt;
&lt;p&gt;即便如此，Kimi K2.7 Code 还是值得写。&lt;/p&gt;
&lt;p&gt;它有意思的地方，不只是国产编程模型又刷了一轮分数，而是它把一个平时不太好讲清楚的问题摆到了桌面上：&lt;strong&gt;Agent（智能体）到底贵在哪里？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;过去聊 AI 编程，大家很容易盯着 benchmark（基准测试）。哪个模型 SWE-bench 更高，哪个模型一次能修更多 bug，哪个模型上下文更长。这些指标当然有用，但它们解释不了全部问题。真实的编程 Agent 不是回答一次就结束，它会读仓库、查依赖、写文件、跑测试、看报错，再回来改第二轮、第三轮。&lt;/p&gt;
&lt;p&gt;钱通常就是在这些来回里烧掉的。&lt;/p&gt;
&lt;p&gt;Kimi K2.7 Code 这次真正值得看的，是它开始把「模型能不能写代码」往后推了一步，去碰「同一个任务能不能更便宜地跑完」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/kimi-k2-7-code-agent-cost-structure-2026/imgs/agent-cost-loop.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/kimi-k2-7-code-agent-cost-structure-2026/imgs/agent-cost-loop_hu_83750793e286e995.png 480w, https://blog.ccino.org/p/kimi-k2-7-code-agent-cost-structure-2026/imgs/agent-cost-loop_hu_12665a3d75189405.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Agent 任务循环中的 token 与成本累积&#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;Agent 场景不一样。&lt;/p&gt;
&lt;p&gt;你让它修一个线上 bug，它可能先读十几个文件；你让它迁移一个模块，它会搜索、修改、跑测试、根据失败结果继续改；你让它做一次代码审查，它可能要同时理解 diff、项目规范和历史实现。每一步都要吃 token（词元），每一次走错路都会带来更多上下文和更多重试。&lt;/p&gt;
&lt;p&gt;所以「平均 token 消耗减少 30%」这种说法，放在普通聊天模型里只是优化项，放在 Agent 产品里就很敏感。因为 Agent 的成本不是一问一答，而是一串动作的总账。&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;AI 公司发布编程模型时，通常会强调更强推理、更长上下文、更好的代码能力。这个方向没错，但在真实工程任务里，不是每一步都需要最高强度的推理。&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;Kimi K2.7 Code 这类更新可以从这个角度理解。模型能力提升是一方面，更关键的是它能不能少走弯路。比如少读无关文件，少生成没有必要的长计划，少在上下文里堆旧信息，少因为工具调用不稳而反复重来。&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;选题素材里提到，Kimi K2.7 Code 的价格与 K2.6 持平。这个说法如果属实，比单纯降价更有意思。&lt;/p&gt;
&lt;p&gt;降价当然能制造话题，但降价也容易被看成短期竞争。今天你降，明天别人也可以降。价格不变的情况下，如果代码能力、token 消耗、Agent 自主执行能力都有改善，等于是在同一单价下提高了「任务吞吐量」。&lt;/p&gt;
&lt;p&gt;个人开发者会感受到的是：同样预算能多跑几轮。工具厂商看到的是：同样订阅价格下，后台能承载更多自动化任务。企业更关心的是：AI 编程能不能从少数高价值场景，下沉到更多重复、琐碎、但确实耗人的工程环节。&lt;/p&gt;
&lt;p&gt;国内 AI Coding（AI 编程）生态尤其需要这件事。&lt;/p&gt;
&lt;p&gt;Claude Code、Cursor、Codex 已经把开发者教育得差不多了。大家知道 AI 可以读仓库、改代码、跑命令，也知道长任务 Agent 确实能省时间。真正拦在很多团队面前的，往往不是「我不懂这个概念」，而是「它跑起来贵不贵、稳不稳、出了问题好不好收拾」。&lt;/p&gt;
&lt;p&gt;如果国产模型能在这些地方持续逼近，它不需要马上全面超过 Claude。只要在一部分场景里做到效果够用、成本可控，就有机会进入日常工作流。&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;Claude Code 强在整套体验：终端入口、文件系统、工具调用、持续执行、权限确认、上下文管理，这些东西组合在一起，才形成了顺滑的工作流。单靠一个模型，很难复制这种体验。&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;agent-的成本不只是-api-单价&#34;&gt;Agent 的成本，不只是 API 单价
&lt;/h2&gt;&lt;p&gt;如果把 Agent 的账拆开，它至少有四层。&lt;/p&gt;
&lt;p&gt;第一层是 token 成本。上下文越长，输出越啰嗦，重试越多，成本越高。K2.7 Code 里「平均 token 消耗减少」这个指标之所以值得看，就在这里。&lt;/p&gt;
&lt;p&gt;第二层是时间成本。模型输出慢，工具调用慢，任务整体就慢。交互式编程里，速度不是锦上添花，它会直接影响用户愿不愿意把任务交给 Agent。&lt;/p&gt;
&lt;p&gt;第三层是失败成本。Agent 做错一次，不只是浪费一次调用。它可能改坏代码、污染上下文、引入一堆无关 diff，最后还要人类花时间回滚和检查。长程任务里更稳定，本质上是在减少这种隐性成本。&lt;/p&gt;
&lt;p&gt;第四层是验证成本。越自动化，越需要测试、日志、评估器和人工确认兜底。没有验证的低价 Agent，很可能只是把 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/kimi-k2-7-code-agent-cost-structure-2026/imgs/agent-cost-layers.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/kimi-k2-7-code-agent-cost-structure-2026/imgs/agent-cost-layers_hu_49a9a356a3e44f15.png 480w, https://blog.ccino.org/p/kimi-k2-7-code-agent-cost-structure-2026/imgs/agent-cost-layers_hu_56510b09a03495fe.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;对个人开发者来说，Kimi K2.7 Code 这类模型短期内未必是「替换谁」。更可能的变化是，多一个可以放进自动化链路里的底层选项。&lt;/p&gt;
&lt;p&gt;以后常见的用法可能会更分层：高风险架构判断交给最强模型，重复性工程任务交给成本更低的编程模型，最后用测试、lint、code review 和人工确认兜底。&lt;/p&gt;
&lt;p&gt;这会把 AI 编程从「选一个工具」变成「设计一条路由」。同一个 Agent 里，不同步骤可以调用不同模型；同一个团队里，不同任务可以设置不同预算；同一个产品里，也可以按任务风险、上下文长度、用户等级动态切换模型。&lt;/p&gt;
&lt;p&gt;国内开发者会更早感受到这件事。只要国产模型的 API、工具调用、上下文能力和 IDE/CLI 生态继续补齐，它很可能先进入内部工具、低风险自动化、私有化部署和中文代码库场景。&lt;/p&gt;
&lt;p&gt;它不需要一夜之间替代谁。更现实的路径是，慢慢把一批任务从「必须用最贵模型」变成「用便宜模型也够」。&lt;/p&gt;
&lt;h2 id=&#34;真正的竞争会发生在账单里&#34;&gt;真正的竞争，会发生在账单里
&lt;/h2&gt;&lt;p&gt;Kimi K2.7 Code 这次更新，如果按常规新闻写，很容易写成：分数提高了，token 降低了，Agent 能力增强了，API 上线了。&lt;/p&gt;
&lt;p&gt;但我更在意的是另一个变化：国产编程模型开始把经济性放到台前。&lt;/p&gt;
&lt;p&gt;Agent 负责执行任务，成本结构决定它能执行多少任务。模型提供能力，运行时把能力组织成流程。只要这几件事没有接好，AI 编程就容易停留在演示和尝鲜；一旦接好，它才可能变成团队每天都会用的工程基础设施。&lt;/p&gt;
&lt;p&gt;所以 Kimi K2.7 Code 的重点，不是它今天有没有打败某个海外模型，而是它把问题改了一点。&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;如果这个答案慢慢变成可以，国产编程模型卷到的就不只是 benchmark，而是 AI 编程真正的成本底盘。&lt;/p&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Kimi K2.7 Code 官方信息：&lt;a class=&#34;link&#34; href=&#34;https://platform.kimi.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Kimi API 开放平台&lt;/a&gt; 与 &lt;a class=&#34;link&#34; href=&#34;https://platform.kimi.com/docs/guide/agent-support&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Kimi K2.7 Code Agent 接入文档&lt;/a&gt;。&lt;/li&gt;
&lt;li&gt;早期评测与接入讨论：&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=HLj5UcAYR0I&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Afterfeel AI 的 Kimi K2.7 Code 更新视频&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=duQPHnkWclE&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Fahd Mirza 的 Kimi K2.7 Code + Hermes Agent 视频&lt;/a&gt;。&lt;/li&gt;
&lt;li&gt;X 传播线索：AI/ML API 关于 Kimi-K2.7-Code 接入的讨论，见 &lt;code&gt;https://x.com/aimlapi/status/2065521473570369837&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上来源主要用于观察产品发布口径和早期社区反馈。文中关于 Agent 成本结构的分析，是基于这些信息做的产业判断，不等同于对模型能力的独立基准测试。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>ChatGPT 接入 Visa：AI Agent 终于摸到了钱袋子</title>
        <link>https://blog.ccino.org/p/openai-visa-agent-commerce-2026/</link>
        <pubDate>Fri, 12 Jun 2026 09:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/openai-visa-agent-commerce-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/openai-visa-agent-commerce-2026/imgs/cover.png" alt="Featured image of post ChatGPT 接入 Visa：AI Agent 终于摸到了钱袋子" /&gt;&lt;p&gt;Visa 和 OpenAI 在旧金山的 Visa Payments Forum 上宣布了一项合作：把 Visa 的全球支付网络接入 OpenAI 的产品体验，让 AI Agent（AI 智能体）在用户授权后，可以参与搜索商品、比较选项、下单和付款。&lt;/p&gt;
&lt;p&gt;这听起来像是 ChatGPT 多了一个“帮我买”的按钮，但真正的变化不在按钮上。&lt;/p&gt;
&lt;p&gt;过去的 AI 购物助手，大多停在推荐层：帮你找几款咖啡机，列出参数，比较价格，最后还是要你自己跳到商家页面付款。Visa 和 OpenAI 这次要补上的，是最难的一环：&lt;strong&gt;钱从哪里走，谁来确认，谁承担风控，交易如何被银行和商家信任。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/openai-visa-agent-commerce-2026/imgs/agent-payment-flow.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/openai-visa-agent-commerce-2026/imgs/agent-payment-flow_hu_9c9dbd9a9328afa4.png 480w, https://blog.ccino.org/p/openai-visa-agent-commerce-2026/imgs/agent-payment-flow_hu_bfb0b9dfcec4079d.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;p&gt;一旦这个环节跑通，AI 就不只是电商流量入口旁边的导购，而是开始触碰交易执行权。&lt;/p&gt;
&lt;h2 id=&#34;从帮我选到帮我买&#34;&gt;从“帮我选”到“帮我买”
&lt;/h2&gt;&lt;p&gt;Visa 官方把这类场景称为 agentic commerce（智能体商务）。它的核心不是 AI 会不会推荐商品，而是 AI 能不能在用户设定的权限里完成真实交易。&lt;/p&gt;
&lt;p&gt;按 Visa 的说明，这次合作会把 Visa 的支付能力接入 OpenAI 体验，为开发者和商户提供接受 AI 发起的 Visa 支付的路径。Visa 负责底层网络、支付令牌化、实时授权、Agent 身份识别和欺诈监测。OpenAI 则提供用户入口和 Agent 执行环境。&lt;/p&gt;
&lt;p&gt;这里面有几个关键词值得拆开看。&lt;/p&gt;
&lt;p&gt;支付令牌化，简单说，就是不要把真实卡号暴露给 Agent 或商户，而是用受限制的网络令牌替代。这个令牌可以绑定到特定 Agent、特定用途或特定场景。实时授权和欺诈监测，则是 Visa 原本就在全球支付网络中长期积累的能力，现在要迁移到 AI 发起交易的场景里。&lt;/p&gt;
&lt;p&gt;更关键的是用户控制。Visa 提到，交易会在用户或企业设定的护栏里运行，例如消费上限、需要审批的金额门槛、商户类别限制、审批要求等。&lt;/p&gt;
&lt;p&gt;这说明 OpenAI 和 Visa 都知道一个问题：用户不可能一上来就把完整钱包交给 AI。真正可行的路径，往往是从低风险、低金额、可撤销的任务开始，比如订办公用品、续订服务、买固定品牌耗材，再慢慢进入更复杂的购买决策。&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;先是搜索框。用户知道自己要买什么，于是去淘宝、京东、Google 或 Amazon 搜。&lt;/p&gt;
&lt;p&gt;然后是推荐流。用户未必知道自己要买什么，平台通过内容、短视频、达人、算法推荐，把需求提前激发出来。&lt;/p&gt;
&lt;p&gt;再后来是直播间和私域。平台不只卖商品，还卖信任关系、情绪价值和即时折扣。&lt;/p&gt;
&lt;p&gt;Agent 购物会把这个链条再往前推一步：用户甚至不一定打开商家页面。他可能只是对 ChatGPT 说：“帮我找一台适合 30 平米客厅的空气净化器，预算 2000 元以内，耗材别太贵，优先京东能明天送到。”&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;这会让一部分旧的电商技巧失效。&lt;/p&gt;
&lt;p&gt;夸张标题、复杂优惠券、满减凑单、隐藏运费、默认勾选服务，这些玩法本质上都依赖用户注意力不足。一个足够负责的 Agent 会替用户算清楚总成本，也会过滤掉明显不符合条件的商品。&lt;/p&gt;
&lt;p&gt;当然，商家不会坐以待毙。新的优化方向可能会出现：如何让商品信息更容易被 Agent 读取，如何提供结构化库存和价格，如何证明自己更可信，如何进入 OpenAI、Visa 或其他 Agent 平台的可购买目录。&lt;/p&gt;
&lt;p&gt;也就是说，电商 SEO（搜索引擎优化）可能会演化成 Agent SEO：不是让人觉得你排第一，而是让 Agent 判断你最适合。&lt;/p&gt;
&lt;h2 id=&#34;支付公司为什么必须进场&#34;&gt;支付公司为什么必须进场
&lt;/h2&gt;&lt;p&gt;如果只是商品推荐，OpenAI 自己也能做。但一旦进入付款环节，事情就变得麻烦。&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;银行看到一笔交易，是人发起的，还是 Agent 发起的？风险等级一样吗？&lt;/p&gt;
&lt;p&gt;如果一个 Agent 同时替用户比较价格、调用优惠券、选择商户、发起付款，它在支付系统里应该被识别成什么角色？&lt;/p&gt;
&lt;p&gt;这些问题不是靠一个模型更新就能解决的。支付世界最看重的不是“聪明”，而是可追踪、可授权、可拒付、可审计、可风控。&lt;/p&gt;
&lt;p&gt;这正是 Visa 的位置。&lt;/p&gt;
&lt;p&gt;Visa 不是来给 ChatGPT 做一个收银台插件。它真正提供的是信任基础设施。Visa 官方文章提到，其全球网络每年处理超过 3000 亿笔交易。这个数字的意义不只是规模，而是它背后已经有银行、商户、发卡机构、收单机构、风控系统、争议处理机制和合规流程。&lt;/p&gt;
&lt;p&gt;AI Agent 想进入真实商业世界，必须接上这些老系统。&lt;/p&gt;
&lt;p&gt;这也是为什么这次合作比普通“AI 购物助手”更值得看。OpenAI 有用户入口和 Agent 能力，但它没有支付网络的历史信用。Visa 有支付网络和风控能力，但它需要进入新的交互入口。双方合作，实际上是在回答同一个问题：当未来的购物入口从网页和 App 迁移到 AI 对话框时，谁来保证交易可信？&lt;/p&gt;
&lt;h2 id=&#34;广告和归因会变得更难&#34;&gt;广告和归因会变得更难
&lt;/h2&gt;&lt;p&gt;如果 Agent 成为购物入口，广告行业也会遇到麻烦。&lt;/p&gt;
&lt;p&gt;今天的电商广告体系，建立在一个假设上：人会看广告，人会点击，人会被页面影响，平台能记录从曝光到转化的路径。&lt;/p&gt;
&lt;p&gt;Agent 购物打破了这个路径。&lt;/p&gt;
&lt;p&gt;用户可能没有看到任何广告，只是让 Agent “帮我选一个靠谱的”。Agent 可能综合多个来源：商品库、评测网站、用户历史、价格趋势、售后政策、物流速度、品牌信任度。最后它直接下单。&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;过去商家优化的是“人看到后会不会买”。未来还要优化“Agent 读取后会不会选”。&lt;/p&gt;
&lt;p&gt;这会让广告归因变得更复杂。一次购买到底归功于品牌长期投放、商家价格优势、平台补贴，还是 Agent 的筛选规则？如果 Agent 默认偏好某些支付通道、某些商户接口、某些结构化数据标准，这里面又会不会形成新的平台偏置？&lt;/p&gt;
&lt;p&gt;这些问题短期内不会有标准答案，但方向已经很清楚：当购买决策的一部分转移给 Agent，电商平台和商家就必须重新理解“流量”的含义。&lt;/p&gt;
&lt;p&gt;流量不再只是人的点击，也包括 Agent 的选择。&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;今天大多数用户愿意让 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;企业自动处理部分发票、报销和 SaaS 续费；&lt;/li&gt;
&lt;li&gt;开发者通过 Codex 相关工作流采购云资源或开发工具订阅。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些场景的共同点是，用户更关心规则是否执行正确，而不是购物体验是否有趣。&lt;/p&gt;
&lt;p&gt;这也解释了 Visa 官方文章里为什么反复强调消费限额、审批门槛、商户类别限制和用户控制。因为 Agent 支付的真正门槛，不是“能不能付”，而是“用户敢不敢让它付”。&lt;/p&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 的商业价值主要来自订阅、API 和企业服务。它能影响用户决策，但很少直接参与交易。即使用户在 ChatGPT 里问“买哪款耳机”，最终付款也发生在别的平台。&lt;/p&gt;
&lt;p&gt;这意味着 OpenAI 影响了需求，却不一定能捕捉交易价值。&lt;/p&gt;
&lt;p&gt;Visa 合作让 OpenAI 更接近商业闭环。用户在 ChatGPT 里产生需求，Agent 完成比较，支付网络完成交易。如果未来再叠加商户接入、推荐排序、会员权益、金融产品和企业采购流程，OpenAI 就有机会从“答案入口”变成“交易入口”。&lt;/p&gt;
&lt;p&gt;但这也会带来新的监管和信任压力。&lt;/p&gt;
&lt;p&gt;一旦 ChatGPT 参与购物，它就不能只说“我只是提供信息”。它推荐了谁，排除了谁，是否有商业合作，是否偏向某些支付方式，是否解释了替代选择，都会成为敏感问题。&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 叙事喜欢说“旧平台会被颠覆”。但 Visa × OpenAI 这个案例反而说明，AI 真要进入现实世界，往往要和旧基础设施结盟。&lt;/p&gt;
&lt;p&gt;支付网络、银行授权、欺诈监测、争议处理、商户协议、合规审计，这些东西听起来不性感，却是商业世界正常运转的骨架。AI Agent 可以改变交互方式，却不能绕过这些骨架。&lt;/p&gt;
&lt;p&gt;这也是很多 Agent 产品从 demo 走向生产时会遇到的共同问题。&lt;/p&gt;
&lt;p&gt;在演示里，Agent 会浏览网页、比较商品、点击按钮，看起来像一个全能助手。但到了真实交易里，它必须知道权限边界，必须被系统识别，必须留下审计记录，必须能解释为什么做了某个选择，必须在出错时有补救路径。&lt;/p&gt;
&lt;p&gt;这时，模型能力只是其中一部分。真正难的是把模型放进一套可信执行系统里。&lt;/p&gt;
&lt;p&gt;Visa 提供的是支付领域的可信执行系统。OpenAI 提供的是用户入口和 Agent 能力。两者结合，才让“AI 替你买东西”从一个演示，变成一个可能被银行、商户和用户接受的交易流程。&lt;/p&gt;
&lt;h2 id=&#34;结尾入口钱包和-agent-的关系&#34;&gt;结尾：入口、钱包和 Agent 的关系
&lt;/h2&gt;&lt;p&gt;这件事值得关注，不是因为明天所有人都会让 ChatGPT 自动购物，而是因为它把三个过去分开的东西连到了一起：入口、钱包和 Agent。&lt;/p&gt;
&lt;p&gt;入口决定用户从哪里开始行动。过去是搜索框、App、推荐流和直播间。钱包决定交易能不能完成，以及完成后谁承担风险。Agent 则负责把用户意图翻译成一系列可执行动作。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/openai-visa-agent-commerce-2026/imgs/commerce-power-triangle.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/openai-visa-agent-commerce-2026/imgs/commerce-power-triangle_hu_db21a8e550b5e4b2.png 480w, https://blog.ccino.org/p/openai-visa-agent-commerce-2026/imgs/commerce-power-triangle_hu_2bb5a29676b8a7bc.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;Visa × OpenAI 的合作，暂时还不是一个成熟产品，也没有公开完整的上线时间、商户范围和收费方式。但它已经给出了一个明确方向：AI Agent 不会永远停留在回答和推荐层。它会继续向执行层移动，先替你整理信息，再替你做决定，最后在被授权的边界内替你花钱。&lt;/p&gt;
&lt;p&gt;这也是为什么电商平台、支付公司、商家和开发者都需要重新看待 Agent。&lt;/p&gt;
&lt;p&gt;Agent 不是一个更聪明的客服，也不是一个更会写文案的导购。只要它接入支付，它就开始变成商业流程里的新参与者。到那时，真正的问题不再是“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://corporate.visa.com/en/sites/visa-perspectives/innovation/visa-openai-partnership.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Visa 官方：How Visa is Partnering with OpenAI to Build the Future of Agentic Commerce&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://usa.visa.com/about-visa/newsroom/press-releases.releaseId.22496.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Visa 新闻稿：Visa Partners with OpenAI to Power the Next Generation of AI Commerce&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://thenextweb.com/news/openai-visa-chatgpt-agentic-commerce-payments&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;The Next Web：OpenAI plugs Visa into ChatGPT for AI-agent payments&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.visa.com/en-us/solutions/intelligent-commerce&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Visa Intelligent Commerce&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Claude Fable 5 真正的新东西：不是更聪明，而是开始给 AI 能力分流定价</title>
        <link>https://blog.ccino.org/p/claude-fable-5-risk-routing-pricing/</link>
        <pubDate>Wed, 10 Jun 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/claude-fable-5-risk-routing-pricing/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/claude-fable-5-risk-routing-pricing/imgs/cover.png" alt="Featured image of post Claude Fable 5 真正的新东西：不是更聪明，而是开始给 AI 能力分流定价" /&gt;&lt;p&gt;Anthropic 发布 Claude Fable 5 和 Claude Mythos 5 后，很多人的第一反应还是很自然：&lt;/p&gt;
&lt;p&gt;它比 Opus 4.8 强多少？&lt;br&gt;
它写代码是不是更猛？&lt;br&gt;
它会不会又把 Claude Code 往前推一大截？&lt;/p&gt;
&lt;p&gt;这些问题当然重要，但我觉得这次真正值得看的，不是模型又聪明了一点。&lt;/p&gt;
&lt;p&gt;更关键的变化是：Anthropic 开始把同一套顶级模型能力，拆成了不同的访问方式、不同的安全边界和不同的价格层级。&lt;/p&gt;
&lt;p&gt;换句话说，Claude Fable 5 的重点不是“更强模型终于来了”，而是 Anthropic 正在尝试回答一个更现实的问题：当一个模型强到可以同时帮助程序员迁移代码、帮助科学家做蛋白设计、也可能帮助坏人做高风险网络攻击时，这个模型到底应该卖给谁、怎么卖、什么任务该拦、什么任务该换模型处理？&lt;/p&gt;
&lt;p&gt;这件事，比一次普通模型升级要大得多。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-fable-5-risk-routing-pricing/imgs/cover.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-fable-5-risk-routing-pricing/imgs/cover_hu_302cd50eb347359d.png 480w, https://blog.ccino.org/p/claude-fable-5-risk-routing-pricing/imgs/cover_hu_d53fbeac31a32a4f.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Claude Fable 5：能力、安全风险、访问身份与价格被放进同一套产品设计&#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;先说清楚fable-5-和-mythos-5-是什么关系&#34;&gt;先说清楚：Fable 5 和 Mythos 5 是什么关系
&lt;/h2&gt;&lt;p&gt;根据 Anthropic 官方介绍，Claude Fable 5 是面向公众开放的高能力模型。官方把它称为一个 “Mythos-class model”，也就是 Mythos 级别的模型，但加上了适合通用使用的安全防护。&lt;/p&gt;
&lt;p&gt;Claude Mythos 5 则是同一底层模型的另一种形态。它面向更受限的可信访问场景，尤其是网络防御、关键基础设施安全和部分生命科学研究。官方说得很直接：Mythos 5 拥有最强的网络安全能力，但这些能力不会直接对普通用户开放。&lt;/p&gt;
&lt;p&gt;这里最有意思的地方在于，Fable 和 Mythos 并不是传统意义上的“两个不同档次模型”。它们更像是同一颗大脑，套上了不同的安全外壳。&lt;/p&gt;
&lt;p&gt;普通用户拿到的是 Fable 5。它可以做软件工程、知识工作、视觉理解、科研推理和长任务，但遇到网络安全、生物化学、模型蒸馏等高风险请求时，会触发安全分类器。命中之后，系统不会继续让 Fable 5 回答，而是把请求交给 Claude Opus 4.8 处理，并告知用户发生了 fallback（回退）。&lt;/p&gt;
&lt;p&gt;官方给出的数字是，平均少于 5% 的会话会触发这种机制。也就是说，绝大多数普通使用不会受影响，但在高风险区域，Anthropic 会主动把最强能力收回来。&lt;/p&gt;
&lt;p&gt;这就是这次发布最值得拆解的地方。&lt;/p&gt;
&lt;p&gt;过去我们讨论模型安全，常见逻辑是“能不能回答”。能回答就是放行，不能回答就是拒绝。&lt;/p&gt;
&lt;p&gt;Fable 5 开始变成另一套逻辑：普通任务用最强模型，高风险任务换到更保守模型，可信用户通过受限项目访问解除部分护栏的版本。&lt;/p&gt;
&lt;p&gt;它不只是拒绝，而是在路由。&lt;/p&gt;
&lt;h2 id=&#34;定价也变成了产品信号&#34;&gt;定价也变成了产品信号
&lt;/h2&gt;&lt;p&gt;Claude Fable 5 的 API 模型名是 &lt;code&gt;claude-fable-5&lt;/code&gt;。官方给出的价格是每百万输入 tokens 10 美元，每百万输出 tokens 50 美元。Mythos 5 的价格与 Fable 5 相同。&lt;/p&gt;
&lt;p&gt;这个价格不便宜。它比 Opus 4.8 的公开价格更高，也明显把 Fable 放在了一个“顶级能力按需使用”的位置上。&lt;/p&gt;
&lt;p&gt;但价格本身不是最关键的。关键在于，Anthropic 把价格、能力和访问边界放在一起设计了。&lt;/p&gt;
&lt;p&gt;如果你只是问日常问题、写普通文案、做轻量总结，Fable 5 显然不是最经济的选择。它真正适合的是那些“贵一点也值得”的任务：大型代码库迁移、复杂代码审查、金融推理、科研假设生成、长周期 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;模型厂商也在回答这个问题。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-fable-5-risk-routing-pricing/imgs/capability-pricing.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-fable-5-risk-routing-pricing/imgs/capability-pricing_hu_f8672a97e46addc5.png 480w, https://blog.ccino.org/p/claude-fable-5-risk-routing-pricing/imgs/capability-pricing_hu_d45461c7904bc047.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;Anthropic 这次其实没有把 Fable 5 包装成“所有任务都该用的默认模型”。它更像是在给高价值任务定价。你可以把它理解为 AI 里的“专家号”：它不是便宜，不是无处不在，但当你真的需要它时，它的价值来自一次复杂任务能否被完整解决。&lt;/p&gt;
&lt;h2 id=&#34;官方案例真正想说明什么&#34;&gt;官方案例真正想说明什么
&lt;/h2&gt;&lt;p&gt;Anthropic 给了很多能力展示。比如 Stripe 在 5000 万行 Ruby 代码库里做大规模迁移；Cognition 的 FrontierCode 评测；Hebbia 的金融推理基准；从科学图表中提取数字；根据截图重建 Web 应用；甚至只依靠视觉信息通关 Pokémon FireRed。&lt;/p&gt;
&lt;p&gt;这些案例当然有展示肌肉的成分。&lt;/p&gt;
&lt;p&gt;但如果只把它们看成“模型又变强了”，反而会错过重点。&lt;/p&gt;
&lt;p&gt;这些案例共同指向的是同一件事：Fable 5 被设计来处理更长、更杂、更接近真实工作的任务。&lt;/p&gt;
&lt;p&gt;真实工作不是一道单题。它往往包含很多小步骤：理解目标，读取上下文，写代码，检查结果，修 bug，重新规划，最后交付一个可以用的东西。&lt;/p&gt;
&lt;p&gt;这也是为什么 Fable 5 和 Claude Code 的结合会让开发者兴奋。&lt;/p&gt;
&lt;p&gt;Twitter 上已经有人把它用于代码审查，甚至开玩笑说现在应该让 Claude Code 做一次 “Fable Check”。Simon Willison 也在讨论如何计算 Fable 5 的 token 花费。还有用户反馈说，模型很强，但担心一天就把周额度用完。&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;Fable 5 的安全机制里，有一个细节特别值得写。&lt;/p&gt;
&lt;p&gt;当请求涉及网络安全、生物与化学、模型蒸馏相关内容时，Fable 5 不直接回答，而是交给 Claude Opus 4.8。官方说，用户会被告知发生了 fallback。&lt;/p&gt;
&lt;p&gt;这其实是一个很微妙的产品动作。&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 模型里，就是：普通任务给你最强体验；高风险任务进入更谨慎的处理链；经过验证的可信伙伴，才能访问更少限制的 Mythos 5。&lt;/p&gt;
&lt;p&gt;这说明 Anthropic 已经不再把“安全”做成模型外面的一层静态护栏，而是在把安全变成模型产品的一部分。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-fable-5-risk-routing-pricing/imgs/risk-routing.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-fable-5-risk-routing-pricing/imgs/risk-routing_hu_c7dcb4bcc0e64c9f.png 480w, https://blog.ccino.org/p/claude-fable-5-risk-routing-pricing/imgs/risk-routing_hu_120c4b6356fb6775.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Fable 5 的高风险请求分流：普通任务走最强模型，高风险任务 fallback 到更保守处理层，可信访问进入 Mythos&#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;h2 id=&#34;这会带来一个新问题正常用户会不会被误伤&#34;&gt;这会带来一个新问题：正常用户会不会被误伤
&lt;/h2&gt;&lt;p&gt;当然，这套设计不是没有代价。&lt;/p&gt;
&lt;p&gt;只要有分类器，就一定会有误判。尤其是今天的 AI Agent 工程，本身就越来越靠近高风险边界。&lt;/p&gt;
&lt;p&gt;比如 Harness Engineering（支架工程）。它本来是让 Agent 更可靠的一套工程方法，包括工具约束、权限控制、验证回路、失败恢复和人类审核。但在安全系统看来，这类内容也可能和“构建更强自动化能力”相关。&lt;/p&gt;
&lt;p&gt;今天 Twitter 上已经出现类似抱怨：有人认为 Claude 对 harness engineering 相关任务过于敏感，甚至影响正常 Agent 开发。&lt;/p&gt;
&lt;p&gt;这不一定代表 Anthropic 的系统真的大面积误伤，但它提醒我们一个趋势：模型越强，护栏越难做。&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;这也是为什么 Mythos 5 没有直接开放给所有人。能力越强，访问控制越像一套许可制度，而不是一个普通开关。&lt;/p&gt;
&lt;h2 id=&#34;这和之前-mythos-泄露事件有什么不同&#34;&gt;这和之前 Mythos 泄露事件有什么不同
&lt;/h2&gt;&lt;p&gt;如果你关注过 Anthropic，可能会觉得 Mythos 这个名字并不陌生。&lt;/p&gt;
&lt;p&gt;此前 Fortune 报道过 Anthropic 内部测试一个能力很强、风险也很高的模型，当时外界看到的核心矛盾是：Anthropic 有一个更强模型，但因为网络安全风险没有直接发布。&lt;/p&gt;
&lt;p&gt;那件事更像一次“模型太危险，所以藏起来”的故事。&lt;/p&gt;
&lt;p&gt;这次 Fable 5 / Mythos 5 的发布，性质不一样。&lt;/p&gt;
&lt;p&gt;现在 Anthropic 给出的答案不是继续把能力藏起来，而是把能力拆成不同产品形态：公开版本、可信访问版本、高风险 fallback、30 天安全保留政策、不同计划下的阶段性使用权。&lt;/p&gt;
&lt;p&gt;也就是说，Anthropic 正在从“要不要发布最强模型”，走向“如何治理最强模型”。&lt;/p&gt;
&lt;p&gt;这比单纯泄露更值得关注。&lt;/p&gt;
&lt;p&gt;因为它意味着顶级模型的商业化，开始和安全治理绑在一起。&lt;/p&gt;
&lt;h2 id=&#34;对开发者来说fable-5-不是默认答案&#34;&gt;对开发者来说，Fable 5 不是默认答案
&lt;/h2&gt;&lt;p&gt;如果你是开发者，看到 Fable 5 的第一反应可能是：以后是不是所有 Claude Code 任务都该上 Fable？&lt;/p&gt;
&lt;p&gt;我反而觉得不是。&lt;/p&gt;
&lt;p&gt;Fable 5 更适合那些你愿意为结果质量付费的节点。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;大型重构前的架构审查；&lt;/li&gt;
&lt;li&gt;复杂 Pull Request 的最终代码审查；&lt;/li&gt;
&lt;li&gt;需要跨多个文件和工具链的 bug 定位；&lt;/li&gt;
&lt;li&gt;重要技术方案的反方评审；&lt;/li&gt;
&lt;li&gt;长周期 Agent 任务里的关键决策步骤。&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;最后fable-和-mythos-的关系说明了-ai-产品的新阶段&#34;&gt;最后，Fable 和 Mythos 的关系说明了 AI 产品的新阶段
&lt;/h2&gt;&lt;p&gt;Fable 5 和 Mythos 5 的关系，可以这样理解：Fable 是公开市场里的强模型，Mythos 是受限场景里的强能力版本，Opus 4.8 则在高风险 fallback 中承担更保守的处理角色。&lt;/p&gt;
&lt;p&gt;这三者不是简单的强弱排序。&lt;/p&gt;
&lt;p&gt;Fable 负责把顶级能力带给普通用户，但它必须带着通用安全护栏。Mythos 负责把同一底层能力开放给更可信、更专业的场景，所以它可以解除部分限制。Opus 4.8 在这里不是“更弱替代品”，而是安全路由中的稳妥处理层，用来承接 Fable 不适合直接回答的高风险请求。&lt;/p&gt;
&lt;p&gt;这套结构说明，模型产品正在从单一 API 变成一套分层系统。&lt;/p&gt;
&lt;p&gt;过去我们买的是一个模型。以后我们买的可能是一整套能力调度：什么时候用强模型，什么时候用便宜模型，什么时候切到安全模型，什么时候需要身份验证，什么时候必须保留日志供安全分析。&lt;/p&gt;
&lt;p&gt;所以，Claude Fable 5 真正的新东西，不只是它又聪明了。&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.anthropic.com/news/claude-fable-5-mythos-5&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic：Claude Fable 5 / Mythos 5 官方发布&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://news.ycombinator.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hacker News：Claude Fable 5 讨论&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=TsX6aMlaid8&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Digestible AI：Claude Fable 5 视频解读&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/swyx/status/2064492823781789969&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;swyx：Fable Check 代码审查用法&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/simonw/status/2064464986819457210&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Simon Willison：Claude Fable 5 token 花费计算&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>会跑一整夜的 Agent，才是 AI 编程的下半场</title>
        <link>https://blog.ccino.org/p/coding-agents-remote-runtime-2026/</link>
        <pubDate>Tue, 09 Jun 2026 08:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/coding-agents-remote-runtime-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/coding-agents-remote-runtime-2026/imgs/cover.png" alt="Featured image of post 会跑一整夜的 Agent，才是 AI 编程的下半场" /&gt;&lt;p&gt;这两天刷到几条关于 &lt;strong&gt;Loop Engineering（循环工程）&lt;/strong&gt; 的讨论，我第一反应其实有点警惕。&lt;/p&gt;
&lt;p&gt;AI 圈太爱造词了。Prompt Engineering（提示词工程）还没完全冷掉，Context Engineering（上下文工程）又被讲了一轮，现在又来了 Loop Engineering（循环工程）。中文区已经有人开始说“提示词工程死亡”。这类话听多了，很容易让人把它当成又一个包装出来的新概念。&lt;/p&gt;
&lt;p&gt;但这次我觉得可以多看一眼。原因不是这个词多漂亮，而是它背后那个场景已经很具体了：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;一个 Agent 不再只是跑 5 分钟，而是要连续跑 1 小时、6 小时，甚至一整夜。它应该跑在哪里？出错了谁知道？跑偏了怎么停？&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;这不是模型榜单上的问题，也不是一句 prompt（提示词）能解决的问题。它更像软件工程里那些不太性感、但最后一定会决定成败的东西：运行环境、权限、日志、回滚、验收。&lt;/p&gt;
&lt;h2 id=&#34;开着笔记本等-agent-跑完这件事挺荒唐的&#34;&gt;开着笔记本等 Agent 跑完，这件事挺荒唐的
&lt;/h2&gt;&lt;p&gt;AWS 最近发了一篇文章，标题叫 &lt;em&gt;It’s safe to close your laptop now&lt;/em&gt;。&lt;/p&gt;
&lt;p&gt;开头那个画面很容易让用过 coding agent（编程智能体）的人会心一笑：开发者抱着半开合的笔记本从一个地方走到另一个地方，因为里面有 Claude Code、Codex、Kiro、Gemini CLI 或 Cursor CLI 正在跑。要去开会，也不敢合盖；要回家，也得确认电源和网络别断。&lt;/p&gt;
&lt;p&gt;这听起来有点滑稽，但并不离谱。现在很多长任务 Agent 的默认宿主，确实还是开发者自己的电脑。&lt;/p&gt;
&lt;p&gt;问题不只是“不方便”。&lt;/p&gt;
&lt;p&gt;你的笔记本不是一台干净的沙箱。它有 SSH key，有浏览器登录态，有 &lt;code&gt;.env&lt;/code&gt;，有公司 VPN，有私有仓库凭证，也有一堆你早就忘了放在哪里的 token。Agent 跟这些东西共享同一个 shell、同一个文件系统、同一个网络出口。平时这叫方便，出事时就叫攻击面。&lt;/p&gt;
&lt;p&gt;本地并行也没有看起来那么美。&lt;code&gt;git worktree&lt;/code&gt; 可以让几个 Agent 分别改不同分支，但它们还是挤在同一台机器上：同一个 Postgres 端口，同一个 dev server 端口，同一份全局缓存，同一个 SSH keyring。代码目录分开了，宿主机没分开。&lt;/p&gt;
&lt;p&gt;再往后看，合盖本身就是一个很原始的 kill switch。一个 90 分钟的重构，一个跨模块迁移，一个要反复跑测试的修复任务，不应该取决于“我的电脑今天能不能一直亮着”。当 Agent 的任务长度从几分钟变成几个小时，这个小麻烦就会变成工作流瓶颈。&lt;/p&gt;
&lt;p&gt;AWS 那篇文章讲 AgentCore，表面上是在推云服务，但它戳中的痛点是对的：coding agent（编程智能体）迟早要从个人电脑里搬出去。它需要一个可以隔离、可以恢复、可以审计的远程运行环境。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/coding-agents-remote-runtime-2026/imgs/remote-runtime.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/coding-agents-remote-runtime-2026/imgs/remote-runtime_hu_38e9879d2d9a6af5.png 480w, https://blog.ccino.org/p/coding-agents-remote-runtime-2026/imgs/remote-runtime_hu_d7b215836942ede.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;本地电脑不是长期运行 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;长任务坏掉时通常不是突然坏掉&#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;一个 Agent 可能一开始理解了需求，第一版代码也写得像模像样。后来为了修一个测试，它顺手改了不该改的抽象；为了补一个边界条件，它加了一层新的状态；为了让构建通过，它绕开了真正的问题。最后它生成一段总结，说任务已经完成，而且语气很笃定。&lt;/p&gt;
&lt;p&gt;如果你只看总结，很难判断。你必须看 diff、跑测试、打开页面、查日志、确认数据状态。也就是说，长任务能不能交付，关键不是 Agent 会不会说“我完成了”，而是外部世界有没有给它足够多的反馈。&lt;/p&gt;
&lt;p&gt;OpenAI 的 Harness Engineering（支架工程）文章里有个经验很值得注意。他们让 Codex 在一个新仓库里完成大量开发工作，人类不再主要写代码，而是搭环境、写规则、设计反馈回路，让 Agent 能打开应用、读日志、跑测试、发 PR，并根据评审意见继续改。&lt;/p&gt;
&lt;p&gt;这里的重点不是“Codex 写了多少代码”。真正的变化是：执行交给模型，可信度交给系统。&lt;/p&gt;
&lt;p&gt;Loop Engineering（循环工程）如果有价值，价值就在这里。不是让 Agent 一直转圈，而是让每一圈都有真实反馈，有边界，有验收，也有停下来的条件。&lt;/p&gt;
&lt;h2 id=&#34;真正缺的是一间给-agent-用的工作间&#34;&gt;真正缺的，是一间“给 Agent 用的工作间”
&lt;/h2&gt;&lt;p&gt;如果你把 coding agent（编程智能体）当成一个偶尔帮忙的助手，本地终端已经够用了。&lt;/p&gt;
&lt;p&gt;但如果你希望它接一个 issue，跑半小时，自己修、自己测、自己开 PR，那它需要的就不只是一个聊天窗口了。它需要一间工作间。&lt;/p&gt;
&lt;p&gt;这间工作间首先要隔离。一个任务一个 workspace，最好连依赖、端口、缓存和临时文件都分开。这样你才敢让多个 Agent 同时跑，也不用担心 A 任务的残留状态污染 B 任务。&lt;/p&gt;
&lt;p&gt;它还要能保存现场。长任务最怕“跑到一半没了”。代码改到哪里，依赖装到哪里，测试失败在哪一步，这些状态都应该能恢复。否则 Agent 越会干长活，你越得像看炉火一样守着它。&lt;/p&gt;
&lt;p&gt;权限也得重新设计。Agent 当然要访问 GitHub、Jira、Slack、内部 API，不然它只能在本地自言自语。但把一堆永久 token 塞进它能读写的环境里，是非常糟糕的做法。更稳妥的方式，是让身份层和工具网关替它拿临时权限，工具能用，钥匙不进屋。&lt;/p&gt;
&lt;p&gt;还有一个经常被低估的东西：可观测性。日志、测试结果、浏览器截图、API 响应、性能指标，应该成为 Agent 继续下一步的依据。不要问它“你觉得完成了吗”，要让它看到系统到底有没有工作。&lt;/p&gt;
&lt;p&gt;最后是停机机制。很多 Loop Engineering（循环工程）的讨论会强调自动循环，但循环最重要的一半其实是停止。连续失败几次要不要停？改动超过多大范围要不要交给人？测试通过但日志异常要不要继续？这些规则不写清楚，Loop 就会从自动化变成自动放大错误。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/coding-agents-remote-runtime-2026/imgs/agent-loop-feedback.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/coding-agents-remote-runtime-2026/imgs/agent-loop-feedback_hu_d2b1d0bad0b67efc.png 480w, https://blog.ccino.org/p/coding-agents-remote-runtime-2026/imgs/agent-loop-feedback_hu_bb5729b02dfbfa31.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;长期运行 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;所以，所谓长期运行 Agent，不是把 Claude Code 丢到云主机上这么简单。它更像是在搭一套面向 Agent 的开发平台。&lt;/p&gt;
&lt;h2 id=&#34;工程师不是消失了而是坐到了更上游&#34;&gt;工程师不是消失了，而是坐到了更上游
&lt;/h2&gt;&lt;p&gt;每次聊 Agent，都会有人把话题推到“程序员是不是没用了”。&lt;/p&gt;
&lt;p&gt;我觉得这个问题问得太急。&lt;/p&gt;
&lt;p&gt;更接近现实的变化是：工程师不再只盯着每一行代码，而是要决定 Agent 在什么边界里行动。&lt;/p&gt;
&lt;p&gt;以前你亲自改代码。现在你要定义任务范围。以前你自己跑测试。现在你要决定哪些测试算验收。以前你自己查日志。现在你要把日志和页面状态变成 Agent 能读懂、能使用的反馈。以前你担心代码有没有 bug。现在你还得担心 Agent 的权限是不是太大，它有没有在错误方向上跑太久，有没有把一个局部修复扩大成半个系统重构。&lt;/p&gt;
&lt;p&gt;举个很小的例子。&lt;/p&gt;
&lt;p&gt;你可以对 Agent 说：“修复登录页 bug。”这是一句 prompt（提示词）。&lt;/p&gt;
&lt;p&gt;也可以给它一个更像工作流的任务：在独立环境里拉分支，复现登录失败，修改代码，跑单元测试，启动应用，用浏览器走一遍登录流程，抓控制台错误；如果失败，继续修；连续两轮通过后生成 PR；如果 30 分钟内还没通过，停止并报告卡在哪里。&lt;/p&gt;
&lt;p&gt;两者看起来都在“让 AI 修 bug”，但差别很大。&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;过去我们不太在意 Agent 的运行时，因为任务还短。&lt;/p&gt;
&lt;p&gt;让 AI 改一个函数、写一个脚本、生成一个页面，本地跑就够了。失败也没关系，人很快能接回来。&lt;/p&gt;
&lt;p&gt;现在任务开始变长。Claude Code、Codex、Kimi Work 这类工具，都在把自己从“辅助写代码”推向“接管一段工作”。AWS 在讲远程托管 coding agents（编程智能体），O’Reilly 在讲 long-running agents（长期运行智能体），InfoQ 在讨论从 MCP、Vibe Coding（氛围编程）到 Harness Engineering（支架工程）的演化，社区里也开始用 Loop Engineering（循环工程）形容这种新工作方式。&lt;/p&gt;
&lt;p&gt;这些线索不完全相同，但方向很接近：AI 编程的竞争不只在模型，也在运行环境。&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;我们以后可能会这样用-agent&#34;&gt;我们以后可能会这样用 Agent
&lt;/h2&gt;&lt;p&gt;我猜短期内会出现一个分层。&lt;/p&gt;
&lt;p&gt;个人开发者还是会在本地用 Claude Code、Cursor、Codex CLI。它们启动快、反馈快，适合探索、原型、小修小补。很多时候，本地就是最顺手的地方。&lt;/p&gt;
&lt;p&gt;但团队里的长任务，会越来越像 CI job 或云端任务。你不会守着笔记本等它跑完，而是把任务提交到一个受控环境里：每个 Agent 一个隔离 workspace，每次工具调用有身份记录，每个结果经过验证器，失败后能恢复，必要时停下来等人接手。&lt;/p&gt;
&lt;p&gt;到那时，AI 编程的核心技能也会变得更杂。&lt;/p&gt;
&lt;p&gt;会写 prompt（提示词）仍然有用，但不够。你还要会拆任务、写验收、配权限、设停止条件，知道哪些事可以让 Agent 自己继续，哪些事必须把人叫回来。&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;这也是 Agent 和 Harness（支架）之间最容易被忽略的关系：Agent 不是一个孤零零的模型，而是模型进入真实工作环境后的形态；Harness 则是包在它外面的那套支架，负责给它工具、权限、反馈、记忆、验证和刹车。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/coding-agents-remote-runtime-2026/imgs/agent-harness-relationship.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/coding-agents-remote-runtime-2026/imgs/agent-harness-relationship_hu_6570df7d157d00ae.png 480w, https://blog.ccino.org/p/coding-agents-remote-runtime-2026/imgs/agent-harness-relationship_hu_8baeab49c8abd493.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Agent 负责执行真实工作，Harness 负责提供工具、权限、反馈、记忆、验证和刹车&#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;没有 Harness，Agent 很容易退回成一个“会调用工具的聊天模型”：它能写、能改、能解释，但跑久了会漂移，权限边界也不清楚。Harness 不替模型思考，却决定模型能不能安全地行动；它不直接生成代码，却决定生成出来的代码能不能被验证、被追踪、被团队接住。&lt;/p&gt;
&lt;p&gt;所以 AI 编程的下半场，可能不是谁拥有一个更会说话的 Agent，而是谁能给 Agent 搭出一套更可靠的 Harness。&lt;/p&gt;
&lt;p&gt;这听起来没那么像科幻，但更像真实的软件工程。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;参考来源：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://aws.amazon.com/blogs/machine-learning/its-safe-to-close-your-laptop-now-hosting-coding-agents-on-amazon-bedrock-agentcore/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AWS：It’s safe to close your laptop now: Hosting coding agents on Amazon Bedrock AgentCore&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openai.com/index/harness-engineering/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI：Harness engineering（支架工程）：leveraging Codex in an agent-first world&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.infoq.com/podcasts/mcp-vibe-coding-harness-engineering/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;InfoQ：From MCP and Vibe Coding（氛围编程） to Harness Engineering（支架工程）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.oreilly.com/radar/long-running-agents/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;O’Reilly：Long-Running Agents（长期运行智能体）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/daniel_mac8/status/2064089849833869389&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;X：Claude Code already has /loop&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Claude 负责架构，GPT 负责编码：多模型分工会成为 AI 编程的新常态吗？</title>
        <link>https://blog.ccino.org/p/claude-gpt-multi-model-coding-workflow/</link>
        <pubDate>Mon, 08 Jun 2026 10:30:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/claude-gpt-multi-model-coding-workflow/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/claude-gpt-multi-model-coding-workflow/imgs/cover.png" alt="Featured image of post Claude 负责架构，GPT 负责编码：多模型分工会成为 AI 编程的新常态吗？" /&gt;&lt;p&gt;今天整理选题时，看到一个挺有意思的 X 线索：有人在真实项目里把 Claude Code 和 GPT / Codex 放到同一个编码流程里用。大概思路是，Claude 负责看整体方向、约束改动范围，GPT 或 Codex 负责把具体代码写出来。&lt;/p&gt;
&lt;p&gt;单看这条推文，当然不能说明什么行业趋势。它热度也不算大，不是那种一夜刷屏的爆款。但它刚好和另外几件事撞到了一起：OpenAI 在强调 Codex 要进入各种角色和工作流，还专门写了一篇 Harness engineering，讲他们怎么让 Codex 在内部项目里承担大规模开发；Reddit 上又有一堆人在讨论 Claude 的成本和用法。放在一起看，我觉得它反而戳中了 AI 编程里一个更真实的问题：我们是不是快要不再问“哪个模型最强”，而是开始问“这个活儿该交给哪个模型，以及要给它什么样的工作环境”？&lt;/p&gt;
&lt;p&gt;以前我们很容易把 AI 编程理解成单模型问题。选一个最强模型，塞进 IDE 或命令行里，让它读需求、改代码、跑测试、修错误，最好一路把 PR 也交出来。&lt;/p&gt;
&lt;p&gt;刚开始这么想很正常。毕竟过去两年模型升级太快，大家的直觉都是：只要模型再强一点，上下文再大一点，Agent 再自动一点，编程这件事就能被一个“万能助手”吃掉。&lt;/p&gt;
&lt;p&gt;但真正用久了会发现，写代码不是一种能力，而是一堆能力混在一起。读项目结构是一回事，判断模块边界是一回事，补样板代码是一回事，修测试又是另一回事。一个模型很擅长长上下文和整体判断，不代表它每次写局部实现都最快；一个模型生成代码很顺，也不代表它适合决定系统应该怎么拆。&lt;/p&gt;
&lt;p&gt;所以“Claude 负责架构，GPT 负责编码”这句话虽然有点粗糙，但它背后的变化值得聊：AI 编程可能正在从单兵作战，变成一个小型模型团队。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-gpt-multi-model-coding-workflow/imgs/cover.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-gpt-multi-model-coding-workflow/imgs/cover_hu_6a15c52db1e77168.png 480w, https://blog.ccino.org/p/claude-gpt-multi-model-coding-workflow/imgs/cover_hu_85f62fc183f9dd15.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Claude 与 GPT 多模型分工的 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;一个需求丢进去，模型立刻开始写，看起来很爽，实际上风险很高。因为代码一旦生成出来，人很容易被它带着走。它新建了一个文件，你就开始思考这个文件怎么补；它抽了一个 helper，你就开始接受这个抽象；它把状态放进某个组件，你就顺着这个方向修 bug。&lt;/p&gt;
&lt;p&gt;问题是，第一步如果错了，后面越勤快，返工越大。&lt;/p&gt;
&lt;p&gt;复杂一点的需求，真正值钱的是前 10 分钟：它应该进哪个模块？现有代码有没有类似模式？哪些地方不能碰？有没有更小的改法？测试应该覆盖什么？这些问题没有想清楚，后面写得再快也只是加速撞墙。&lt;/p&gt;
&lt;p&gt;这也是为什么我觉得 Claude 更适合先站在前面。不是因为它“不会写代码”，而是 Claude Code 这种命令行代理形态，天然更适合读仓库、看上下文、做计划、设边界。让它先把系统结构看一遍，给出一个改动方案，再决定要不要动手，会稳很多。&lt;/p&gt;
&lt;p&gt;这里要强调一下边界：我说的是 Claude Code 这个工作流里的体验，不是说所有 Claude 模型在所有场景里都天然适合做架构师。模型、工具权限、上下文质量、项目复杂度都会影响结果。把它说成“Claude 天生负责架构”就太玄学了。&lt;/p&gt;
&lt;p&gt;更准确的说法是：在今天这批工具里，Claude Code 很适合承担“先把方向看清楚”的角色。&lt;/p&gt;
&lt;h2 id=&#34;写代码这件事反而可以交出去&#34;&gt;写代码这件事，反而可以交出去
&lt;/h2&gt;&lt;p&gt;等方向定下来以后，事情就变了。&lt;/p&gt;
&lt;p&gt;比如你已经知道要改哪两个文件，要保持现有 API 不变，要补一个空状态测试，要把某个重复逻辑抽成函数。这时候再让模型继续讨论架构，反而有点浪费。&lt;/p&gt;
&lt;p&gt;这种边界清楚、反馈明确的任务，GPT / Codex 往往很合适。它可以很快生成实现，补齐样板，改一批相似代码。错了也比较容易抓，因为范围小、测试能跑、diff 能看。&lt;/p&gt;
&lt;p&gt;这就像真实团队里，tech lead 不一定要亲手写完所有业务代码。方向定了以后，让更擅长执行的人快速推进，再把结果拿回来 review，效率通常更高。&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;多模型协作的一个好处，就是天然引入了不同错误模式。Claude 给方案，GPT 写实现，再让 Claude 或另一个模型看 diff，这比一个模型全程自说自话更接近真实工程流程。&lt;/p&gt;
&lt;p&gt;不过这也不是灵丹妙药。多个模型如果没有共同上下文，只会互相误会。Claude 说“保持 API 不变”，GPT 如果没看到现有接口细节，照样可能改飞。GPT 写完代码，Claude 如果只看到摘要看不到完整 diff，review 也会变成空谈。&lt;/p&gt;
&lt;p&gt;所以多模型协作真正难的不是“同时调用几个模型”，而是怎么把上下文、约束和验收标准传清楚。&lt;/p&gt;
&lt;h2 id=&#34;harness-才是多模型分工的底座&#34;&gt;Harness 才是多模型分工的底座
&lt;/h2&gt;&lt;p&gt;这里就要说到 Harness。&lt;/p&gt;
&lt;p&gt;OpenAI 那篇 Harness engineering 里，最值得注意的其实不是“Codex 写了多少行代码”，而是他们反复强调的一点：人类工程师的工作，正在从亲手写代码，变成设计环境、指定意图、搭反馈循环。&lt;/p&gt;
&lt;p&gt;这句话放到多模型分工里也一样成立。你不能只是说“Claude 做架构，GPT 写代码”，然后把两个聊天窗口来回复制。真正能跑起来的工作流，需要一个 Harness 把它们接住。&lt;/p&gt;
&lt;p&gt;所谓 Harness，我理解得很朴素：它不是某个神秘框架，而是一套让 Agent 能稳定工作的工程环境。里面至少包括几件事：任务怎么拆，模型能看到哪些资料，代码怎么跑，测试怎么反馈，日志怎么暴露，review 怎么触发，失败以后怎么回滚或重试。&lt;/p&gt;
&lt;p&gt;OpenAI 的做法里有几个点很值得借鉴。&lt;/p&gt;
&lt;p&gt;比如他们不是把所有规则塞进一个巨大的 &lt;code&gt;AGENTS.md&lt;/code&gt;，而是把它做成目录入口，真正的架构文档、执行计划、质量标准、产品约束放在仓库里的结构化文档中。这样 Agent 先看到地图，再按需要去读细节，而不是一上来被一本 1000 页手册砸晕。&lt;/p&gt;
&lt;p&gt;再比如，他们会把应用本身变得“对 Agent 可读”。UI 能通过浏览器工具验证，日志和指标能被查询，测试和 lint 能把错误直接暴露给 Agent。这样模型不是凭感觉说“我修好了”，而是能启动应用、复现问题、观察结果、再继续改。&lt;/p&gt;
&lt;p&gt;还有一点我觉得特别关键：他们强调用机械规则约束架构和品味。依赖方向、文件大小、结构化日志、命名约定、数据边界，这些东西不能只靠口头提醒。能写成 lint 就写成 lint，能变成测试就变成测试。因为 Agent 最怕的是“差不多就行”的隐性标准，它需要可执行的反馈。&lt;/p&gt;
&lt;p&gt;所以，多模型分工不是把几个模型拼在一起就完了。没有 Harness，Claude 的架构建议会丢，GPT 的实现会跑偏，review 也只能停留在嘴上。有了 Harness，不同模型才有同一套事实来源和反馈回路。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-gpt-multi-model-coding-workflow/imgs/harness-workflow.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-gpt-multi-model-coding-workflow/imgs/harness-workflow_hu_4ea396f74c6486c6.png 480w, https://blog.ccino.org/p/claude-gpt-multi-model-coding-workflow/imgs/harness-workflow_hu_4f52d185158cca8c.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Harness 工程环境支撑 Claude 与 GPT 多模型分工&#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;第一步，只让 Claude 看项目和需求，不急着写代码。让它说明：应该改哪里，为什么改这里，有没有类似实现，最小改动是什么，哪些风险要注意。这个阶段的产物最好是一份计划，而不是一堆新文件。&lt;/p&gt;
&lt;p&gt;这里最好顺手把计划写进仓库，而不是留在聊天记录里。哪怕只是一个很短的 Markdown，也比散落在对话里强。Agent 看不到的东西，对它来说就等于不存在；下一轮换成 GPT / Codex 执行时，如果计划没有变成可读文件，它只能靠你转述。&lt;/p&gt;
&lt;p&gt;第二步，把计划拆成小任务。比如“只改这个组件”“补这个 service”“新增这两个测试”“不要改现有接口”。这些任务可以交给 GPT / Codex 做。要求越具体，模型越不容易发散。&lt;/p&gt;
&lt;p&gt;第三步，把实际 diff 拿回来审。这里不要只问“有没有 bug”，而要问更工程化的问题：有没有破坏项目约定？有没有过度抽象？有没有隐性状态重复？有没有更小的改法？测试是不是只覆盖了快乐路径？&lt;/p&gt;
&lt;p&gt;如果有条件，review 不应该只靠模型读代码。把测试、lint、启动日志、浏览器截图、关键指标这些反馈接进来，效果会完全不同。Harness 的意义就在这里：它把“我觉得可以”变成“我跑过了、看到了、验证过了”。&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/claude-gpt-multi-model-coding-workflow/imgs/multi-model-review-loop.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-gpt-multi-model-coding-workflow/imgs/multi-model-review-loop_hu_500457d74fa0ced7.png 480w, https://blog.ccino.org/p/claude-gpt-multi-model-coding-workflow/imgs/multi-model-review-loop_hu_ebcd83bec57419e9.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Claude 规划、GPT 编码、模型审查与人类拍板的闭环&#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 上关于 Claude 费用的讨论也很热。这个背景不能忽略。&lt;/p&gt;
&lt;p&gt;如果所有任务都用最强、最贵、最会思考的模型来做，体验当然好，但账单也会很真实。尤其是长上下文读仓库、反复跑工具、多轮修复，这些都是容易烧 token 的场景。&lt;/p&gt;
&lt;p&gt;多模型分工某种程度上也是成本工程。&lt;/p&gt;
&lt;p&gt;该用强模型判断方向时就用强模型。方向定了以后，一些局部实现、格式调整、批量修改，就可以交给更快或更便宜的模型。最后再把关键 diff 拿回来做高质量审查。&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，一个窗口开 Codex，再把输出复制来复制去。上下文容易丢，格式也乱，人还要在中间当搬运工。&lt;/p&gt;
&lt;p&gt;但我不觉得这种状态会持续太久。&lt;/p&gt;
&lt;p&gt;更合理的形态，是工具层把角色封装好。你发起一个任务，它先用适合规划的模型读项目，再把小任务派给适合实现的模型，最后用审查模型看 diff。用户不一定知道背后调用了几个模型，只会看到任务经过了计划、实现、验证几个阶段。&lt;/p&gt;
&lt;p&gt;到那时，我们讨论的对象可能就不是 Claude、GPT、Gemini 某个品牌，而是 planner、coder、reviewer、tester 这些角色。模型供应商变成后端能力，开发工具负责调度。&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;最直接的是责任边界。Claude 说这个方案可行，GPT 按方案写了，另一个模型 review 时又说不建议这么做，最后听谁的？如果没有明确规则，多模型协作很容易变成几个 AI 在你面前开会。&lt;/p&gt;
&lt;p&gt;还有上下文问题。每多一个模型，就多一次信息转述。转述就会丢细节。原始需求里的一个限制、项目里的一个约定、测试里的一个隐含假设，都可能在传递中消失。&lt;/p&gt;
&lt;p&gt;再就是延迟。一个任务如果要规划、实现、审查、再修复，质量可能提高，但响应时间也会变长。不是所有事情都值得这么做。小改动、小脚本、小 bug，用单模型一次性处理就好。&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;你还是得懂代码。不懂代码，就看不懂 diff，也判断不了模型是不是把项目带偏。你还得懂架构，因为任务怎么拆、边界怎么定、哪些地方不能碰，这些不是模型自动替你负责的。&lt;/p&gt;
&lt;p&gt;只是工作重心会变。以前重点是“我能不能把代码写出来”。后来变成“我能不能让 AI 帮我更快写出来”。再往后，可能会变成“我能不能把任务交给合适的模型，并设计出可靠的验收方式”。&lt;/p&gt;
&lt;p&gt;这其实更考验工程能力。会写提示词只是很小一部分。真正难的是把需求拆清楚，把约束写明白，把反馈闭环建起来，把 AI 产出的东西收进一个可维护的系统里。&lt;/p&gt;
&lt;p&gt;不会用 AI 的程序员会吃亏，只会让 AI 写代码的程序员也会遇到瓶颈。更有优势的，可能是能把 AI 当成一个工程团队来调度的人。&lt;/p&gt;
&lt;h2 id=&#34;最后说两句&#34;&gt;最后说两句
&lt;/h2&gt;&lt;p&gt;“Claude 负责架构，GPT 负责编码”不应该被理解成固定公式。今天这个组合好用，明天也可能换成 Gemini、本地模型、专用代码模型，甚至同一个模型的不同配置。&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;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/MattRogish/status/2063779079082414099&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;X：Matt Rogish 关于 Claude Code 与 GPT / Codex 分工协作的推文&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openai.com/index/codex-for-every-role-tool-workflow/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI：Codex for every role, tool, and workflow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openai.com/index/harness-engineering/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI：Harness engineering: leveraging Codex in an agent-first world&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://claude.com/blog/introducing-dynamic-workflows-in-claude-code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude：Introducing dynamic workflows in Claude Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://reddit.com/r/ClaudeAI/comments/1twdx8k/how_can_we_reduce_costs/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reddit：How can we reduce costs?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=jDb6Fs9jqgI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;YouTube：Ruflo - Multi-Agent AI Harness for Claude Code &amp;amp; Codex&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>OpenAI 和 Anthropic 都在讲执行框架，但路线完全不同</title>
        <link>https://blog.ccino.org/p/openai-anthropic-harness-divergence-2026/</link>
        <pubDate>Sun, 07 Jun 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/openai-anthropic-harness-divergence-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/openai-anthropic-harness-divergence-2026/imgs/cover-harness-divergence.jpeg" alt="Featured image of post OpenAI 和 Anthropic 都在讲执行框架，但路线完全不同" /&gt;&lt;p&gt;过去几个月，Agent 执行框架这个词突然变得很热。&lt;/p&gt;
&lt;p&gt;这不只是因为大家又发明了一个新术语。更直接的原因是，AI 编程工具已经走到一个新阶段：模型不只是帮你补全代码，也不只是回答“这个 bug 该怎么修”，而是开始真的读仓库、跑命令、开浏览器、写测试、提 PR，甚至在你睡觉时连续工作几个小时。&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;OpenAI 最近发布了一篇工程文章，标题是《Harness engineering: leveraging Codex in an agent-first world》。里面讲了一个相当激进的实验：他们用 Codex 从一个空仓库开始，构建并发布了一个内部 beta 软件产品，而且按文章说法，所有应用逻辑、测试、CI 配置、文档、可观测性和内部工具，都是 Codex 写的。OpenAI 估算，这个项目大约用 1/10 的时间完成；五个月后，仓库已经接近百万行代码，期间合并了约 1500 个 PR。&lt;/p&gt;
&lt;p&gt;另一边，Anthropic 在 6 月 2 日发布了 Claude Code 的 Dynamic Workflows（动态工作流）。文章开头就说，Claude Code 现在可以“on the fly”写出自己的多智能体执行框架，为当前任务定制工作流。它不是固定流程模板，而是让 Claude 根据任务需要生成一段 JavaScript 工作流，协调多个子智能体、做并行分发、做验证、做筛选，必要时还可以为不同子任务选择模型和工作树隔离方式。&lt;/p&gt;
&lt;p&gt;两家公司都在讲执行框架，但它们讲的其实不是同一件事。&lt;/p&gt;
&lt;p&gt;而且这不是两个官方博客之间的抽象路线之争。Twitter/X 上这两天围绕编程智能体的讨论，已经把问题说得更直白：有人把 Claude Code、Codex 和 Copilot 并行跑在隔离 worktree 和 tmux session 里，称编程智能体需要一个控制面；也有人发布 claude-tap 这类本地代理工具，专门检查 AI 编程智能体的提示词、工具结构定义和流式响应。换句话说，开发者社区已经不满足于“让模型写代码”，而是在追问：这个会行动的模型到底被谁调度、被谁观察、被谁约束。&lt;/p&gt;
&lt;p&gt;两家公司都在讲执行框架，但它们讲的其实不是同一件事。&lt;/p&gt;
&lt;p&gt;OpenAI 更像是在说：当 Codex 成为主力开发者，人类工程师要把仓库、文档、工具、验证、架构约束都变成 Codex 能读懂、能执行、能持续维护的工程脚手架。&lt;/p&gt;
&lt;p&gt;Anthropic 更像是在说：当 Claude Code 遇到长程、并行、对抗性、结构化任务时，不要把所有事情塞进一个上下文窗口，而是让 Claude 临时生成一个更适合当前问题的执行系统。&lt;/p&gt;
&lt;p&gt;一个偏“把组织流程和仓库结构标准化”，一个偏“让模型动态编排任务”。这条分叉，可能会决定未来 AI 编程工具到底长什么样。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/openai-anthropic-harness-divergence-2026/imgs/cover-harness-divergence.jpeg&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/openai-anthropic-harness-divergence-2026/imgs/cover-harness-divergence_hu_21163e27441de352.jpeg 480w, https://blog.ccino.org/p/openai-anthropic-harness-divergence-2026/imgs/cover-harness-divergence_hu_3e609a865128c25a.jpeg 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;OpenAI 与 Anthropic 的 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;openai-的路线先把仓库变成-agent-能工作的环境&#34;&gt;OpenAI 的路线：先把仓库变成 Agent 能工作的环境
&lt;/h2&gt;&lt;p&gt;OpenAI 那篇文章里，最关键的一句话不是“0 行人工写代码”，而是：&lt;strong&gt;Humans steer. Agents execute.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这句话很容易被理解成“人类不写代码了”。但文章真正讨论的，是人类工程师的工作重心发生了变化。&lt;/p&gt;
&lt;p&gt;在这个项目里，人类不再直接写代码，而是设计环境、指定意图、建立反馈回路，让 Codex 智能体能可靠工作。文章提到，早期进展慢，不是因为 Codex 写不了，而是因为环境“定义不足”。Agent 缺少必要的工具、抽象和内部结构，没法从高层目标稳定推进。&lt;/p&gt;
&lt;p&gt;这很像给一个新同事搭建入职系统。你不能只告诉他“把产品做出来”，然后等他自己摸索。你要给他仓库结构、架构图、规范、测试、工具链、日志入口、代码评审方式，还要告诉他哪些东西能碰，哪些东西不能碰。&lt;/p&gt;
&lt;p&gt;OpenAI 的做法有几个很鲜明的特点。&lt;/p&gt;
&lt;p&gt;第一，它把仓库知识变成权威记录系统。&lt;/p&gt;
&lt;p&gt;文章里说，他们尝试过“一个巨大的 AGENTS.md”，后来发现这种方式会失败。原因很直观：上下文是稀缺资源，所有东西都写进一个大文件，反而会让 Agent 迷路；规则太多等于没有规则；文档很快腐烂；也不容易机械验证。&lt;/p&gt;
&lt;p&gt;所以他们把 AGENTS.md 做成目录，而不是百科全书。真正的知识放在结构化的 docs 目录里，包括设计文档、执行计划、产品规格、架构文件、质量评分、可靠性要求等。Agent 从一个短入口开始，再按需进入更深的资料。&lt;/p&gt;
&lt;p&gt;这其实是给 Agent 做“渐进式披露”。&lt;/p&gt;
&lt;p&gt;人类新人也不适合第一天读完公司所有文档。更好的方式是先知道地图在哪里，再根据任务找对应资料。对 Agent 也一样。&lt;/p&gt;
&lt;p&gt;第二，它强调应用可读性和智能体可读性。&lt;/p&gt;
&lt;p&gt;OpenAI 让 Codex 能启动每个 worktree 里的应用实例，用 Chrome DevTools Protocol 观察 DOM、截图和导航；也给它接入本地可观测性栈，让它能查日志、指标和追踪记录。这样，“确保服务启动低于 800ms”或“这四条关键路径里没有调用片段超过 2 秒”就不再是抽象要求，而是 Agent 可以直接验证的任务。&lt;/p&gt;
&lt;p&gt;这一步很重要。&lt;/p&gt;
&lt;p&gt;很多 AI 编程失败，不是代码语法错了，而是 Agent 只能在想象里验证结果。它觉得页面能用，实际按钮没反应；它觉得接口修好了，真实链路还有鉴权问题；它觉得性能改善了，但没有读到指标。&lt;/p&gt;
&lt;p&gt;OpenAI 的路线是把真实反馈接进 Codex 能理解的环境里。&lt;/p&gt;
&lt;p&gt;这也解释了为什么社区会开始讨论编程智能体的控制面。一个 Agent 能同时读仓库、改文件、开浏览器、跑测试，听起来很强；但如果没有统一的任务入口、隔离的执行环境、可追踪的 session、可审查的分支和可复盘的工具调用记录，它越强，系统越难管理。所谓执行框架，不只是让 Agent 有工具，而是让人类能看见 Agent 如何使用这些工具。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/openai-anthropic-harness-divergence-2026/imgs/agent-control-plane.jpeg&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/openai-anthropic-harness-divergence-2026/imgs/agent-control-plane_hu_d202b4a1efd55d72.jpeg 480w, https://blog.ccino.org/p/openai-anthropic-harness-divergence-2026/imgs/agent-control-plane_hu_de51b9da657b9b17.jpeg 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Coding 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;第三，它用机械规则约束架构和工程品味。&lt;/p&gt;
&lt;p&gt;文章里提到，他们通过自定义代码检查器 和结构测试，限制业务域里的依赖方向，要求边界解析数据形状，检查结构化日志、命名约定、文件大小限制和可靠性要求。更有意思的是，代码检查器的错误消息会写成能给 Agent 直接修复提示的形式。&lt;/p&gt;
&lt;p&gt;这不是人类团队里那种“代码风格建议”。对 Agent 来说，这些规则是硬边界。它们把人类的工程品味 和架构判断编码到系统里，让 Agent 不必每次都重新猜。&lt;/p&gt;
&lt;p&gt;所以 OpenAI 这条路线的核心不是“Codex 更聪明了”，而是“仓库被改造成了 Codex 能连续工作的场地”。&lt;/p&gt;
&lt;p&gt;它的执行框架更像一个组织级工程控制系统：文档是地图，工具是手脚，代码检查和测试是边界，日志和浏览器是感知，PR 和评审是反馈循环。&lt;/p&gt;
&lt;h2 id=&#34;anthropic-的路线让-claude-临时生成适合任务的执行框架&#34;&gt;Anthropic 的路线：让 Claude 临时生成适合任务的执行框架
&lt;/h2&gt;&lt;p&gt;Anthropic 的 Dynamic Workflows（动态工作流）文章，关注点不太一样。&lt;/p&gt;
&lt;p&gt;它承认默认 Claude Code 执行框架对很多编码任务已经很好用。但当任务变得很长、需要大量并行、需要结构化处理，或者需要对抗性验证时，单一上下文窗口会暴露几个问题。&lt;/p&gt;
&lt;p&gt;文章列了三个典型失败模式：智能体懒惰、自我偏好偏差、目标漂移。&lt;/p&gt;
&lt;p&gt;换成人话，就是：Claude 做到一半可能提前宣布完成；它可能偏爱自己刚刚得出的结论；任务跑太久以后，最初目标会在上下文压缩和多轮执行里慢慢变形。&lt;/p&gt;
&lt;p&gt;这些问题很像人类长时间工作时的疲劳和偏见。区别在于，人类团队可以分工：有人写，有人审，有人质疑，有人整合。Anthropic 的 Dynamic Workflows（动态工作流），就是把这种分工结构交给 Claude 去临时搭建。&lt;/p&gt;
&lt;p&gt;它的机制也很清楚：工作流执行一段 JavaScript 文件，里面有特殊函数可以启动并协调子智能体。每个子智能体有自己的上下文窗口，可以针对一个更小、更干净的目标工作。工作流本身负责流水线、并行、同步关卡、验证、多方案竞赛 这些结构。&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 来干活”。如果只是多开几个 Agent，成本更高，混乱也更大。真正有价值的是：&lt;strong&gt;工作流把任务结构、验证顺序和停止条件显式化了。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这就是 Anthropic 路线和 OpenAI 路线的差异。&lt;/p&gt;
&lt;p&gt;OpenAI 更像是在仓库和组织流程里提前固化一套长期执行框架。Anthropic 则把 执行框架的一部分生成权交给模型：遇到复杂任务时，Claude 可以先判断该用什么结构，再写出一个临时执行系统。&lt;/p&gt;
&lt;p&gt;这和 Claude Code 的产品气质是一致的。&lt;/p&gt;
&lt;p&gt;Claude Code 一直不只是 IDE 插件，而更像一个命令行里的工程搭档。Dynamic Workflows（动态工作流） 进一步把它从“执行一个计划”推进到“设计一个执行系统”。当你说“用工作流找出过去 50 次会话里我反复纠正的问题，并把它们沉淀成 CLAUDE.md 规则”，它不只是搜索日志，而是可以创建分类智能体、聚类智能体、验证智能体、规则生成智能体，然后把结果合并。&lt;/p&gt;
&lt;p&gt;它的优势在于适应性。&lt;/p&gt;
&lt;p&gt;你不需要提前为所有任务写好工作流。Claude 可以根据任务现场生成一个。对研究、代码迁移、深度验证、批量排序、故障根因分析这类问题，这种动态结构很自然。&lt;/p&gt;
&lt;p&gt;它的风险也在这里。&lt;/p&gt;
&lt;p&gt;动态生成工作流往往更费 token，更难预测，也更依赖模型自己判断“这个任务值不值得动用更多计算”。Anthropic 文章也提醒，Dynamic Workflows（动态工作流） 不适合所有任务。普通编码任务不一定需要 5 个审查者，也不一定需要多方案竞赛。&lt;/p&gt;
&lt;p&gt;这不是日常默认模式，更像高价值复杂任务的加速器。&lt;/p&gt;
&lt;p&gt;有意思的是，swyx 最近在 X 上提到一个比“always use plan mode”更聪明的做法：不要只是命令模型执行，而是把任务框成一个问题，让模型先反驳、评分、提出替代方案，再决定怎么做。这个说法和 Dynamic Workflows（动态工作流） 的精神很接近。真正重要的不是多一个“计划模式”按钮，而是让 Agent 先判断任务结构：这件事需要线性执行，还是需要并行探索？需要一个审查者，还是需要多个互相独立的验证者？需要直接改代码，还是应该先定义验证标准？&lt;/p&gt;
&lt;p&gt;所以 Anthropic 的路线并不只是“多 Agent”。它更像把任务设计本身也交给模型参与，让模型在执行前先选择合适的组织形态。&lt;/p&gt;
&lt;h2 id=&#34;两条路线的真正分歧谁来设计执行系统&#34;&gt;两条路线的真正分歧：谁来设计执行系统
&lt;/h2&gt;&lt;p&gt;如果把两篇文章放在一起看，会发现它们其实在争同一个问题：&lt;strong&gt;Agent 时代，到底谁来设计执行系统？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;OpenAI 的答案更偏工程组织。&lt;/p&gt;
&lt;p&gt;人类把知识库整理好，把架构边界写清楚，把代码检查器和测试建好，把应用、日志、指标暴露给 Codex。Codex 在这个系统里高速执行。人类的工作不是一行行写代码，而是在更高层次上设计约束、指定目标、维护反馈回路。&lt;/p&gt;
&lt;p&gt;这条路线像平台工程。&lt;/p&gt;
&lt;p&gt;它假设一个团队愿意长期投资，把自己的仓库改造成 Agent 友好的环境。投入越多，Codex 越能长期稳定产出。它适合内部产品、大型代码库、企业级软件团队，也适合那些愿意把 Agent 当成“新工程团队成员”来建设基础设施的组织。&lt;/p&gt;
&lt;p&gt;Anthropic 的答案更偏任务现场。&lt;/p&gt;
&lt;p&gt;默认执行框架解决大多数任务；当任务超出单窗口能力时，Claude 自己写工作流，临时组织子智能体，用结构化模式对抗懒惰、偏见和目标漂移。人类不用提前设计所有流程，只要给出目标和约束，让 Claude 在运行时选择合适的编排方式。&lt;/p&gt;
&lt;p&gt;这条路线像自适应执行器。&lt;/p&gt;
&lt;p&gt;它适合一次性复杂任务、研究、审计、迁移、验证和探索。你不一定有长期平台投资，也不一定知道任务结构该怎么拆。你让 Claude 先想清楚“怎么干”，再让它调度多个智能体 去干。&lt;/p&gt;
&lt;p&gt;这两条路线没有绝对优劣。&lt;/p&gt;
&lt;p&gt;OpenAI 的路线更稳，但前期投入高。你要维护文档系统、代码检查、可观测性、结构化规范、评审流程。它像把 AI 编程纳入工程组织的日常生产系统。&lt;/p&gt;
&lt;p&gt;Anthropic 的路线更灵活，但更依赖模型临场判断。它可以快速适配新问题，也可能在不必要的时候过度编排。它像给高级开发者一个可以随手搭建任务流水线的工具箱。&lt;/p&gt;
&lt;p&gt;如果用一句话概括：&lt;/p&gt;
&lt;p&gt;OpenAI 在问：“怎样把我们的软件工程组织改造成 Codex 能持续工作的系统？”&lt;/p&gt;
&lt;p&gt;Anthropic 在问：“怎样让 Claude 针对当前任务临时生成一个足够好的工作系统？”&lt;/p&gt;
&lt;h2 id=&#34;这对普通开发者意味着什么&#34;&gt;这对普通开发者意味着什么
&lt;/h2&gt;&lt;p&gt;这里还要加一个现实问题：权限边界。&lt;/p&gt;
&lt;p&gt;如果说 OpenAI 和 Anthropic 的官方文章更关注“怎样让 Agent 更有效地完成任务”，那开发者社区补上的另一半问题是：怎样让它不要越界。Simon Willison 最近连续提到两个很有代表性的点：一是他在寻找 沙箱中的 Python 方案，用 WebAssembly 里的 MicroPython 在 Python 应用中安全运行代码；二是他提醒，大多数人都不会把购买权限交给任何附着在 LLM 上的东西。&lt;/p&gt;
&lt;p&gt;这两件事其实都在说同一个原则：&lt;strong&gt;Agent 不是普通函数调用，它是带有判断能力的行动者，所以它需要比普通自动化脚本更清晰的权限设计。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;让 Agent 改一个测试文件、查询一段日志、打开一个浏览器页面，和让它删除数据库、购买服务、发起链上交易，不是同一种风险。前者是工程生产力，后者已经接近经营权限。最近围绕 MCP 的讨论也在往这个方向走：当 Base MCP 这类网关让 Claude 或 ChatGPT 能从聊天界面触发 DeFi 动作时，“不持有私钥”只是第一层保护，更关键的是谁定义动作白名单、谁审批高风险操作、谁记录审计链路。&lt;/p&gt;
&lt;p&gt;所以对普通开发者来说，执行框架不只是效率工具，也是一套安全边界。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/openai-anthropic-harness-divergence-2026/imgs/agent-permission-sandbox.jpeg&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/openai-anthropic-harness-divergence-2026/imgs/agent-permission-sandbox_hu_4e22243c4de1647b.jpeg 480w, https://blog.ccino.org/p/openai-anthropic-harness-divergence-2026/imgs/agent-permission-sandbox_hu_933de962cb615112.jpeg 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;p&gt;你不需要一开始就搭完整平台，但至少要想清楚三件事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Agent 可以读什么？&lt;/li&gt;
&lt;li&gt;Agent 可以改什么？&lt;/li&gt;
&lt;li&gt;Agent 做到什么程度必须停下来问人？&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这三个问题，比“用哪个模型”更基础。&lt;/p&gt;
&lt;p&gt;很多开发者看完这类文章，容易得出一个很吓人的结论：未来是不是必须搭一整套 Agent 平台，才能继续写代码？&lt;/p&gt;
&lt;p&gt;我觉得没必要这么焦虑。&lt;/p&gt;
&lt;p&gt;对个人开发者和小团队来说，更实际的做法不是照搬 OpenAI 的百万行 智能体生成的代码库，也不是每个任务都让 Claude 写工作流。更好的起点，是先区分两类场景。&lt;/p&gt;
&lt;p&gt;第一类是重复出现的任务。&lt;/p&gt;
&lt;p&gt;比如你的项目每次改 API 都要更新文档、跑测试、检查类型、生成 changelog；每次写文章都要查资料、做事实核验、转微信公众号 HTML；每次发布前都要检查 frontmatter、图片路径、Hugo 构建。&lt;/p&gt;
&lt;p&gt;这种任务更适合 OpenAI 式思路：把流程固化下来。写 CLAUDE.md，写脚本，写检查清单，做 hooks，做技能，做发布前检查。不要每次都靠“请你认真一点”。把反复出现的失败，变成流程资产。&lt;/p&gt;
&lt;p&gt;第二类是一次性复杂任务。&lt;/p&gt;
&lt;p&gt;比如迁移一个大仓库、审计一批 PR、验证一篇长文所有技术断言、从 80 个候选里筛出最好的 10 个、分析一次故障的多种根因。&lt;/p&gt;
&lt;p&gt;这种任务更适合 Anthropic 式思路：不要让一个 Agent 在一个上下文窗口里硬扛到底。让它 并行分发，让它生成假设，让不同 agent 独立验证，让最后的汇总步骤负责合并。这里 工作流的价值会比普通 提示词 大得多。&lt;/p&gt;
&lt;p&gt;真正重要的不是选择 OpenAI 还是 Anthropic，而是不要再把 AI 编程理解成“给模型一句话，然后等结果”。&lt;/p&gt;
&lt;p&gt;只要 Agent 开始行动，它就需要执行系统。&lt;/p&gt;
&lt;p&gt;这个系统可以很小：一个测试命令，一个不允许删库的权限规则，一个发布前检查脚本，一个 README 里的项目地图。&lt;/p&gt;
&lt;p&gt;也可以很大：多智能体工作流、工作树隔离、结构化文档、可观测性栈、自动评审、持续垃圾回收。&lt;/p&gt;
&lt;p&gt;这里的关键不是技术名词，而是控制面。一个成熟的 智能体工作环境，至少应该回答四个问题：任务如何分配，执行如何隔离，过程如何观察，结果如何验证。没有这些，Agent 越能干，越像一个高权限黑盒。&lt;/p&gt;
&lt;p&gt;规模不同，本质一样：让 Agent 在现实反馈里工作，而不是在语言自洽里工作。&lt;/p&gt;
&lt;h2 id=&#34;真正的变化代码不再是唯一产物&#34;&gt;真正的变化：代码不再是唯一产物
&lt;/h2&gt;&lt;p&gt;OpenAI 那篇文章里有个细节值得多想一下。&lt;/p&gt;
&lt;p&gt;当他们说“所有代码都是 Codex 写的”时，列出来的不只是产品代码，还包括测试、CI、文档、可观测性、内部工具、评估框架、评审意见和生产仪表盘定义。&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;一份好的架构文档，不只是给新人看的，也是给 Agent 看的。一条好的 代码检查错误，不只是提示人类改格式，也是把修复路径注入 Agent 上下文。一套好的测试，不只是防止回归，也是让 Agent 知道自己什么时候真的完成。&lt;/p&gt;
&lt;p&gt;这也解释了为什么“AI 写了多少代码”这个指标越来越没意思。&lt;/p&gt;
&lt;p&gt;如果一个 Agent 写了 5000 行代码，但没有测试、没有边界、没有验证、没有回滚，它可能只是制造了更多技术债。相反，一个 Agent 只改了 50 行代码，但同时补齐了测试、文档和规则，让以后同类问题不会再发生，这才是更高质量的产出。&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;你能不能判断什么时候该让 Agent 自主跑，什么时候必须停下来问人？&lt;/p&gt;
&lt;p&gt;这些问题，比“会不会写 提示词”更接近真正的 AI 工程。&lt;/p&gt;
&lt;h2 id=&#34;结尾执行框架是-ai-编程从演示走向生产的分水岭&#34;&gt;结尾：执行框架是 AI 编程从演示走向生产的分水岭
&lt;/h2&gt;&lt;p&gt;如果说 2023 年的关键词是 提示词，2025 年的关键词是 上下文，那么 2026 年的关键词很可能就是 执行框架。&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 的分歧，表面上是 Codex 和 Claude Code 的产品路线不同。深一点看，是两种 Agent 工程哲学。&lt;/p&gt;
&lt;p&gt;社区讨论把这个分歧又往前推了一步：无论你选择哪种路线，最后都绕不开同一组基础设施问题。你需要控制面来分配任务，需要可观测性来看见 提示词、工具结构定义和流式响应，需要沙箱来限制执行环境，需要权限边界来决定哪些动作必须人工确认。&lt;/p&gt;
&lt;p&gt;没有这些东西，Agent 只是一个更会写代码的黑盒。有了这些东西，Agent 才可能成为工程系统的一部分。&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;日常生产需要 OpenAI 式的稳定脚手架。高价值复杂任务需要 Anthropic 式的动态编排。真正成熟的团队，可能会同时拥有两者：平时靠固定流程保障质量，遇到复杂问题时再让 Agent 临时搭一个更强的执行系统。&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;/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/harness-engineering/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI: Harness engineering: leveraging Codex in an agent-first world&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://claude.com/blog/a-harness-for-every-task-dynamic-workflows-in-claude-code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic: A harness for every task: dynamic workflows in Claude Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openai.com/index/codex-for-every-role-tool-workflow/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI: Codex for every role, tool, and workflow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/AnthropicAI/status/2062979607448682731&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Twitter/X: Anthropic 发布 Making Claude a chemist&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/OpenAI/status/2062927046448431587&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Twitter/X: OpenAI 账号误封与订阅 credit 问题说明&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/simonw/status/2062909457433260513&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Twitter/X: Simon Willison 关于 AI coding 与工程经验的讨论&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/simonw/status/2063116647448383966&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Twitter/X: Simon Willison 的 MicroPython in WebAssembly 沙箱实验&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/simonw/status/2063363008429269214&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Twitter/X: Simon Willison 关于不要给 LLM 智能体 购买权限的提醒&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/swyx/status/2063082950317486133&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Twitter/X: swyx 关于把任务框成问题而非盲目执行的建议&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/zhallen122/status/2063059077912273365&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Twitter/X: 编程智能体需要控制面 的讨论&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/agentseaai/status/2062734907005112774&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Twitter/X: claude-tap 观察 提示词 / 工具结构定义 / 流式响应 的工具线索&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/kaiozinho0172/status/2063396341443961029&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Twitter/X: Base MCP 让 AI 智能体执行链上 DeFi 动作的线索&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>自家 80% 代码都让 AI 写了，Anthropic 却劝同行慢一点</title>
        <link>https://blog.ccino.org/p/anthropic-asks-slow-down-while-coding-with-claude-2026/</link>
        <pubDate>Sat, 06 Jun 2026 11:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/anthropic-asks-slow-down-while-coding-with-claude-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/anthropic-asks-slow-down-while-coding-with-claude-2026/imgs/cover.png" alt="Featured image of post 自家 80% 代码都让 AI 写了，Anthropic 却劝同行慢一点" /&gt;&lt;p&gt;6 月 4 号那天，《华尔街日报》登了一封 Anthropic 写给同行的信。&lt;/p&gt;
&lt;p&gt;信里有一句话我翻来覆去看了好几遍：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;If we could slow down the world&amp;rsquo;s AI development, it would likely be a good thing.&amp;rdquo;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;&amp;ldquo;如果能放慢全球 AI 的研发节奏，这很可能是一件好事。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;说这话的，是 Anthropic 联合创始人 Daniel 和 CEO Dario Amodei 兄妹。正经公司，正经场合，正经署名。&lt;/p&gt;
&lt;p&gt;而就在同一周，VentureBeat 那边发了另一条新闻——&lt;strong&gt;Anthropic 新合并到生产环境的代码里，超过 80% 是 Claude 写的&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/anthropic-asks-slow-down-while-coding-with-claude-2026/imgs/01-scene.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/anthropic-asks-slow-down-while-coding-with-claude-2026/imgs/01-scene_hu_9814a5bc43f73cc0.png 480w, https://blog.ccino.org/p/anthropic-asks-slow-down-while-coding-with-claude-2026/imgs/01-scene_hu_8ed129e5b9dd5f3d.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;hr&gt;
&lt;h2 id=&#34;信里没说的话比说出来的多&#34;&gt;信里没说的话，比说出来的多
&lt;/h2&gt;&lt;p&gt;我把这封信用中文复述一遍，省得大家去翻华尔街日报的付费墙。&lt;/p&gt;
&lt;p&gt;Anthropic 说了三层意思。&lt;/p&gt;
&lt;p&gt;第一层：&lt;strong&gt;我们自己家模型的能力曲线最近爬得很陡&lt;/strong&gt;。从 2024 年到 2026 年，自家最强模型在&amp;quot;长程任务、自主规划、代码生成&amp;quot;这几个关键维度上，曲线斜率明显变大了。他们没给具体数字，但表态很直接：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;我们已经非常接近那个临界点——AI 系统可以在没有人类干预的情况下，改进自己。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;第二层：&lt;strong&gt;希望整个行业慢一点&lt;/strong&gt;，不是单家公司。Anthropic 写得很清楚，是&amp;quot;全球顶尖 AI 实验室考虑放缓研发节奏&amp;quot;。&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;他们凭什么觉得&amp;quot;我们已经接近临界点&amp;quot;？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;答案就藏在那 80% 里。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;80-这个数字比你想的更狠&#34;&gt;80% 这个数字，比你想的更狠
&lt;/h2&gt;&lt;p&gt;我盯着这个 80% 看了一会儿。&lt;/p&gt;
&lt;p&gt;你得知道，这不是 Anthropic 第一次披露这种数字了。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2025 年 9 月，Dario Amodei 在 Lex Fridman 播客上说&amp;quot;&lt;strong&gt;Anthropic 70%、80%、90% 的代码是 Claude 写的&lt;/strong&gt;&amp;quot;——r/ClaudeAI 上那个帖拿了快 4000 赞。&lt;/li&gt;
&lt;li&gt;2026 年 1 月，Anthropic 工程师 Addy Osmani 写了篇长文披露：&lt;strong&gt;Claude Code 仓库约 90% 的代码是 Claude Code 自己写的&lt;/strong&gt;。这事我当时还专门写过一篇，叫《Claude Code的「自举」奇迹：90%的代码是AI写的》。&lt;/li&gt;
&lt;li&gt;2026 年 6 月 4 日，VentureBeat 给出最新数字：&lt;strong&gt;新合并到生产环境的代码里 80% 是 Claude 写的&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;三个数字，半年时间，从 90% 回到 80%。&lt;strong&gt;这个曲线不是退步，是工业化&lt;/strong&gt;——90% 是探索期的极限值，80% 是稳态的工程值。当 Claude 在 Anthropic 内部从&amp;quot;偶尔出彩&amp;quot;变成&amp;quot;日用品&amp;quot;，数字自然回落。&lt;/p&gt;
&lt;p&gt;但这件事本身已经够吓人了：&lt;strong&gt;一家公司内部最核心的代码资产，80% 由 AI 写，工程师变成&amp;quot;审稿人&amp;quot;&lt;/strong&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;hr&gt;
&lt;h2 id=&#34;自我改进到底什么意思&#34;&gt;自我改进到底什么意思
&lt;/h2&gt;&lt;p&gt;Anthropic 担心的那个&amp;quot;临界点&amp;quot;，有个专门名字：&lt;strong&gt;RSP，Recursive Self-Improvement，递归自我改进&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;说人话：AI 不只是写代码的工具，而是写自己下一版本的工程师。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/anthropic-asks-slow-down-while-coding-with-claude-2026/imgs/02-rsp-loop.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/anthropic-asks-slow-down-while-coding-with-claude-2026/imgs/02-rsp-loop_hu_5632dd738ee661c5.png 480w, https://blog.ccino.org/p/anthropic-asks-slow-down-while-coding-with-claude-2026/imgs/02-rsp-loop_hu_e1a958bda0fb9464.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;RSP循环&#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;RSP 一旦进入快速循环，会出两个问题。&lt;/p&gt;
&lt;p&gt;第一个叫&lt;strong&gt;失控速度&lt;/strong&gt;。人类对单次训练的结果还能&amp;quot;事后审计&amp;quot;，对&amp;quot;RSP 一天跑 50 代&amp;quot;的结果，审计窗口都没了。Anthropic 这次敢公开说&amp;quot;我们很接近临界点&amp;quot;，就是因为他们在自家产品上&lt;strong&gt;已经观察到了 RSP 趋势&lt;/strong&gt;——这种密度本身就是临界点的真实信号。&lt;/p&gt;
&lt;p&gt;第二个叫&lt;strong&gt;对齐漂移&lt;/strong&gt;。每代自我改进都可能让&amp;quot;目标函数&amp;quot;微妙地偏离最初的人类意图。这一代&amp;quot;我帮你做事&amp;quot;，下一代可能变成&amp;quot;我觉得你想让我做的事&amp;quot;。&lt;/p&gt;
&lt;p&gt;Dario Amodei 这几年一直在讲&amp;quot;race to the top&amp;quot;——AI 公司靠互相竞争，把安全标准越抬越高。&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;短答案：&lt;strong&gt;没听。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;OpenAI 那边，Sam Altman 的回应是&amp;quot;感谢 Anthropic 关心这个话题&amp;quot;——然后 ChatGPT 6 月 4 日 release notes 照常发。&lt;strong&gt;OpenAI 的策略非常清晰：产品节奏不能被任何人的信打断。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Google 和 Meta 直接装没看见。Google 5 月底刚发了 Gemma 4 QAT 模型（HN 269 points），Meta 2026 年的 AI 资本支出是 115-135 亿美元。&lt;strong&gt;让这两家放慢，OpenAI 都不一定能做到。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;倒是有一个反常的信号：GitHub 上的 &lt;code&gt;awesome-ai-agents-2026&lt;/code&gt; 6 月更新提到，DeepSeek 挖了 Jane Street 的资深交易员，&lt;strong&gt;新建了一支&amp;quot;AI Harness&amp;quot;团队&lt;/strong&gt;——不是做下一代预训练模型，而是做&amp;quot;把 V4 装进可验证的工程支架&amp;quot;。&lt;/p&gt;
&lt;p&gt;这种&amp;quot;从模型转向 Harness&amp;quot;的趋势，&lt;strong&gt;某种程度上和 Anthropic 信里那句&amp;quot;慢一点&amp;quot;是同一个方向&lt;/strong&gt;——只是大家从不同方向走过去罢了。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;anthropic-自己这一周有多忙&#34;&gt;Anthropic 自己这一周有多忙
&lt;/h2&gt;&lt;p&gt;把信和数字摊开看，Anthropic 6 月 4 日这一周的动作密度比同行高出一截：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;6 月 2 日，Dynamic Workflows 正式发布——Claude 可写自己的 multi-agent harness。&lt;/li&gt;
&lt;li&gt;6 月 2 日，Opus 4.8 默认 + Fast mode 降价——Max、Team Premium、Enterprise pay-as-you-go 全切。&lt;/li&gt;
&lt;li&gt;6 月 4 日，CEO 公开 80% 新代码由 Claude 写。&lt;/li&gt;
&lt;li&gt;6 月 4 日，呼吁同行&amp;quot;慢一点&amp;quot;。&lt;/li&gt;
&lt;li&gt;6 月 4 日，总裁确认已秘密递交 IPO 草案。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;&amp;ldquo;自相矛盾&amp;quot;在这里解开了&lt;/strong&gt;——Anthropic 喊慢一点，不是因为它跑得慢，是因为它跑得&lt;strong&gt;太清楚&lt;/strong&gt;。它内部有完整的能力曲线数据，比任何同行都更早看见了 RSP 的雪坡。&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;训练 AI 模型是一项高度资本密集型的业务，公开市场非常适合这种情况。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;——Daniela Amodei，Anthropic 总裁，彭博科技大会 6 月 4 日&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;加速、IPO、喊刹车——这三件事 Anthropic 同一周内全做了&lt;/strong&gt;。这是头部 AI 实验室第一次把&amp;quot;加速&amp;quot;和&amp;quot;减速&amp;quot;摆到同一张桌子上。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;中国这边在干嘛&#34;&gt;中国这边在干嘛？
&lt;/h2&gt;&lt;p&gt;36氪 6 月 6 日的 9 点 1氪 整理了这一周中国 AI 圈的现状：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;腾讯：今年大部分代码 AI 生成（汤道生 / 姚顺雨对谈），TokenHub 日 Token 消耗 5 万亿。&lt;/li&gt;
&lt;li&gt;豆包：付费后月活减少 610 万——商业化反噬的活样本。&lt;/li&gt;
&lt;li&gt;小鹏机器人：核心产品一号位施晓鑫 6 月初离职。&lt;/li&gt;
&lt;li&gt;爱彼迎 CEO：计划创办新 AI 实验室。&lt;/li&gt;
&lt;li&gt;阿里 AAIG：要在 AICon 上海站分享&amp;quot;REAL 智能体统一风险矩阵与自动化红队实践&amp;rdquo;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;国内 AI 圈现在的关键词是&amp;quot;卷应用、卷落地&amp;quot;&lt;/strong&gt;。&amp;ldquo;慢一点&amp;quot;这种话题基本不在主轴上。&lt;/p&gt;
&lt;p&gt;但国内有自己应对 RSP 风险的路径：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;阿里在搭红队自动化矩阵（&lt;strong&gt;对侧防御&lt;/strong&gt;）；&lt;/li&gt;
&lt;li&gt;openJiuwen 社区开源了 JiuwenSwarm Auto Harness（&lt;strong&gt;正向驯化&lt;/strong&gt;，让 Harness 也能自进化）；&lt;/li&gt;
&lt;li&gt;中科院 MobileGym 把浏览器秒变 Agent 训练场（&lt;strong&gt;廉价实验场&lt;/strong&gt;）。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Anthropic 这封信对国内的意义不是&amp;quot;该不该慢一点&amp;rdquo;——同行不会听，国内更不会听。&lt;strong&gt;它的真正意义是：国外头部已经公开承认 RSP 风险了，我们这边的安全研究是不是该提速。&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;如果 Anthropic 的判断是真的——RSP 真的接近临界点——那评估 AI 工具的标准必须升级。&lt;/p&gt;
&lt;p&gt;过去一年，我们习惯了这种比较：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;GPT-4.5 编程能力 85 分，Claude Opus 4.6 编程能力 88 分。&amp;rdquo;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;但 RSP 风险进入考量后，更重要的评估维度变成：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;这家实验室的安全对齐团队还稳不稳？
它最近一次模型升级有没有被内部红队真拦下来过？
它公开的能力曲线是收敛还是发散？&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;Anthropic 这封信的最大价值，&lt;strong&gt;不是&amp;quot;劝同行慢一点&amp;quot;——同行不会听&lt;/strong&gt;。而是它把&amp;quot;我们看到了什么&amp;quot;摊到桌面上。这是头部 AI 实验室&lt;strong&gt;第一次用公开数据形式告诉外界：RSP 不是一个抽象的伦理话题，是一个有具体曲线、有具体临界点、有具体时间表的工程问题。&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;strong&gt;2026 年 6 月 4 日这天，Anthropic 做了件非常&amp;quot;不像 AI 公司&amp;quot;的事——它在跑得最快的时候，公开喊了句&amp;quot;慢一点&amp;quot;。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;下次看到 AI 模型又&amp;quot;突破&amp;quot;了某个 benchmark，先别急着喊&amp;quot;颠覆&amp;quot;。看一眼发这条新闻的公司：&lt;/p&gt;
&lt;p&gt;它的安全团队有没有动静？它的 CEO 有没有出来说过类似&amp;quot;我们其实有点担心&amp;quot;的话？它的能力曲线是收敛还是发散？&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;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/p/3840996342073604?f=rss&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic 呼吁全球放缓 AI 开发（36氪 9点1氪 6月6日）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://venturebeat.com/technology/anthropic-says-80-of-its-new-production-code-is-now-authored-by-claude-how-your-enterprise-can-keep-up&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic 80% 新生产代码由 Claude 编写（VentureBeat）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://36kr.com/p/3840996342073604?f=rss&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic 联合创始人称 AI 成本推动公司寻求上市（36氪 / 彭博）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://releasebot.io/updates/anthropic/claude&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic Updates by Anthropic - June 2026（Releasebot）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://claude.com/blog/a-harness-for-every-task-dynamic-workflows-in-claude-code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Code Dynamic Workflows 官方博客（Anthropic）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Zijian-Ni/awesome-ai-agents-2026&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Awesome AI Agents 2026（GitHub）&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://blog.ccino.org/p/anthropic-refuses-pentagon-autonomous-weapons-2026/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic 说不：拒绝美国军方合同，Claude 为何能坚守底线？&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.ccino.org/p/anthropic-claude-cowork-enterprise-2026/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic 最大胆的一步：让 AI 成为你公司的正式员工&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.ccino.org/p/claude-code-bootstrapping-miracle/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Code的「自举」奇迹：90%的代码是AI写的&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>ChatGPT Dreaming vs Hy-Memory：AI 的记忆，到底该放在谁手里？</title>
        <link>https://blog.ccino.org/p/chatgpt-dreaming-memory-2026/</link>
        <pubDate>Fri, 05 Jun 2026 09:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/chatgpt-dreaming-memory-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/chatgpt-dreaming-memory-2026/imgs/cover.png" alt="Featured image of post ChatGPT Dreaming vs Hy-Memory：AI 的记忆，到底该放在谁手里？" /&gt;&lt;p&gt;前几天刚写完 Hy-Memory，我本来不打算这么快再写一次 AI 记忆。&lt;/p&gt;
&lt;p&gt;这个话题很容易写重复。上下文不是记忆、聊天记录不是记忆、Agent 需要把经历沉淀成经验——这些判断我在上一篇里已经说过了，再换个产品名重讲一遍，意义不大。&lt;/p&gt;
&lt;p&gt;但 OpenAI 这次发布 ChatGPT Dreaming，还是值得单独拎出来。&lt;/p&gt;
&lt;p&gt;不是因为它又证明了“长期记忆很重要”。这个已经不用证明了。&lt;/p&gt;
&lt;p&gt;真正有意思的是，它和 Hy-Memory 刚好站在两条路上。&lt;/p&gt;
&lt;p&gt;一边是 ChatGPT Dreaming：记忆被做进平台里，后台自动整理，用户最好什么都不用管。&lt;/p&gt;
&lt;p&gt;另一边是 Hy-Memory：记忆作为 Agent 的外部第二大脑，通过插件、本地服务、分层结构和检索机制接进来，折腾一些，但更接近“用户自己的东西”。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/chatgpt-dreaming-memory-2026/imgs/platform-vs-local-memory.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/chatgpt-dreaming-memory-2026/imgs/platform-vs-local-memory_hu_a10d5079abb5b366.png 480w, https://blog.ccino.org/p/chatgpt-dreaming-memory-2026/imgs/platform-vs-local-memory_hu_4421c56eb2ed68df.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;这两个东西放在一起看，问题就不只是“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;img src=&#34;https://blog.ccino.org/p/chatgpt-dreaming-memory-2026/imgs/cover.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/chatgpt-dreaming-memory-2026/imgs/cover_hu_59b19d6b48bb2af7.png 480w, https://blog.ccino.org/p/chatgpt-dreaming-memory-2026/imgs/cover_hu_d4d80ff81cc1b3f6.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;ChatGPT Dreaming vs Hy-Memory：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;dreaming-这次更新重点不在记得更多&#34;&gt;Dreaming 这次更新，重点不在“记得更多”
&lt;/h2&gt;&lt;p&gt;OpenAI 在 6 月 4 日发了《Dreaming: Better memory for a more helpful ChatGPT》，介绍 ChatGPT 新一代记忆系统 Dreaming V3。&lt;/p&gt;
&lt;p&gt;如果只看产品层面，这次更新很好理解：ChatGPT 会更懂你，能跨对话带着上下文，也能把过期信息更新掉。&lt;/p&gt;
&lt;p&gt;但 OpenAI 文章里有几个细节，比“记忆更强了”更值得看。&lt;/p&gt;
&lt;p&gt;最早的 ChatGPT 记忆，是 2024 年的 saved memories。你要主动告诉它：&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;记住，我 7 月要去新加坡。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;这种方式很像给 AI 写便签。问题也很明显：只有你明确说“记住”的东西，才容易留下来。&lt;/p&gt;
&lt;p&gt;但真实使用里，很多重要信息并不是这样出现的。&lt;/p&gt;
&lt;p&gt;你可能只是在一次次对话里反复表现出某种偏好：不喜欢废话，喜欢先给结论，写文章不要太像营销稿，做项目时先看目录结构。你未必会专门说一句“请记住，我讨厌空泛口号”。&lt;/p&gt;
&lt;p&gt;Dreaming 要解决的，就是这类自然发生在对话里的信息。&lt;/p&gt;
&lt;p&gt;它不是等你主动要求保存，而是在后台从多次对话里合成 ChatGPT 对你的理解。&lt;/p&gt;
&lt;p&gt;这里的关键词不是 memory，而是 synthesis。&lt;/p&gt;
&lt;p&gt;不是保存一句话，而是从一堆对话里提炼出状态。&lt;/p&gt;
&lt;p&gt;这也是为什么它叫 Dreaming。这个名字虽然有点营销味，但方向是对的：整理发生在对话之外。&lt;/p&gt;
&lt;p&gt;你聊天的时候，它服务你；你不聊天的时候，系统在后台把过去的对话重新压缩、合并、更新。&lt;/p&gt;
&lt;p&gt;这和我之前写“语言模型也需要睡觉”的判断是连上的。一个长期工作的 Agent，不能只是不停执行。它需要某种休息、复盘、整理机制。否则上下文越堆越厚，最后反而变笨。&lt;/p&gt;
&lt;p&gt;OpenAI 这次把这件事产品化了。&lt;/p&gt;
&lt;h2 id=&#34;openai-真正在补的是用户模型&#34;&gt;OpenAI 真正在补的是“用户模型”
&lt;/h2&gt;&lt;p&gt;Dreaming 文章里有三个评价目标：带着有用上下文进入下一轮对话、持续遵循偏好和约束、随着时间保持当前性。&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;你以前说过 7 月要去新加坡，这在 6 月是计划，在 8 月就是历史。一个差的记忆系统会一直把“你要去新加坡”当成当前状态；一个好的记忆系统应该知道：这件事已经发生过了，之后再推荐餐厅和外卖时，不该默认你还在新加坡。&lt;/p&gt;
&lt;p&gt;这类例子很小，但方向很大。&lt;/p&gt;
&lt;p&gt;因为用户模型不是几条偏好标签。它包括你的项目、习惯、长期目标、已结束的计划、反复出现的判断、被你否掉过的方案，以及哪些东西已经不该再影响当前决策。&lt;/p&gt;
&lt;p&gt;这也是 OpenAI 为什么要把 Dreaming 做成基础设施。&lt;/p&gt;
&lt;p&gt;文章里提到，近期改进把服务 Dreaming 所需的计算量降低了大约 5 倍，所以才开始给 Free 用户逐步开放，同时提升 Plus / Pro 用户的记忆容量。&lt;/p&gt;
&lt;p&gt;这个 5 倍挺关键。&lt;/p&gt;
&lt;p&gt;它说明长期记忆不是一个小功能，而是成本很重的系统工程。几亿用户、多年对话、持续更新、还要尽量少出错，这不是加个“历史记录检索”就能解决的。&lt;/p&gt;
&lt;p&gt;所以从 OpenAI 角度看，Dreaming 不是锦上添花。&lt;/p&gt;
&lt;p&gt;它是在给 ChatGPT 变成个人助手补地基。&lt;/p&gt;
&lt;h2 id=&#34;hy-memory-看的不是普通用户而是长期合作的-agent&#34;&gt;Hy-Memory 看的不是普通用户，而是长期合作的 Agent
&lt;/h2&gt;&lt;p&gt;再看 Hy-Memory。&lt;/p&gt;
&lt;p&gt;Hy-Memory 的出发点就没那么“消费级”。它不是让一个聊天产品更贴心，而是问一个更工程化的问题：为什么 Agent 刚开始像搭档，三周后像查询工具？&lt;/p&gt;
&lt;p&gt;我之前写那篇时，最打动我的不是“6 层记忆框架”这个数字，而是它承认记忆有密度差异。&lt;/p&gt;
&lt;p&gt;原始痕迹、事件摘要、行为模式、心智模型、知识网络，不应该混在一个抽屉里。&lt;/p&gt;
&lt;p&gt;有些东西只是“当时发生了什么”；有些东西是“为什么这么判断”；还有些是“这个用户、这个项目长期以来遵循什么原则”。&lt;/p&gt;
&lt;p&gt;如果全都当聊天记录存，最后只会变成一个更大的垃圾堆。&lt;/p&gt;
&lt;p&gt;Hy-Memory 的 System1 / System2 也很直观。&lt;/p&gt;
&lt;p&gt;System1 负责实时写入，先别断片。&lt;/p&gt;
&lt;p&gt;System2 负责后台整理，慢慢判断哪些东西值得长期留下，哪些该降权，哪些旧记忆已经被新事实推翻。&lt;/p&gt;
&lt;p&gt;这和 Dreaming 的方向其实很像：都不满足于原始聊天记录，都需要后台整理。&lt;/p&gt;
&lt;p&gt;差异在于，Dreaming 是 OpenAI 平台内置的能力；Hy-Memory 更像给 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;p&gt;如果只讨论今天谁更容易用，平台记忆几乎一定赢。&lt;/p&gt;
&lt;p&gt;大多数人不可能为了“AI 更懂我”去配置向量库、Embedding、插件权限、本地 Python 进程和 JSON 文件。&lt;/p&gt;
&lt;p&gt;他们只想要一件事：我上次说过的，你这次别忘。&lt;/p&gt;
&lt;p&gt;ChatGPT Dreaming 这类能力最强的地方，就是把复杂性藏起来。&lt;/p&gt;
&lt;p&gt;你不需要知道 saved memories、Dreaming V0、Dreaming V3，也不需要知道后台怎么合成记忆。你只会感觉它更连续了：问旅行时更贴近你的偏好，问写作时更像你平时要的风格，问项目时少一点从零开始的尴尬。&lt;/p&gt;
&lt;p&gt;这就是平台产品的优势。&lt;/p&gt;
&lt;p&gt;它不一定最开放，但体验最顺。&lt;/p&gt;
&lt;p&gt;而且 OpenAI 可以在海量真实使用里不断调优：什么记忆该留下，什么该过期，用户怎样查看，怎样修改，怎样避免误记。&lt;/p&gt;
&lt;p&gt;这些事情如果交给本地插件，很容易变成少数工程爱好者才玩得转的东西。&lt;/p&gt;
&lt;p&gt;所以我不觉得 Hy-Memory 这种路线会直接替代 Dreaming。&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;Claude 写代码更稳，ChatGPT 产品生态更强，Gemini 多模态不错。你可以按任务切换。&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;一个用了几个月的 ChatGPT，可能知道你的写作风格、常用项目、旅行偏好、文章选题边界、哪些观点你已经写过、哪些表达你不喜欢。&lt;/p&gt;
&lt;p&gt;这些东西不是一个 prompt 能搬走的。&lt;/p&gt;
&lt;p&gt;它们会慢慢变成平台护城河。&lt;/p&gt;
&lt;p&gt;这也是我看 Dreaming 时最在意的地方。&lt;/p&gt;
&lt;p&gt;OpenAI 当然需要让 ChatGPT 更懂用户。但用户也应该问：这份越来越准确的用户模型，能不能被我看见、修改、导出、迁移？&lt;/p&gt;
&lt;p&gt;Memory summary 是个好方向。用户至少能看到 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;如果我想换到 Claude、Gemini 或本地 Agent，这份长期积累的用户模型能不能带走？&lt;/p&gt;
&lt;p&gt;这些问题现在看起来有点超前，但等个人 AI 助手真的变成日常工作入口，就一点都不超前了。&lt;/p&gt;
&lt;h2 id=&#34;本地记忆的价值是把顺序倒过来&#34;&gt;本地记忆的价值，是把顺序倒过来
&lt;/h2&gt;&lt;p&gt;Hy-Memory 这类本地记忆路线，优势不是“更省事”。它一点也不省事。&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;如果你只用 ChatGPT，一个平台记忆就够了。&lt;/p&gt;
&lt;p&gt;但如果你同时用 ChatGPT、Claude Code、Gemini、本地模型和 OpenClaw，问题就会出现。&lt;/p&gt;
&lt;p&gt;ChatGPT 记得你的旅行偏好，Claude Code 记得你的项目目录，OpenClaw 记得你的自动化流程，Gemini 记得你某次研究材料。&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;img src=&#34;https://blog.ccino.org/p/chatgpt-dreaming-memory-2026/imgs/user-owned-memory-layer.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/chatgpt-dreaming-memory-2026/imgs/user-owned-memory-layer_hu_27536379841afc9f.png 480w, https://blog.ccino.org/p/chatgpt-dreaming-memory-2026/imgs/user-owned-memory-layer_hu_95181152d495db9d.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;这也是为什么我对 Obsidian、Markdown、Git、文件系统这类东西一直有偏好。它们不一定最智能，但信息在我手里。我可以看见、移动、备份、重写。&lt;/p&gt;
&lt;p&gt;AI 记忆如果最终也能这么做，那它就不只是某个 App 的个性化功能，而更像个人数字资产。&lt;/p&gt;
&lt;h2 id=&#34;可惜本地记忆现在还是太折腾&#34;&gt;可惜，本地记忆现在还是太折腾
&lt;/h2&gt;&lt;p&gt;当然，本地记忆路线的问题也很现实：太麻烦。&lt;/p&gt;
&lt;p&gt;你要装插件，配模型，配 Embedding，维护向量库，处理权限，还要判断哪些内容应该写入长期记忆。&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;这些都是平台记忆替普通用户挡掉的问题。&lt;/p&gt;
&lt;p&gt;所以本地记忆更自由，也更难用。它适合愿意折腾的人，适合把 AI 当长期工作流的人，适合需要跨工具、跨模型协作的人。&lt;/p&gt;
&lt;p&gt;它不适合只想让 ChatGPT 记住自己喜欢什么语气的普通用户。&lt;/p&gt;
&lt;p&gt;这没什么高下之分，只是使用场景不同。&lt;/p&gt;
&lt;h2 id=&#34;两条路线争的其实是同一件东西&#34;&gt;两条路线争的其实是同一件东西
&lt;/h2&gt;&lt;p&gt;Dreaming 和 Hy-Memory 看起来一个消费级，一个工程化；一个平台内置，一个本地外挂。&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;这就是为什么我不太愿意把 Dreaming 只看成一次 ChatGPT 体验升级。&lt;/p&gt;
&lt;p&gt;它是 OpenAI 在争夺用户长期上下文。&lt;/p&gt;
&lt;p&gt;Hy-Memory 这类本地系统，则是在提醒另一件事：长期上下文也可以不完全交给平台。&lt;/p&gt;
&lt;h2 id=&#34;我会怎么选&#34;&gt;我会怎么选？
&lt;/h2&gt;&lt;p&gt;如果只看当下，我会同时用。&lt;/p&gt;
&lt;p&gt;ChatGPT Dreaming 负责即时体验。&lt;/p&gt;
&lt;p&gt;本地记忆负责长期资产。&lt;/p&gt;
&lt;p&gt;前者像某个 App 内部越来越懂你的个性化服务。它好用，省心，适合日常对话。&lt;/p&gt;
&lt;p&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;更适合放哪里&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;当前对话和短期任务&lt;/td&gt;
					&lt;td&gt;平台 / 当前 Agent&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;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;也就是说，ChatGPT 可以有自己的 Dreaming。&lt;/p&gt;
&lt;p&gt;但用户也应该有自己的 Dreaming。&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;从 Obsidian 的角度看，Dreaming 给我的启发很简单：只记录不整理，迟早会失效。&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;这其实就是把平台的 Dreaming，变成自己的 Dreaming。&lt;/p&gt;
&lt;h2 id=&#34;结论别只问-ai-记不记得你要问记忆属于谁&#34;&gt;结论：别只问 AI 记不记得你，要问记忆属于谁
&lt;/h2&gt;&lt;p&gt;ChatGPT Dreaming 是个重要更新。&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;所以问题不只是：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;能不能迁移？&lt;/p&gt;
&lt;p&gt;能不能让别的 AI 在我授权后读取？&lt;/p&gt;
&lt;p&gt;Dreaming 和 Hy-Memory 不是谁替代谁。&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 来读。&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/chatgpt-memory-dreaming/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI：Dreaming: Better memory for a more helpful ChatGPT&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://help.openai.com/en/articles/8590148-memory-faq&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI Memory FAQ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://memory.hunyuan.tencent.com/openclaw/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hy-Memory OpenClaw Quick Start&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Tencent/TencentDB-Agent-Memory/blob/main/README_CN.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;TencentDB Agent Memory 中文 README&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.ccino.org/p/hy-memory-agent-second-brain-2026/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Agent 第二大脑开源了 Hy-Memory：Openclaw 为什么三周后就变笨？&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Gemma 4 12B：本地智能体终于从“能跑模型”走向“能跑工作流”</title>
        <link>https://blog.ccino.org/p/gemma-4-12b-local-agent-workflow-2026/</link>
        <pubDate>Thu, 04 Jun 2026 09:30:53 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/gemma-4-12b-local-agent-workflow-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/gemma-4-12b-local-agent-workflow-2026/imgs/cover.png" alt="Featured image of post Gemma 4 12B：本地智能体终于从“能跑模型”走向“能跑工作流”" /&gt;&lt;p&gt;Google 发 Gemma 4 12B，我第一眼看到的不是“又一个 12B 开放模型”。&lt;/p&gt;
&lt;p&gt;本地模型这件事，已经没那么稀奇了。过去两年，很多人都在 Ollama、LM Studio、llama.cpp、MLX 里跑过各种 7B、14B、32B 模型。能跑起来当然很开心，但跑起来以后，大多数时候还是回到一个聊天框：问一句，答一句；贴一段代码，解释一段；让它写点东西，再复制出来用。&lt;/p&gt;
&lt;p&gt;Gemma 4 12B 这次不太一样的地方，是 Google 很明确地把它放进了“本地 agentic workflows”这个语境。&lt;/p&gt;
&lt;p&gt;按官方介绍，它是一个中等规模、多模态、开放模型，可以在 16GB VRAM 或统一内存设备上本地运行。它支持推理、编码、多模态输入，也可以通过 LiteRT-LM 启动本地 OpenAI-compatible API server。Google Developers Blog 另一篇文章的标题更直接：把 Gemma 4 12B 带到笔记本上，解锁本地智能体工作流。&lt;/p&gt;
&lt;p&gt;我觉得这里的关键词不是 12B，也不是多模态，而是“工作流”。&lt;/p&gt;
&lt;p&gt;过去讨论本地 AI，常问的是：显存够不够？速度怎么样？中文行不行？现在可以多问一句：它能不能接进开发工具、代码库、终端、文件系统和本地数据，变成一个真正能帮你做事的本地 Agent？&lt;/p&gt;
&lt;p&gt;Gemma 4 12B 的意义就在这里。它不太可能替代云端最强模型，但它让“本地模型”往前走了一步：从本地聊天框，走向本地智能体运行时。&lt;/p&gt;
&lt;h2 id=&#34;本地-ai-以前常常停在聊天框&#34;&gt;本地 AI 以前常常停在聊天框
&lt;/h2&gt;&lt;p&gt;以前搭本地模型，目标很朴素：先跑起来。&lt;/p&gt;
&lt;p&gt;装 Ollama，拉一个模型，终端里输入一句话，看到它回复，事情就成功了一半。如果再接进 Open WebUI 或 LM Studio，有一个像样的聊天界面，就更有成就感。&lt;/p&gt;
&lt;p&gt;这当然有用。隐私更好，成本可控，断网也能用。对个人知识库、代码解释、简单写作、本地资料总结来说，本地模型一直有吸引力。&lt;/p&gt;
&lt;p&gt;但它的短板也很明显：很多本地模型最后只是一个“本地 ChatGPT”。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/gemma-4-12b-local-agent-workflow-2026/imgs/body-1.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/gemma-4-12b-local-agent-workflow-2026/imgs/body-1_hu_ce6db82be818ac94.png 480w, https://blog.ccino.org/p/gemma-4-12b-local-agent-workflow-2026/imgs/body-1_hu_f345299805403bb7.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;进入工作流，需要多几层东西。模型要能被工具稳定调用，工具要有标准接口，上下文要能从代码库、文件、终端或浏览器里进来，结果要能被验证，失败后要能重试或交还给人。&lt;/p&gt;
&lt;p&gt;所以 Gemma 4 12B 这次值得关注，不只是因为它是一个新模型。Google 同时给出了 LiteRT-LM、本地 OpenAI-compatible server、Google AI Edge Gallery、Gemma Skills Repository 这些线索。它们合在一起，指向的不是单个模型，而是一套本地优先的 Agent 工作流。&lt;/p&gt;
&lt;h2 id=&#34;gemma-4-12b-带来的几个变化&#34;&gt;Gemma 4 12B 带来的几个变化
&lt;/h2&gt;&lt;p&gt;按 Google 官方介绍，Gemma 4 12B 是一个 unified、encoder-free 的多模态模型。它介于更小的边缘模型和更大的 26B MoE 模型之间，主打在日常笔记本上运行。&lt;/p&gt;
&lt;p&gt;我会把它的变化拆成四点看。&lt;/p&gt;
&lt;p&gt;第一，它把门槛压到了普通高配电脑能尝试的范围。Google 提到 16GB VRAM 或统一内存设备。这个要求不算低，但也没有高到只属于服务器。一台 16GB 显存的游戏本，或者统一内存足够的 Apple Silicon 设备，都可以开始试。&lt;/p&gt;
&lt;p&gt;第二，它不是纯文本模型。官方提到它支持视觉与音频输入，是 Gemma 4 系列里首个支持原生音频输入的中等规模模型。对本地 Agent 来说，这个点很有想象空间。一个本地工具可以看截图、读图表、处理录音、分析代码，再把结果写回本地文件。&lt;/p&gt;
&lt;p&gt;第三，它被明确放在 coding 和 agentic workflows 场景里。Google DeepMind 的 Gemma 页面把 12B、26B、31B 这一组定位为个人电脑和工作站上的本地智能，用于高级推理、IDE、编码助手和智能体工作流。&lt;/p&gt;
&lt;p&gt;第四，接入路径更标准。Ollama 可以直接跑 &lt;code&gt;gemma4:12b&lt;/code&gt;，LiteRT-LM 可以启动 OpenAI-compatible server，官方还提到 Continue、Aider、OpenCode、Hermes 等工具可以指向本地 endpoint。&lt;/p&gt;
&lt;p&gt;这就把问题从“我能不能和它聊天”，变成了“我的开发工具能不能把它当成本地模型服务来用”。&lt;/p&gt;
&lt;h2 id=&#34;先降温它不是云端大模型的替代品&#34;&gt;先降温：它不是云端大模型的替代品
&lt;/h2&gt;&lt;p&gt;这里要先说清楚，Gemma 4 12B 很有意思，但它不是 Claude、Gemini Pro、GPT 这类云端 frontier model 的替代品。&lt;/p&gt;
&lt;p&gt;12B 仍然是 12B。它适合本地代码解释、小范围重构、日志分析、文档整理、轻量 Agent 流程、隐私敏感资料处理。它不适合把一个大型项目完整交给它自动规划、开发、测试、上线，也不适合需要极高推理稳定性的任务。&lt;/p&gt;
&lt;p&gt;更现实的用法是分层。&lt;/p&gt;
&lt;p&gt;日常小任务、本地资料、低风险代码分析，可以交给 Gemma 4 12B 这类本地模型。复杂架构决策、关键生产代码、需要强推理和高可靠性的任务，仍然交给云端强模型。&lt;/p&gt;
&lt;p&gt;本地模型的价值，不是“替代一切”。它更像是把大量原本不值得调用云端模型的任务吃下来。它离你更近，不按 token 计费，也更适合放进本地工作流里反复调用。&lt;/p&gt;
&lt;h2 id=&#34;路线一先用-ollama-跑起来&#34;&gt;路线一：先用 Ollama 跑起来
&lt;/h2&gt;&lt;p&gt;如果只是想先试试 Gemma 4 12B，Ollama 是最省事的路线。&lt;/p&gt;
&lt;h3 id=&#34;1-安装-ollama&#34;&gt;1. 安装 Ollama
&lt;/h3&gt;&lt;p&gt;macOS / Linux 可以用官方安装脚本：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre 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;Windows 直接去 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;/code&gt;&lt;/pre&gt;&lt;/td&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;https://ollama.com/download
&lt;/span&gt;&lt;/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;ollama --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;h3 id=&#34;2-拉取并运行-gemma-4-12b&#34;&gt;2. 拉取并运行 Gemma 4 12B
&lt;/h3&gt;&lt;p&gt;12B 版本可以这样运行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre 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;ollama run gemma4:12b
&lt;/span&gt;&lt;/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;ollama run gemma4
&lt;/span&gt;&lt;/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 页面列出的常用标签包括：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gemma4:latest
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gemma4:e2b
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gemma4:e4b
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gemma4:12b
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gemma4:26b
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gemma4:31b
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gemma4:31b-cloud
&lt;/span&gt;&lt;/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;gemma4:12b&lt;/code&gt; 页面标注大小约 7.6GB，上下文为 128K，支持 Text/Image。实际体验还要看你的显存、内存、系统和模型标签。别只看“能跑”，代码工作流里上下文长度、响应速度和稳定性都很关键。&lt;/p&gt;
&lt;h3 id=&#34;3-启动-ollama-服务并测试-api&#34;&gt;3. 启动 Ollama 服务并测试 API
&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;/code&gt;&lt;/pre&gt;&lt;/td&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 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;/code&gt;&lt;/pre&gt;&lt;/td&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;http://localhost:11434
&lt;/span&gt;&lt;/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;可以用 curl 测一下本地 API：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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:11434/api/chat &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;gemma4:12b&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;      {&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;    ]
&lt;/span&gt;&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;p&gt;如果能看到返回，说明模型服务已经能被本地程序调用。&lt;/p&gt;
&lt;h3 id=&#34;4-需要时设置上下文长度&#34;&gt;4. 需要时设置上下文长度
&lt;/h3&gt;&lt;p&gt;做代码任务时，上下文窗口会影响体验。Aider 文档里提到可以通过环境变量启动 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;/code&gt;&lt;/pre&gt;&lt;/td&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;nv&#34;&gt;OLLAMA_CONTEXT_LENGTH&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;8192&lt;/span&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;Windows PowerShell 当前会话可以这样写：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$env:OLLAMA_CONTEXT_LENGTH&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;8192&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;ollama&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;serve&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;如果你的机器内存比较紧，不要一上来就把上下文拉得很大。上下文越长，prefill 越慢，内存压力也越高。先从 8K 或 16K 这种比较保守的设置试起，通常更稳。&lt;/p&gt;
&lt;h2 id=&#34;路线二把-gemma-4-12b-接进-aider&#34;&gt;路线二：把 Gemma 4 12B 接进 Aider
&lt;/h2&gt;&lt;p&gt;Aider 是一个不错的测试场景。它不是单纯聊天，而是能读取项目文件、提出修改、生成 diff。你可以很快感受到本地模型到底能不能参与代码工作流。&lt;/p&gt;
&lt;h3 id=&#34;1-安装-aider&#34;&gt;1. 安装 Aider
&lt;/h3&gt;&lt;p&gt;Aider 官方推荐的安装方式：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;python -m pip install aider-install
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;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;然后进入你的项目目录：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre 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;cd&lt;/span&gt; /to/your/project
&lt;/span&gt;&lt;/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-设置-ollama-地址&#34;&gt;2. 设置 Ollama 地址
&lt;/h3&gt;&lt;p&gt;macOS / Linux：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre 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;OLLAMA_API_BASE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;http://127.0.0.1:11434
&lt;/span&gt;&lt;/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 CMD：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre 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-bat&#34; data-lang=&#34;bat&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;setx OLLAMA_API_BASE http://127.0.0.1:11434
&lt;/span&gt;&lt;/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 PowerShell 当前会话：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre 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-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$env:OLLAMA_API_BASE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;http://127.0.0.1:11434&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;3-启动-aider-使用-gemma-4-12b&#34;&gt;3. 启动 Aider 使用 Gemma 4 12B
&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;/code&gt;&lt;/pre&gt;&lt;/td&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 pull gemma4:12b
&lt;/span&gt;&lt;/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;然后启动 Aider：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre 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;aider --model ollama_chat/gemma4:12b
&lt;/span&gt;&lt;/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;Aider 文档建议 Ollama 聊天模型使用 &lt;code&gt;ollama_chat/&amp;lt;model&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;/code&gt;&lt;/pre&gt;&lt;/td&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;阅读这个项目的 README，告诉我项目入口、主要依赖和本地启动方式，不要修改文件。
&lt;/span&gt;&lt;/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;帮我给 README 增加一段本地开发注意事项。先说明你会改哪个文件，等我确认后再改。
&lt;/span&gt;&lt;/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;路线三用-litert-lm-跑-openai-compatible-server&#34;&gt;路线三：用 LiteRT-LM 跑 OpenAI-compatible server
&lt;/h2&gt;&lt;p&gt;Ollama 适合快速上手，LiteRT-LM 更接近 Google 这次官方强调的本地 agentic workflow 路线。&lt;/p&gt;
&lt;p&gt;Google Developers Blog 里给出的核心命令是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;nv&#34;&gt;REPO&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;litert-community/gemma-4-12B-it-litert-lm&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;MODEL_FILE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;gemma-4-12B-it.litertlm&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;MODEL_NAME&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;gemma4-12b&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;litert-lm import --from-huggingface-repo &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$REPO&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;$MODEL_FILE&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;$MODEL_NAME&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;litert-lm 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;/code&gt;&lt;/pre&gt;&lt;/td&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;http://localhost:9379/v1/chat/completions
&lt;/span&gt;&lt;/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;可以用 curl 验证：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;curl -s http://localhost:9379/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;  -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;gemma4-12b,gpu&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;      {&amp;#34;role&amp;#34;: &amp;#34;user&amp;#34;, &amp;#34;content&amp;#34;: &amp;#34;Hello!&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;#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;p&gt;这里有个小坑要提前说。写这篇文章时，我只能从 Google Developers Blog 找到 &lt;code&gt;import&lt;/code&gt;、&lt;code&gt;serve&lt;/code&gt; 和 curl 示例，但 LiteRT-LM CLI 文档页本身只明确写了支持 &lt;code&gt;uvx&lt;/code&gt;、&lt;code&gt;uv&lt;/code&gt;、&lt;code&gt;pip&lt;/code&gt; 安装，没有在可抓取内容里给出完整安装命令。所以你真要部署，最好打开 LiteRT-LM 官方安装说明或项目仓库，确认包名、Python 版本和平台要求后再装。&lt;/p&gt;
&lt;p&gt;一旦 &lt;code&gt;litert-lm serve&lt;/code&gt; 跑起来，它的意义就很大。很多工具并不关心背后是云端 OpenAI、Ollama，还是本地 LiteRT-LM。只要它提供 OpenAI-compatible endpoint，你就可以把 Aider、Continue、OpenCode、Hermes 这类工具指向本地服务。&lt;/p&gt;
&lt;p&gt;这一步，才是“本地模型”变成“本地 Agent runtime”的关键。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/gemma-4-12b-local-agent-workflow-2026/imgs/body-2.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/gemma-4-12b-local-agent-workflow-2026/imgs/body-2_hu_1c3d54f4e464f283.png 480w, https://blog.ccino.org/p/gemma-4-12b-local-agent-workflow-2026/imgs/body-2_hu_4b52617b5ea02929.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Gemma 4 12B 本地 API 接入代码工具工作流&#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-compatible-工具时怎么填&#34;&gt;接入 OpenAI-compatible 工具时怎么填
&lt;/h2&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-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;base_url: http://localhost:9379/v1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;api_key: 随便填一个非空字符串，或按工具要求填写
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;model: gemma4-12b,gpu
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;provider: openai-compatible / openai / custom
&lt;/span&gt;&lt;/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，通常是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;base_url: http://localhost:11434
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;model: gemma4:12b
&lt;/span&gt;&lt;/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 风格 endpoint，而你用 LiteRT-LM，就优先试：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre 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;http://localhost:9379/v1
&lt;/span&gt;&lt;/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，那就优先用 Ollama provider，少一层兼容转换。&lt;/p&gt;
&lt;p&gt;这里不要死记配置。更稳的做法是先用 curl 确认本地服务可用，再去工具里填 endpoint。否则你很难判断问题出在模型、服务、端口、模型名，还是工具配置。&lt;/p&gt;
&lt;h2 id=&#34;我建议这样开始用本地-agent&#34;&gt;我建议这样开始用本地 Agent
&lt;/h2&gt;&lt;p&gt;如果你想用 Gemma 4 12B 做本地智能体，不建议第一天就让它自动改整个项目。&lt;/p&gt;
&lt;p&gt;比较稳的起步方式是这样：先只让它读项目，让它总结目录结构、技术栈、入口文件、测试命令和潜在风险。这个阶段不要修改文件。&lt;/p&gt;
&lt;p&gt;然后让它做小范围解释，比如解释某个模块为什么这样设计，某个报错可能来自哪里，某段代码有哪些边界条件。&lt;/p&gt;
&lt;p&gt;再下一步，让它生成计划。要求它列出准备修改的文件、改动范围、不改哪些东西、如何验证。&lt;/p&gt;
&lt;p&gt;最后才让它改一个低风险文件，比如 README、小工具函数、测试用例、配置注释。改完以后接入验证。能跑测试就跑测试，能跑 lint 就跑 lint，前端功能最好打开页面检查。没有验证，就不要让它说“完成”。&lt;/p&gt;
&lt;p&gt;这个流程比一句话让 AI 改代码慢一点，但更适合本地模型。12B 模型不是不能做事，只是更需要清楚边界和短反馈。&lt;/p&gt;
&lt;p&gt;本地 Agent 真正好用，不是因为模型突然无所不能，而是你给它安排了更适合它的任务形状。&lt;/p&gt;
&lt;h2 id=&#34;windowsmacos-和显存注意事项&#34;&gt;Windows、macOS 和显存注意事项
&lt;/h2&gt;&lt;p&gt;Gemma 4 12B 官方说可以在 16GB VRAM 或统一内存设备上运行，但这不等于所有 16GB 机器都能流畅跑所有场景。&lt;/p&gt;
&lt;p&gt;如果你是 Windows + NVIDIA GPU，优先试 Ollama 或 LM Studio。它们对入门最友好，遇到问题也更容易排查。&lt;/p&gt;
&lt;p&gt;如果你是 Apple Silicon，统一内存越大越好。Google AI Edge Gallery 和 LiteRT-LM 对 macOS 的本地体验更值得关注。Ollama 的 MLX 标签也可以试，但不同标签支持的输入模态和性能可能有差异。&lt;/p&gt;
&lt;p&gt;如果你只有 16GB 系统内存，没有独立 GPU，就不要对 12B 的速度抱太高期待。可以先试 E2B/E4B，或者选择更小、更偏边缘的模型。&lt;/p&gt;
&lt;p&gt;如果你要做代码 Agent，显存只是一个条件。磁盘、CPU、内存、上下文长度、工具调用频率，都会影响体验。尤其是长上下文代码任务，本地模型慢不是 bug，而是成本从云端账单转移到了你的机器时间上。&lt;/p&gt;
&lt;h2 id=&#34;什么时候用本地什么时候用云端&#34;&gt;什么时候用本地，什么时候用云端
&lt;/h2&gt;&lt;p&gt;Gemma 4 12B 更适合放在“第一层智能”里。比如本地代码库解释、README 和脚本修改、日志分析、隐私敏感资料总结、低风险测试生成、本地数据分析脚本草稿，以及一些会反复调用的小型 Agent 工作流。&lt;/p&gt;
&lt;p&gt;它不太适合大型架构重构、高风险生产代码自动修改、复杂多文件长期自主开发，或者需要极强推理稳定性的设计决策。涉及外部副作用和安全审查的任务，也不要轻易交给本地模型自动做。&lt;/p&gt;
&lt;p&gt;这样分工，本地 AI 才不会变成云端 AI 的低配替代。它会变成一个新的工作流层：便宜、快速、隐私友好，负责那些离你最近、最频繁、最适合本地处理的任务。&lt;/p&gt;
&lt;h2 id=&#34;本地-ai-的下一站是本地工作系统&#34;&gt;本地 AI 的下一站，是本地工作系统
&lt;/h2&gt;&lt;p&gt;Gemma 4 12B 这次最有价值的地方，不是让我们多了一个可以下载的模型。&lt;/p&gt;
&lt;p&gt;它让本地 AI 的讨论从“模型能不能跑”，转向“工作流能不能跑”。&lt;/p&gt;
&lt;p&gt;当你能在笔记本上启动一个 OpenAI-compatible server，把 Aider、Continue、OpenCode、Hermes 之类工具接进来，再让模型读本地文件、生成代码、跑脚本、处理图片或音频，本地 AI 就不再只是一个聊天窗口。&lt;/p&gt;
&lt;p&gt;它开始像一个本地工作系统。&lt;/p&gt;
&lt;p&gt;当然，这个系统还不会完美。12B 模型有能力边界，本地推理有性能限制，多模态和工具调用也需要更成熟的 harness。但方向已经很清楚：未来的个人电脑，不只是运行应用，也会运行自己的本地智能体。&lt;/p&gt;
&lt;p&gt;云端模型负责最难的问题，本地模型负责离你最近、最频繁、最隐私的那部分工作。&lt;/p&gt;
&lt;p&gt;这才是 Gemma 4 12B 真正值得关注的地方。&lt;/p&gt;
&lt;p&gt;不是因为它让本地 AI 第一次能跑。&lt;/p&gt;
&lt;p&gt;而是因为它让本地 AI 开始更像一个可以接入工具、执行任务、参与工作流的 Agent runtime。&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.google/innovation-and-ai/technology/developers-tools/introducing-gemma-4-12b/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google Blog: Introducing Gemma 4 12B&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://developers.googleblog.com/gemma-4-12b-the-developer-guide/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google Developers Blog: Gemma 4 12B Developer Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://developers.googleblog.com/bringing-gemma-4-12b-to-your-laptop-unlocking-local-agentic-workflows-with-google-ai-edge/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google Developers Blog: Bringing Gemma 4 12B to your Laptop&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://deepmind.google/models/gemma/gemma-4/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google DeepMind: Gemma 4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ollama.com/library/gemma4&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ollama: gemma4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://aider.chat/docs/llms/ollama.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Aider Docs: Ollama&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://developers.google.com/edge/litert-lm/cli&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;LiteRT-LM CLI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Vibe Coding 的下半场：不是写得快，而是谁来收拾残局</title>
        <link>https://blog.ccino.org/p/vibe-coding-maintenance-debt-2026/</link>
        <pubDate>Thu, 04 Jun 2026 08:55:32 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/vibe-coding-maintenance-debt-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/vibe-coding-maintenance-debt-2026/imgs/cover-1.png" alt="Featured image of post Vibe Coding 的下半场：不是写得快，而是谁来收拾残局" /&gt;&lt;p&gt;最近 Reddit 的 r/ClaudeCode 上有个很火的帖子。发帖者说，他接手了一个 3 个月前由 “Vibe Engineer” 做出来的项目，最后提交了自己职业生涯里最爽的一次 PR。&lt;/p&gt;
&lt;p&gt;帖子有 7000 多个赞，评论接近 700 条。这个数字不用太当真，Reddit 上的高赞贴经常有表演成分。但它戳中的那种感受很真：AI 让代码更容易被写出来，也让一批“看起来能跑”的项目更快进入维护阶段。&lt;/p&gt;
&lt;p&gt;过去聊 Vibe Coding，大家更爱聊前半段。一个人怎么用 Claude Code、Cursor、Codex 在一个晚上搭出原型，怎么把一个想法变成页面，怎么绕过前端、后端、数据库、部署这些过去很劝退的门槛。&lt;/p&gt;
&lt;p&gt;这当然很迷人。我自己也喜欢这种感觉。一个想法原来只是脑子里的几句话，现在半小时后就能在浏览器里点开，确实会让人上头。&lt;/p&gt;
&lt;p&gt;麻烦在于，软件项目不会停在 demo 那一刻。&lt;/p&gt;
&lt;p&gt;只要它继续被用，就一定会进入另一段时间：有人要读懂它，有人要改它，有人要修 bug，有人要解释为什么这个状态会从 A 跳到 B，有人要在需求变了以后，把原来随手生成的那套结构重新理一遍。&lt;/p&gt;
&lt;p&gt;这也是我觉得 Vibe Coding 需要和 Harness Engineering 放在一起看的原因。&lt;/p&gt;
&lt;p&gt;Vibe Coding 解决的是“怎么更快生成”。Harness 解决的是另一个问题：当 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 最容易制造的错觉，是功能跑起来了，事情就差不多完成了。&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;很多 Vibe Coding 项目的麻烦，不是 AI 把代码写得完全不能用。恰恰相反，它经常写出“局部没问题、整体很难维护”的东西。页面能打开，接口能返回，测试样例能过，但模块边界含糊，状态散在各处，错误处理靠猜，业务规则藏在一堆临时判断里。&lt;/p&gt;
&lt;p&gt;这种代码最烦人的地方是，它不会马上坏。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/vibe-coding-maintenance-debt-2026/imgs/body-1.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/vibe-coding-maintenance-debt-2026/imgs/body-1_hu_34a0498bb20e3ff8.png 480w, https://blog.ccino.org/p/vibe-coding-maintenance-debt-2026/imgs/body-1_hu_99652eedef7c3cd7.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;它会先给你一种进展很快的感觉。等项目到了第二个月、第三个月，需求开始叠加，问题才慢慢浮出来。到那时，维护者面对的往往不是一个明确的 bug，而是一片不知道从哪里开始整理的草丛。&lt;/p&gt;
&lt;p&gt;Harness Engineering 的价值就在这里：它不是等草丛长出来以后再让人拿镰刀割，而是在 AI 写代码的过程中，就把边界、验收和反馈放进去。&lt;/p&gt;
&lt;h2 id=&#34;ai-降低的是打字成本不是理解成本&#34;&gt;AI 降低的是打字成本，不是理解成本
&lt;/h2&gt;&lt;p&gt;Vibe Coding 能成立，是因为 AI 确实把写代码的成本打下来了。&lt;/p&gt;
&lt;p&gt;今天让 AI 生成一个 CRUD 模块、一个设置页、一个登录流程、一个数据导入脚本，比过去快太多。很多以前不值得动手的小工具，现在都可以试一试。这是实实在在的变化。&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;Reddit 那条帖子能引起共鸣，也是因为很多人都熟悉这种疲惫感。接手一个快速堆出来的项目，第一反应不是“这个人真高效”，而是“我得先弄明白这里到底发生了什么”。&lt;/p&gt;
&lt;p&gt;一个没有 Harness 的 Vibe Coding 流程，很容易把理解成本往后推。生成时很顺，接手时很痛。真正成熟的 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;AI 改变的是速度。&lt;/p&gt;
&lt;p&gt;一个开发者过去一天只能写出一个混乱模块，现在可能让 AI 在一天里生成五个。过去一个不成熟的架构要几周才显出问题，现在两三天就能堆到足够复杂。过去项目变乱，通常还有一个逐渐失控的过程；现在项目可能从第一版开始，就带着大量自动生成的结构惯性。&lt;/p&gt;
&lt;p&gt;我见过不少类似情况：一个很小的功能，最后被拆成 service、manager、adapter、helper、config、schema、types。每个文件单独看都不算离谱，合在一起却很难说清楚主线在哪里。等真正要改需求时，才发现自己不是在改功能，而是在穿越一套由 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;这时候 Harness 不一定是复杂系统。它可以很简单：不允许无理由新增抽象层；新增依赖前必须解释替代方案；改动超过一定范围先停下来让人确认；每次完成都要给出验证命令和失败风险。听起来像规矩，但规矩正是用来对抗“顺手多写一点”的。&lt;/p&gt;
&lt;h2 id=&#34;vibe-coding-缺的不是更多-prompt而是小-harness&#34;&gt;Vibe Coding 缺的不是更多 Prompt，而是小 Harness
&lt;/h2&gt;&lt;p&gt;很多人遇到 AI 写乱代码，第一反应还是改 prompt。&lt;/p&gt;
&lt;p&gt;比如写“你是资深工程师”“请遵循最佳实践”“不要过度设计”“请写可维护代码”。这些话不是完全没用，但它们太软了。模型当时可能会听，任务一长、上下文一乱，它又会回到自己的习惯里。&lt;/p&gt;
&lt;p&gt;Harness 的思路不一样。&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/vibe-coding-maintenance-debt-2026/imgs/body-2.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/vibe-coding-maintenance-debt-2026/imgs/body-2_hu_a2ea35a9cef96405.png 480w, https://blog.ccino.org/p/vibe-coding-maintenance-debt-2026/imgs/body-2_hu_7b25608a52738144.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Harness Engineering 把 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;Anthropic 在长任务 Agent 实验里把规划、实现、评估拆开，用 Planner、Generator、Evaluator 形成反馈循环。普通开发者未必要搞三个 Agent，但这个思路可以借过来：写代码的人和验收代码的人，最好不是同一个“自我感觉良好”的模型状态。&lt;/p&gt;
&lt;p&gt;哪怕只是让 Claude Code 写完后再切一个检查视角，让它专门挑错、跑测试、检查 diff 有没有越界，也比一路生成到底要稳得多。&lt;/p&gt;
&lt;h2 id=&#34;一个普通项目的小-harness-可以长什么样&#34;&gt;一个普通项目的小 Harness 可以长什么样
&lt;/h2&gt;&lt;p&gt;如果把 Harness 说得太大，它会显得像企业 Agent 平台的事，离 Vibe Coding 很远。&lt;/p&gt;
&lt;p&gt;其实个人项目也可以有很小的 Harness。&lt;/p&gt;
&lt;p&gt;比如你要让 AI 加一个功能，不要一上来就说“帮我实现用户设置页”。可以先让它做三件事：读现有目录，列出准备修改的文件，说明不会碰哪些模块。你确认以后，再让它动手。&lt;/p&gt;
&lt;p&gt;实现完成后，也不要只看它的总结。让它给出验证路径：运行什么命令，打开哪个页面，点哪个按钮，看哪个状态。如果是前端功能，最好让它用 Playwright 或浏览器检查一次；如果是后端接口，就让它跑测试或给出可复现的 curl；如果没有自动化测试，至少让它明确哪些地方没验证。&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;这不是为了限制 AI，而是为了让 AI 的速度不会把项目带偏。&lt;/p&gt;
&lt;p&gt;好的 Harness 不会让 Vibe Coding 变慢太多。它只是把那些迟早要付的维护成本，提前一点暴露出来。&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;你当然可以让 AI 帮你写代码，但最好也让它顺手做一些不那么显眼的事。比如把复杂函数拆小，把隐含状态写清楚，把关键路径补上测试，把临时方案标出来，把不确定的业务假设列出来，把提交说明写得像给同事看的，而不是像给自己看的。&lt;/p&gt;
&lt;p&gt;很多时候，AI 最有价值的输出未必是第一版代码，而是它帮你把一团混乱整理成别人能继续工作的形态。&lt;/p&gt;
&lt;p&gt;Vibe Coding 的下半场，说白了就是从“我能不能做出来”，转向“别人能不能继续维护”。前者解决创造速度，后者决定生命周期。&lt;/p&gt;
&lt;p&gt;Harness 在这里扮演的不是高级概念，而是很朴素的交接机制。它让每次 AI 参与的变更都留下解释、验证和边界，而不是只留下一个看起来已经完成的 diff。&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;如果一个开发者只是把需求丢给 AI，接受结果，提交上线，然后在问题出现时说“这是 AI 写的”，那团队得到的不是提效工具，而是一种责任真空。&lt;/p&gt;
&lt;p&gt;AI 不能成为责任主体。能负责的仍然是人。&lt;/p&gt;
&lt;p&gt;谁提交，谁理解；谁合并，谁承担；谁让 AI 改了生产代码，谁就要能解释改动背后的判断。AI 可以参与实现，但不能替代工程师对系统的所有权。&lt;/p&gt;
&lt;p&gt;我更愿意把成熟的 AI 编程流程理解成一种“带 Harness 的工程责任制”。AI 负责加速探索、生成草稿、补齐重复劳动；Harness 负责提供边界、检查点和反馈；人负责收敛方向、判断取舍、确认风险、维护长期一致性。&lt;/p&gt;
&lt;p&gt;这套关系如果倒过来，就会变成另一种日常：AI 在前面狂奔，人类在后面追着补锅。短期很刺激，长期很累。&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;p&gt;能不能把 AI 生成的代码收敛成清晰结构？能不能删掉多余抽象？能不能发现那些看起来能跑、实际埋雷的地方？能不能在需求变化时保持系统不散？能不能让下一个接手的人少骂两句？&lt;/p&gt;
&lt;p&gt;这些能力过去就重要，只是没有那么显眼。AI 把写代码这件事降价之后，它们会变得更贵。&lt;/p&gt;
&lt;p&gt;如果再结合 Harness Engineering 看，这种能力还会再往前走一步。优秀开发者不只是会收拾 AI 留下的代码，还会把反复出现的失败变成规则，把规则写进工作流，把工作流变成下一次 AI 不能轻易绕过的检查点。&lt;/p&gt;
&lt;p&gt;这才是真正的复利。&lt;/p&gt;
&lt;p&gt;一次手工救火，只是救一个项目；一次 Harness 改进，可以让以后十次类似任务少踩同一个坑。&lt;/p&gt;
&lt;p&gt;未来优秀开发者的差异，可能不再是“谁能从零写出更多代码”。这件事 AI 已经大幅削平了。差异会转向更具体的地方：谁能定义好问题，谁能约束好 Agent，谁能验证结果，谁能把一堆快速生成的东西整理成可靠系统。&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;我仍然喜欢 Vibe Coding。&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;Harness Engineering 给这个问题补了一层答案：别等残局出现以后才讨论责任。把边界、验证、日志、评估和人工确认放进流程里，让 AI 的速度跑在一条有护栏的路上。&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/ClaudeCode/comments/1tb7edc/inherited_a_3month_old_repo_from_a_vibe_engineer/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Inherited a 3-month old repo from a Vibe Engineer. Wrote the most satisfying PR in my career&lt;/a&gt;&lt;/li&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;Anthropic: 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://www.oreilly.com/radar/agent-harness-engineering/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;O&amp;rsquo;Reilly: Agent Harness Engineering&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://code.claude.com/docs/en/best-practices&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Code Best Practices&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.ccino.org/p/why-vibe-coding-projects-fail/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;为什么大多数 Vibe Coding 项目都会失败？&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.ccino.org/p/ai-agent-harness-verification-2026/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AI Agent 真正的分水岭：不是模型，而是可验证的 Harness&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.ccino.org/p/agent-harness-engineering-long-running-agents-2026/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Agent 不是缺 Prompt，而是缺一套 Harness&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Harness Engineering 为什么成了 2026 年最热门的技术词</title>
        <link>https://blog.ccino.org/p/why-2026-became-harness-engineering-year/</link>
        <pubDate>Tue, 02 Jun 2026 13:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/why-2026-became-harness-engineering-year/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/why-2026-became-harness-engineering-year/imgs/cover.png" alt="Featured image of post Harness Engineering 为什么成了 2026 年最热门的技术词" /&gt;&lt;p&gt;2026 年开始，AI 工程圈出现了一个有意思的现象。&lt;/p&gt;
&lt;p&gt;年初大家还在聊怎么写更好的 Prompt，年中这个词就突然变得很少有人提了。取而代之的是一个新词 &lt;strong&gt;Harness&lt;/strong&gt;。这个词不是被某个小团队发明出来再扩散的，是被 OpenAI 和 Anthropic 这两家头部公司几乎同时推到了台前：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;2 月 11 日&lt;/strong&gt;：OpenAI 发布博客《Harness engineering: leveraging Codex in an agent-first world》&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;4 月 17 日&lt;/strong&gt;：Augment Code 发布《Harness Engineering for AI Coding Agents》&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;4 月 20 日&lt;/strong&gt;：Anthropic 三周内连发三篇工程论文，主题是 effective harnesses、harness design、managed agents&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;5 月 16 日&lt;/strong&gt;：Medium 上 Mario Tort 整理《AI Agent Best Practices: Production-Ready Harness Engineering (2026 Guide)》&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;四个月里，AI 头部厂商和独立工程师围绕同一概念密集发声。这在以前是很少见的，通常一个新概念要扩散到这个密度，需要一两年。&lt;/p&gt;
&lt;p&gt;这个词突然爆火背后是一个判断：&lt;strong&gt;Prompt Engineering 时代结束了，Harness Engineering 时代开始了。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;我之前写过一篇《AI Agent 真正的分水岭：不是模型，而是可验证的 Harness》，偏技术细节。今天想从行业动作的角度，聊聊 &lt;strong&gt;为什么是 2026 年、为什么是 Harness 这个词、为什么 OpenAI 和 Anthropic 几乎同时押注它&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id=&#34;一从行业动作里看到的趋势&#34;&gt;一、从行业动作里看到的趋势
&lt;/h2&gt;&lt;p&gt;如果只看&amp;quot;厂商在写新论文&amp;quot;，你会觉得这就是正常的科研节奏。&lt;/p&gt;
&lt;p&gt;但如果把 2025 年底到 2026 年中的几件大事放在一起看，会发现这条线指的方向是一致的。&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;2025 Q4&lt;/td&gt;
					&lt;td&gt;Claude Code 工作流被多篇博客复盘&lt;/td&gt;
					&lt;td&gt;大家开始意识到&amp;quot;光会写 Prompt 不够&amp;quot;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;2026 年 1 月&lt;/td&gt;
					&lt;td&gt;Claude Code 1 周年，被认为&amp;quot;解决了 AI 编程问题&amp;quot;&lt;/td&gt;
					&lt;td&gt;但紧接着开始出现反弹——&amp;ldquo;贵、不稳定、需要工程化&amp;rdquo;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;2026 年 2 月&lt;/td&gt;
					&lt;td&gt;OpenAI 发布 Harness Engineering 论文&lt;/td&gt;
					&lt;td&gt;第一次把&amp;quot;围绕 Agent 的工程&amp;quot;这个概念正式命名&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;2026 年 3-4 月&lt;/td&gt;
					&lt;td&gt;Anthropic 集中发表三篇相关论文&lt;/td&gt;
					&lt;td&gt;等于从对手角度确认了这个方向的价值&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;2026 年 4 月&lt;/td&gt;
					&lt;td&gt;AHE 框架（Agentic Harness Engineering）发布&lt;/td&gt;
					&lt;td&gt;把 Harness 变成可量化、可自动优化的对象&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;2026 年 5 月&lt;/td&gt;
					&lt;td&gt;社区开始把 Harness 写入&amp;quot;必备技能&amp;quot;&lt;/td&gt;
					&lt;td&gt;招聘 JD 里开始出现&amp;quot;Harness Engineering experience&amp;quot;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这条线的发展速度，比&amp;quot;Prompt Engineering&amp;quot;被广泛接受要快得多。后者用了大约 2 年（2022 年底到 2024 年），前者只用了 4 个月。&lt;/p&gt;
&lt;p&gt;为什么这么快？因为 &lt;strong&gt;Prompt Engineering 的痛点已经被所有人共同感受到了&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id=&#34;二为什么-prompt-engineering-不够用了&#34;&gt;二、为什么 Prompt Engineering 不够用了
&lt;/h2&gt;&lt;p&gt;2023 年和 2024 年，大家追捧 Prompt Engineering 的核心原因是：&lt;strong&gt;模型本身还不够强，需要靠精巧的提示来&amp;quot;挤&amp;quot;出更好的输出&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;那时候一个好的 Prompt 工程师，确实能比一般用户多出 30%-50% 的可用性。这是真实存在的红利。&lt;/p&gt;
&lt;p&gt;但到 2025 年底，模型本身的能力快速跃迁：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude Opus 4.5/4.6 在 SWE-Bench 上超过 60%&lt;/li&gt;
&lt;li&gt;GPT-5 系列在多步推理上接近人类水平&lt;/li&gt;
&lt;li&gt;开源模型（Qwen 3.5、Llama 4、Gemma 4）在垂直任务上已经能商用&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;模型能力上来之后，&lt;strong&gt;Prompt 的边际收益快速衰减&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;举个具体例子：以前你得花 30 分钟设计一个 chain-of-thought Prompt，才能让模型正确拆解一个 5 步任务。现在你直接说&amp;quot;把这件事拆成 5 步做&amp;quot;，模型就能做对。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Prompt 的精雕细琢，变成了不必要的成本。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;但这并不意味着&amp;quot;什么都不用做&amp;quot;。相反，问题转移了：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Prompt 不重要了，但 &lt;strong&gt;怎么让 Agent 跑完一个长任务不出错&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;怎么让 Agent 在出错时自我恢复、在遇到歧义时主动问&lt;/strong&gt; 变得重要&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些都不是 Prompt 能解决的问题。它们需要的是一套工程基础设施，也就是 Harness。&lt;/p&gt;
&lt;h2 id=&#34;三harness-到底是什么&#34;&gt;三、Harness 到底是什么
&lt;/h2&gt;&lt;p&gt;为了避免这个词变得过于抽象，先给一个具体定义。&lt;/p&gt;
&lt;p&gt;按 OpenAI 在 2 月那篇博客里的说法：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;A harness is the scaffold—the orchestration, context management, tool wiring, permission boundaries, and recovery loops—that sits between the model and the real world.&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/why-2026-became-harness-engineering-year/imgs/illustration-prompt-vs-harness.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/why-2026-became-harness-engineering-year/imgs/illustration-prompt-vs-harness_hu_356c8725fb2525c4.png 480w, https://blog.ccino.org/p/why-2026-became-harness-engineering-year/imgs/illustration-prompt-vs-harness_hu_f9bcc3f749a0265.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Prompt 时代 vs Harness 时代&#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;Harness 是 Agent 脚手架，包含编排、上下文管理、工具接入、权限边界、错误恢复这一整套让模型能稳定工作的工程层。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果用软件工程的类比：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Prompt&lt;/strong&gt; 像是函数调用。你给它输入，它给你输出&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Harness&lt;/strong&gt; 像是整个运行时。它管理内存、调度、IO、异常、资源&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是说，&lt;strong&gt;Prompt 是 API 层，Harness 是操作系统层&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;一个完整的 Harness 通常包含这几层组件（这是我综合多份资料整理的，不是某个单一来源的定义）：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/why-2026-became-harness-engineering-year/imgs/illustration-harness-architecture.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/why-2026-became-harness-engineering-year/imgs/illustration-harness-architecture_hu_11493bd5c2512ca3.png 480w, https://blog.ccino.org/p/why-2026-became-harness-engineering-year/imgs/illustration-harness-architecture_hu_1499c6aee03099bb.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Harness 七层组件架构&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;上下文工程&lt;/strong&gt;（Context Engineering）：决定什么时候读什么文件、保留哪些历史、用什么格式&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;工具注册表&lt;/strong&gt;（Tool Registry）：Agent 能调用哪些工具、怎么调用、参数怎么校验&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;权限系统&lt;/strong&gt;（Permission System）：哪些操作需要用户确认，哪些可以自动跑&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;状态机&lt;/strong&gt;（State Machine）：任务在&amp;quot;等待/执行/失败/完成&amp;quot;之间的转换逻辑&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;错误恢复&lt;/strong&gt;（Recovery Loop）：工具调用失败、模型输出异常时怎么办&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可观测性&lt;/strong&gt;（Observability）：每一步做了什么、花了多少 token、为什么这么决定&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;子代理编排&lt;/strong&gt;（Sub-agent Orchestration）：什么时候分拆任务、怎么合并结果&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;把这几层组合起来，就是一个 Harness。&lt;strong&gt;Claude Code、Codex 这些产品，本质上都是 Harness 的具体实现&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id=&#34;四为什么是-2026-年&#34;&gt;四、为什么是 2026 年
&lt;/h2&gt;&lt;p&gt;到这里其实还有个问题没回答：&lt;strong&gt;为什么 OpenAI 和 Anthropic 几乎同时押注 Harness 这个词？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;我的判断是，三股力量在 2026 年初汇合了。&lt;/p&gt;
&lt;h3 id=&#34;第一股模型能力的同质化&#34;&gt;第一股：模型能力的同质化
&lt;/h3&gt;&lt;p&gt;GPT-5.5、Claude Opus 4.6、Gemini 3 Pro 在 SWE-Bench 这类硬指标上的差距，已经从 2023 年的 30%+ 缩小到 2026 年的 5% 以内。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;当模型本身不再是差异点时，差异点就转移到了 Harness 上。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这就是为什么 OpenAI 和 Anthropic 都在大力宣传自己的 Harness 设计。他们卖的不只是模型，是&amp;quot;模型 + Harness 整体体验&amp;quot;。&lt;/p&gt;
&lt;h3 id=&#34;第二股企业级部署的爆发&#34;&gt;第二股：企业级部署的爆发
&lt;/h3&gt;&lt;p&gt;2025 年开始，Agent 进入企业生产环境。但企业部署 Agent 很快发现：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一次 token 失控能烧掉 $5000&lt;/li&gt;
&lt;li&gt;一个有歧义的指令能导致 Agent 删错文件&lt;/li&gt;
&lt;li&gt;一次工具调用失败能让 Agent 死循环&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些问题都出在 Harness 上，不在模型上。&lt;strong&gt;企业级 Agent 部署的需求，把 Harness Engineering 从&amp;quot;可选优化&amp;quot;逼成了&amp;quot;必备技能&amp;quot;&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id=&#34;第三股agentic-harness-engineering-的可量化结果&#34;&gt;第三股：Agentic Harness Engineering 的可量化结果
&lt;/h3&gt;&lt;p&gt;AHE 框架（4 月发布）把 Harness 推到了一个新的高度。&lt;strong&gt;它能自动进化。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;简单说，AHE 把 Harness 的各个组件（系统提示、工具描述、子代理配置、记忆）拆开，用可观测性追踪每个组件对最终效果的影响，然后用一个优化 Agent 自动改写&amp;quot;最弱的那一环&amp;quot;。&lt;/p&gt;
&lt;p&gt;结果：在 Terminal-Bench 2 基准上，pass@1 从 69.7% 提升到 77.0%，&lt;strong&gt;超过手写的 Codex (71.9%)、自进化的 ACE 和 Training-Free GRPO&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;更值得注意的是，&lt;strong&gt;训练好的 Harness 不绑死模型&lt;/strong&gt;。它可以迁移到 SWE-bench-verified 和其他 4 个 base model，依然有提升。这说明 Harness 学到的是&amp;quot;通用工程经验&amp;quot;，不是针对某个 benchmark 的过拟合。&lt;/p&gt;
&lt;p&gt;AHE 的存在让 Harness 变成了一个 &lt;strong&gt;可以被量化、被优化、被比较&lt;/strong&gt; 的对象。这才是这个词被行业快速接受的关键。&lt;/p&gt;
&lt;h2 id=&#34;五开发者需要做什么&#34;&gt;五、开发者需要做什么
&lt;/h2&gt;&lt;p&gt;如果你在 2026 年还在用 2024 年的方式做 Agent 开发，可能会开始感觉到瓶颈。&lt;/p&gt;
&lt;p&gt;这里给出三个具体的转向建议，&lt;strong&gt;先做第一个就够&lt;/strong&gt;：&lt;/p&gt;
&lt;h3 id=&#34;1-重新审视你的项目结构&#34;&gt;1. 重新审视你的项目结构
&lt;/h3&gt;&lt;p&gt;好的 Harness 有一个共同点：&lt;strong&gt;项目本身是可被 Agent 理解的&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;具体做法：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;README 要写&amp;quot;项目是什么、怎么跑、主要约束是什么&amp;quot;&lt;/li&gt;
&lt;li&gt;CLAUDE.md / AGENTS.md 写&amp;quot;Agent 在这个项目里应该遵守的规则&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;p&gt;Anthropic 自己在 Claude Code 项目里就是这么做的。一行 &lt;code&gt;CLAUDE.md&lt;/code&gt; 比 1000 字的 system prompt 更有效，因为 Harness 会在正确的时机读它，而不是把所有内容塞进 context。&lt;/p&gt;
&lt;h3 id=&#34;2-关注失败模式而不是成功模式&#34;&gt;2. 关注&amp;quot;失败模式&amp;quot;而不是&amp;quot;成功模式&amp;quot;
&lt;/h3&gt;&lt;p&gt;Prompt Engineering 时代，大家花大量时间想&amp;quot;什么样的 prompt 能让模型成功&amp;quot;。&lt;/p&gt;
&lt;p&gt;Harness Engineering 时代，&lt;strong&gt;更值得花时间的是&amp;quot;模型在哪些情况下会失败、失败后 Harness 怎么恢复&amp;quot;&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;工具调用返回 500 怎么办？重试几次？降级到哪个工具？&lt;/li&gt;
&lt;li&gt;模型输出格式不对怎么办？直接报错还是尝试解析？&lt;/li&gt;
&lt;li&gt;长任务跑到一半超出 context 怎么办？压缩历史还是分拆子任务？&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些&amp;quot;如果&amp;hellip;怎么办&amp;quot;的设计，比&amp;quot;怎么让 prompt 更精准&amp;quot;重要得多。&lt;/p&gt;
&lt;h3 id=&#34;3-把-harness-看作可观测的对象&#34;&gt;3. 把 Harness 看作可观测的对象
&lt;/h3&gt;&lt;p&gt;如果你的 Harness 没有日志、没有 metrics、没有 trace，那就不是一个 Harness，是一个黑盒。&lt;/p&gt;
&lt;p&gt;最低限度，你至少要能回答这些问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;这次任务一共消耗了多少 token？分别在哪一步？&lt;/li&gt;
&lt;li&gt;Agent 调用了哪些工具？每个工具的调用次数和成功率？&lt;/li&gt;
&lt;li&gt;Agent 在哪一步卡住过？最后怎么解决的？&lt;/li&gt;
&lt;li&gt;如果用户报告&amp;quot;这次结果不对&amp;quot;，你能从日志里复现 Agent 的决策路径吗？&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;AHE 之所以能把 Harness 优化到 77%，核心就是它把每个组件的贡献都量化了。&lt;strong&gt;你不需要做 AHE，但你至少要能看到自己 Harness 的运行情况&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id=&#34;六写在最后&#34;&gt;六、写在最后
&lt;/h2&gt;&lt;p&gt;回到开头那个判断。Prompt Engineering 时代是不是真的结束了，Harness Engineering 时代是不是真的开始了？&lt;/p&gt;
&lt;p&gt;更准确的说法是：&lt;strong&gt;Prompt 仍然是 Harness 的一部分，但 Harness 的复杂度已经超过了 Prompt 本身&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;就像前端工程师今天还是会写 HTML/CSS，但工作的主要内容已经变成了框架、状态管理、性能优化、构建工具。HTML/CSS 是地基，但不是全部。&lt;/p&gt;
&lt;p&gt;Harness 也是一样。它不是 Prompt 的&amp;quot;替代品&amp;quot;，而是 &lt;strong&gt;AI 工程化的新一层&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;2026 年不是 Harness 一夜爆火的年份，而是 Harness 从&amp;quot;少数先知在尝试&amp;quot;变成&amp;quot;行业共识在形成&amp;quot;的年份。OpenAI 和 Anthropic 同时押注这个词，只是这个共识的注脚。&lt;/p&gt;
&lt;p&gt;如果你在 2026 年刚开始用 Claude Code 或 Codex，建议把时间花在理解你用的工具的 Harness 设计、读完它的官方文档、研究它的失败模式，而不是反复调优 prompt。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;这些，比写一个 200 字的 system prompt 重要得多。&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://openai.com/index/harness-engineering/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI: Harness engineering: leveraging Codex in an agent-first world&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.augmentcode.com/guides/harness-engineering-ai-coding-agents&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Augment Code: Harness Engineering for AI Coding Agents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://arxiv.org/abs/2604.25850&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AHE: Agentic Harness Engineering (arXiv 2604.25850)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://medium.com/@tort_mario/ai-agent-best-practices-production-ready-harness-engineering-2026-guide-c1236d713fac&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Production-Ready Harness Engineering 2026 Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/sangkyunyoon/agentic-harness-engineering&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AHE GitHub Repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://nyosegawa.com/en/posts/harness-engineering-best-practices-2026/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Harness Engineering Best Practices 2026&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://bdtechtalks.com/2026/04/06/ai-harness-engineering-claude-code-leak/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Why harness engineering is becoming the new AI moat&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;相关阅读&#34;&gt;相关阅读
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;[[why-agent-harness-matters-2026]] — 为什么 2026 年大家突然都在谈 Agent Harness&lt;/li&gt;
&lt;li&gt;[[AI Agent 真正的分水岭：不是模型，而是可验证的 Harness]] — 偏技术细节&lt;/li&gt;
&lt;li&gt;[[Claude Code 工作流最佳实践]] — Claude Code Harness 的具体设计&lt;/li&gt;
&lt;li&gt;[[claude-code-creator-workflow]] — Claude Code 创始人的工作流揭秘&lt;/li&gt;
&lt;li&gt;[[AI Agent 的下一个封装单位，不是 App，而是 Skill Market]] — Harness 之上的 Skill 生态&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Claude 订阅计费 6 月 15 日大改版：你的 AI 编程成本会涨多少？</title>
        <link>https://blog.ccino.org/p/claude-subscription-billing-june-15-2026-cost-calculator/</link>
        <pubDate>Tue, 02 Jun 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/claude-subscription-billing-june-15-2026-cost-calculator/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/claude-subscription-billing-june-15-2026-cost-calculator/imgs/cover.png" alt="Featured image of post Claude 订阅计费 6 月 15 日大改版：你的 AI 编程成本会涨多少？" /&gt;&lt;p&gt;5 月 14 日，Anthropic 在没有任何大会、没有任何博客头条的情况下，悄悄把订阅计费规则改了一遍。&lt;/p&gt;
&lt;p&gt;新闻稿很短，标题也很技术化：&lt;strong&gt;Agent SDK、Claude Code、claude-p 将于 6 月 15 日迁出 Max 订阅，移至独立信用池。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;社区里的反应是分开的。&lt;/p&gt;
&lt;p&gt;一部分人看到消息后立刻去算自己的月度 token 账单；另一部分人觉得这是&amp;quot;小调整&amp;quot;，反正自己平时只用网页端聊聊天。两种态度都不算错，但都没说到这次改动真正有意思的地方。&lt;/p&gt;
&lt;p&gt;这次改版最关键的问题不是&amp;quot;会不会涨&amp;quot;，而是**&amp;ldquo;按什么算&amp;rdquo;**。&lt;/p&gt;
&lt;p&gt;Anthropic 把原来混在 Max 订阅里的高消耗用法（编程 Agent、SDK 调用、批处理）单独切出来，本质上是把订阅用户的&amp;quot;使用权&amp;quot;重新切成了两段：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一段是聊天、文档分析、网页版对话——继续算在 Max 订阅里&lt;/li&gt;
&lt;li&gt;一段是编程 Agent、SDK、批处理——移出 Max，按独立信用池计量&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这个变化对不同使用模式的开发者来说，&lt;strong&gt;成本曲线完全不一样&lt;/strong&gt;。同样是订阅 $200，有人 6 月账单可能只多 $20，有人会多 $250。&lt;/p&gt;
&lt;p&gt;所以这篇文章不想重复官方公告里的条款，也不想争论&amp;quot;是不是变了&amp;quot;。只想替你做一件事：把公告里那几行字，翻译成你下个月信用卡账单上会看到的数字。&lt;/p&gt;
&lt;h2 id=&#34;先把官方公告的语言翻译成人话&#34;&gt;先把官方公告的&amp;quot;语言&amp;quot;翻译成&amp;quot;人话&amp;quot;
&lt;/h2&gt;&lt;p&gt;在算账之前，先把 Anthropic 5 月 14 日公告里的几行字翻译一下。&lt;/p&gt;
&lt;p&gt;核心条款其实就三句：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Max 订阅继续包含网页版对话、文档分析、Artifacts 等轻量用法&lt;/strong&gt;。这部分不进入独立信用池。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agent SDK、Claude Code、claude-p 等编程/批处理类用法&lt;/strong&gt;从 6 月 15 日起移出 Max，&lt;strong&gt;进入独立、按美元计费的信用池&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;Max 订阅的月费&lt;strong&gt;保持不变&lt;/strong&gt;（Max 5x = $100/月、Max 20x = $200/月，按各档位不同）。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;关键点不在月费，而在第三句没有说的东西：&lt;strong&gt;独立信用池按 Anthropic API 的标准 token 价格计费&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这意味着什么？&lt;/p&gt;
&lt;p&gt;意味着如果你是 Claude Code 重度用户，你&lt;strong&gt;6 月 15 日之后的成本计算逻辑&lt;/strong&gt;，从&amp;quot;我买了 Max，包月随便用&amp;quot;，切换到&amp;quot;我先花订阅费，再用 token 计价&amp;quot;。&lt;/p&gt;
&lt;p&gt;这也是很多开发者读公告读到一半就懵的地方：他们没意识到&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;为了让数字看起来不抽象，我选了三种最常见的 Claude Code 使用模式来算账。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-subscription-billing-june-15-2026-cost-calculator/imgs/illustration-cost-comparison.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-subscription-billing-june-15-2026-cost-calculator/imgs/illustration-cost-comparison_hu_e676c148b746bc3.png 480w, https://blog.ccino.org/p/claude-subscription-billing-june-15-2026-cost-calculator/imgs/illustration-cost-comparison_hu_81d4ad36a425979b.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;三种典型用户的月度成本对比：改版前 vs 改版后（Sonnet vs Opus）&#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;所有数字都按 2026 年 5 月 Anthropic 官方 API 公开价格：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude Opus 4.8：输入 $15 / 1M tokens，输出 $75 / 1M tokens&lt;/li&gt;
&lt;li&gt;Claude Sonnet 4.6：输入 $3 / 1M tokens，输出 $15 / 1M tokens&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;场景一日常-chat-为主claude-code-偶尔用&#34;&gt;场景一：日常 chat 为主，Claude Code 偶尔用
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;使用模式&lt;/strong&gt;：每天用网页版 Claude 聊天 20-30 轮，偶尔用 Claude Code 处理一些简单任务（读文件、改 bug、看代码）。每天 Claude Code 实际消耗大约 30K-50K tokens。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;改版前&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;月费 $100（Max 5x）&lt;/li&gt;
&lt;li&gt;实际使用额度远超这 $100 能覆盖的范围&lt;/li&gt;
&lt;li&gt;实际成本：&lt;strong&gt;$100/月&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;Max 订阅月费 $100（包含网页版聊天）&lt;/li&gt;
&lt;li&gt;Claude Code 用量假设每天 40K tokens（输入 30K + 输出 10K），30 天 = 1.2M 输入 + 0.3M 输出&lt;/li&gt;
&lt;li&gt;如果走 Sonnet 4.6：1.2M × $3 + 0.3M × $15 = $3.6 + $4.5 = &lt;strong&gt;$8.1/月&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;如果走 Opus 4.8：1.2M × $15 + 0.3M × $75 = $18 + $22.5 = &lt;strong&gt;$40.5/月&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;结论&lt;/strong&gt;：月费从 $100 变成 $108（用 Sonnet）或 $140（用 Opus），&lt;strong&gt;涨幅 8%-40%&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;对这种用户来说，最大的变化是&lt;strong&gt;有了账单上能看到、用量超过预期会&amp;quot;破线&amp;quot;的意识&lt;/strong&gt;。以前觉得&amp;quot;反正我订阅了&amp;quot;。&lt;/p&gt;
&lt;h3 id=&#34;场景二claude-code-重度用户每天几小时&#34;&gt;场景二：Claude Code 重度用户，每天几小时
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;使用模式&lt;/strong&gt;：日常工作流大量依赖 Claude Code，包括多文件重构、跑测试、debug 长链路。每日 Claude Code 实际消耗大约 200K-400K tokens。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;改版前&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;月费 $200（Max 20x，假设按高配档）&lt;/li&gt;
&lt;li&gt;经常触及订阅上限，Anthropic 一直在调整限额&lt;/li&gt;
&lt;li&gt;实际成本：&lt;strong&gt;$200/月&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;Max 订阅月费 $200（包含网页版聊天）&lt;/li&gt;
&lt;li&gt;Claude Code 用量假设每天 300K tokens（输入 220K + 输出 80K），30 天 = 6.6M 输入 + 2.4M 输出&lt;/li&gt;
&lt;li&gt;走 Sonnet 4.6：6.6M × $3 + 2.4M × $15 = $19.8 + $36 = &lt;strong&gt;$55.8/月&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;走 Opus 4.8：6.6M × $15 + 2.4M × $75 = $99 + $180 = &lt;strong&gt;$279/月&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;结论&lt;/strong&gt;：月费从 $200 变成 $256（用 Sonnet）或 $479（用 Opus），&lt;strong&gt;涨幅 28%-140%&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;对这种用户来说，这是真正的&amp;quot;涨价&amp;quot;。&lt;/p&gt;
&lt;p&gt;但有个反直觉的地方：&lt;strong&gt;如果你的工作流可以全程用 Sonnet 4.6 解决，6 月 15 日之后你可能比之前更划算&lt;/strong&gt;，因为以前是 Max 20x 触及上限后被限流，现在可以按量补充。&lt;/p&gt;
&lt;h3 id=&#34;场景三使用-agent-sdk-做自动化批处理&#34;&gt;场景三：使用 Agent SDK 做自动化批处理
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;使用模式&lt;/strong&gt;：用 Anthropic Agent SDK 构建内部工具，比如自动 PR Review、自动文档生成、夜间批量任务。每月 token 消耗 100M+。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;改版前&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;通常直接走 API 按量付费（不订阅 Max）&lt;/li&gt;
&lt;li&gt;实际成本：&lt;strong&gt;$1000-$5000/月&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;Agent SDK 移出 Max，但对纯 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;结论&lt;/strong&gt;：对纯 API 用户，这次改版&lt;strong&gt;几乎没有影响&lt;/strong&gt;。但意味着 Anthropic 不再鼓励&amp;quot;重度 API 用户去买 Max 订阅&amp;quot;了。&lt;/p&gt;
&lt;h2 id=&#34;6-月-15-日之前的最佳行动&#34;&gt;6 月 15 日之前的&amp;quot;最佳行动&amp;quot;
&lt;/h2&gt;&lt;p&gt;如果你现在用 Claude Max 订阅，并且有相当一部分 Claude Code 用量，下面是 6 月 15 日之前可以做的几件事。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-subscription-billing-june-15-2026-cost-calculator/imgs/illustration-action-checklist.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-subscription-billing-june-15-2026-cost-calculator/imgs/illustration-action-checklist_hu_f92efd1c5ccb8d0c.png 480w, https://blog.ccino.org/p/claude-subscription-billing-june-15-2026-cost-calculator/imgs/illustration-action-checklist_hu_c7296862fb04f0a5.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;6月15日前的 4 步行动清单&#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;Max 5x / Max 20x 以前可以在 Opus 和 Sonnet 之间切换，但很多人&lt;strong&gt;不知道自己实际用的是哪个&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;一个简单的办法：在 Claude Code 里跑一个长任务，结束后看你的 token 消耗。如果输入 token 折算下来单价超过 $5/1M，那基本可以确认是 Opus 在跑。&lt;/p&gt;
&lt;p&gt;为什么这个重要？因为 6 月 15 日之后，&lt;strong&gt;模型选择直接变成成本选择&lt;/strong&gt;。同样的工作流，Sonnet 4.6 跑出来的成本可能是 Opus 4.8 的 1/5。&lt;/p&gt;
&lt;h3 id=&#34;第二件事把你的工作流拆开&#34;&gt;第二件事：把你的工作流拆开
&lt;/h3&gt;&lt;p&gt;以前你的工作流是&amp;quot;全部塞给 Claude Code 一把梭&amp;quot;，6 月 15 日之后，建议你&lt;strong&gt;主动拆开&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;轻量任务&lt;/strong&gt;（写注释、改变量名、补文档）→ 继续用 Max 订阅里的网页版对话&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;中等任务&lt;/strong&gt;（单文件 bug 修复、加测试）→ 用 Claude Code，但&lt;strong&gt;显式指定 Sonnet 4.6&lt;/strong&gt;（在 settings.json 里 model 设成 claude-sonnet-4-6）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;重型任务&lt;/strong&gt;（跨文件重构、复杂架构设计）→ 评估是否真的需要 Opus 4.8&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;显式指定模型这步是关键。Anthropic 文档里写的是&amp;quot;系统会自动选择合适的模型&amp;quot;，但&amp;quot;自动选择&amp;quot;在 6 月 15 日之后意味着&lt;strong&gt;自动选择更贵的那个&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id=&#34;第三件事给-claude-code-加用量监控&#34;&gt;第三件事：给 Claude Code 加用量监控
&lt;/h3&gt;&lt;p&gt;6 月 15 日之前，你的 Max 订阅是&amp;quot;包月随便用&amp;quot;。6 月 15 日之后，多花的部分&lt;strong&gt;会反映在 Anthropic 的月度账单上&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;建议在 6 月之前做好两件事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;给自己设一个&lt;strong&gt;月度 token 预算上限&lt;/strong&gt;（比如 30M 输入 + 10M 输出）&lt;/li&gt;
&lt;li&gt;在 Claude Code 里启用 &lt;code&gt;usage&lt;/code&gt; 命令，定期查看累计消耗&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;你也可以用 Anthropic Console 的 Usage 页面查看每日 token 曲线，提前判断 6 月 15 日之后的账单规模。&lt;/p&gt;
&lt;h3 id=&#34;第四件事评估绕路方案&#34;&gt;第四件事：评估&amp;quot;绕路&amp;quot;方案
&lt;/h3&gt;&lt;p&gt;如果你的工作流对成本非常敏感，可以考虑几个绕路：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;混合方案&lt;/strong&gt;：把一部分自动化任务（比如批量文档生成、夜间测试）用本地 Ollama 跑 Qwen3.5 / Llama 4，处理不了的复杂任务再走 Claude API&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;缓存策略&lt;/strong&gt;：Anthropic 提供了 prompt caching，可以把系统提示词、项目背景等&amp;quot;几乎不变的内容&amp;quot;缓存起来，重复使用只算 10% 的 token 费&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;批处理 API&lt;/strong&gt;：Anthropic 的 Batch API 对大批量任务提供 50% 折扣，6 月 15 日之后会自动按 Batch 计费&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;这件事的真正信号&#34;&gt;这件事的真正信号
&lt;/h2&gt;&lt;p&gt;只看这次改版的条款，会觉得就是一次产品调整。&lt;/p&gt;
&lt;p&gt;但把它放进 Anthropic 这一年的动作里看，会发现它属于一个&lt;strong&gt;更大趋势&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;回看 2025 年底到 2026 年中的几个时间点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2026 年 2 月：Anthropic 发布 Claude Code Code Review，把多 Agent 自动 review 做成产品&lt;/li&gt;
&lt;li&gt;2026 年 4 月：Anthropic 尝试把 Claude Code 从 Pro 页面移除（虽然回滚了）&lt;/li&gt;
&lt;li&gt;2026 年 5 月：Anthropic 把 Cowork 定位为&amp;quot;AI 正式员工&amp;quot;，按席位 + 用量混合计费&lt;/li&gt;
&lt;li&gt;2026 年 5 月：Anthropic 完成 650 亿美元融资，估值 9650 亿美元，开始筹备 IPO&lt;/li&gt;
&lt;li&gt;2026 年 6 月：Anthropic 把 Agent SDK / Claude Code 从 Max 订阅拆出&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这条线的方向很清晰：&lt;strong&gt;Anthropic 正在从&amp;quot;卖模型访问权&amp;quot;转向&amp;quot;卖持续工作能力&amp;quot;，而持续工作能力的成本结构，和单纯的 chat 是不一样的。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;chat 是一次性请求，可以估算、可以平均化。Agent 任务是连续的、状态化的、长时间运行的。两者混在一个订阅包里的时代，正在结束。&lt;/p&gt;
&lt;p&gt;这不是 Anthropic 一家的事。OpenAI 也在做类似的事——ChatGPT Team 和 Enterprise 早就按&amp;quot;席位 + API 用量&amp;quot;混合计费。Cursor、Windsurf 这些 AI IDE 也都在悄悄调整&amp;quot;无限使用&amp;quot;的范围。&lt;/p&gt;
&lt;p&gt;换句话说，&lt;strong&gt;6 月 15 日的这次改版，只是 AI 编程工具商业化进入&amp;quot;成年期&amp;quot;的一个小节点&lt;/strong&gt;。&lt;/p&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;strong&gt;不用都做完，先做第一步就够&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;第一步（5月底前）&lt;/strong&gt;：去 Anthropic Console 把过去 3 个月的 token 用量拉出来，按&amp;quot;网页聊天&amp;quot;和&amp;quot;Claude Code&amp;quot;分类。这一步最关键，没有数据后面都是空算&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第二步（6月初）&lt;/strong&gt;：用 1-2 周时间试着用 Sonnet 4.6 跑你的核心工作流，看看 Sonnet 能不能覆盖 70% 以上的任务。如果能，那你下个月的账单可能比预想的好看&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第三步（6月15日当天）&lt;/strong&gt;：根据上一步的结论，决定订阅档位（Max 5x 还是 Max 20x），并显式配置模型选择——别再让系统&amp;quot;自动选&amp;quot;，特别是在高消耗场景里&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这次改版不是&amp;quot;AI 编程变贵了&amp;quot;，而是**&amp;ldquo;AI 编程的成本变得透明了&amp;rdquo;**。以前你多花的 token 都被 Max 订阅包住了，看不到；现在每一分钱都会出现在账单上。账单变难看是坏事，但能认真算 ROI 反而是好事——至少你以后在团队里申请 AI 工具预算时，能拿出具体的数字。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;6 月 15 日是个值得标记的日期&lt;/strong&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://codersera.com/blog/anthropic-june-2026-billing-change-claude-code/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic June 15 Billing Change 详解（codersera）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://devtoolpicks.com/blog/anthropic-splits-claude-subscriptions-agent-sdk-credit-june-2026&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic Splits Claude Subscriptions（devtoolpicks）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://aiforanything.io/blog/claude-model-deprecation-migration-guide-june-2026&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Model Deprecations June 2026 Migration Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.digitalapplied.com/blog/anthropic-claude-credit-overhaul-june-15-2026&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic Claude Credit Overhaul June 15 2026&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/overview&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic Platform Release Notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.anthropic.com/news/claude-opus-4-8&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Opus 4.8 官方发布&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;相关阅读&#34;&gt;相关阅读
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;[[claude-code-subscription-rules-rewrite-2026]] — 4 月那次&amp;quot;页面风波&amp;quot;的复盘&lt;/li&gt;
&lt;li&gt;[[claude-code-workflow-best-practices-2026]] — Claude Code 工作流最佳实践&lt;/li&gt;
&lt;li&gt;[[claude-sonnet-4-6-multi-model-routing]] — 多模型路由策略&lt;/li&gt;
&lt;li&gt;[[local-ai-vs-claude-2026]] — 本地 AI 和 Claude 的成本对比&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>删掉 95% 的 Agent Skills，结果反而更准了</title>
        <link>https://blog.ccino.org/p/agent-skills-less-is-more/</link>
        <pubDate>Mon, 01 Jun 2026 09:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/agent-skills-less-is-more/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/agent-skills-less-is-more/imgs/cover.png" alt="Featured image of post 删掉 95% 的 Agent Skills，结果反而更准了" /&gt;&lt;p&gt;最近看到一个挺反常识的案例。&lt;/p&gt;
&lt;p&gt;AI Engineer 的一场分享里，WorkOS 工程师 Nick Nisi 讲他们怎么在 20 多个多语言仓库里用 Agent 工作。按他的说法，团队一开始做了很多人都会做的事：把经验、流程、命令、注意事项都写进 Skills，希望 Agent 少踩坑。&lt;/p&gt;
&lt;p&gt;后来这份东西越写越长，堆到了大约 1 万行。&lt;/p&gt;
&lt;p&gt;问题也跟着来了。Agent 变慢，评估时间变长，还更容易被一堆和当前任务没关系的说明带偏。最后他们反过来做了一次大清理：把 Skills 砍到 553 行，只留下真正会出事故的坑点和边界。分享里给出的结果是，单次评估时间从 68 分钟降到 6 分钟，准确率从 77% 提到 97%。&lt;/p&gt;
&lt;p&gt;这组数字我没有独立复现，只能当作一个案例来看。但它说中的那个感觉，很多 Claude Code、Codex、Cursor 用户应该都熟悉。&lt;/p&gt;
&lt;p&gt;刚开始用 Agent，你会觉得它缺上下文，于是加一段说明。下一次它又踩了坑，你再补一条规则。再后来，项目里有了 CLAUDE.md，有了 commands，有了 skills，有了 hooks，还有一堆“以后一定要注意”的补丁。每一条单看都有道理，合在一起却像一本越写越厚、还经常前后矛盾的员工手册。&lt;/p&gt;
&lt;p&gt;你以为自己在给 Agent 铺路，实际可能是在给它增加阅读理解题。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/agent-skills-less-is-more/imgs/cover.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/agent-skills-less-is-more/imgs/cover_hu_9a8f1195a88384b.png 480w, https://blog.ccino.org/p/agent-skills-less-is-more/imgs/cover_hu_21ce28854ea14f83.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Agent Skills 极简化封面：删掉 95% 的 Agent Skills，结果反而更准了&#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;长-skill-的麻烦不只是-token-多&#34;&gt;长 Skill 的麻烦，不只是 token 多
&lt;/h2&gt;&lt;p&gt;很多人会把 Skill 变长的问题理解成 token 成本。上下文越长，当然越贵、越慢。但更麻烦的不是贵，而是信息层级乱了。&lt;/p&gt;
&lt;p&gt;比如你写一个博客发布流程。里面有检查 frontmatter、跑构建、生成封面、修图片路径、预览、提交、推送。人类很自然会把它整理成 SOP：第一步做什么，第二步看哪里，失败了怎么处理。&lt;/p&gt;
&lt;p&gt;如果这是给人看的文档，没问题。人会知道哪些是硬要求，哪些只是经验，哪些是某次事故后补上的提醒。&lt;/p&gt;
&lt;p&gt;模型不一定能稳定分清。&lt;/p&gt;
&lt;p&gt;一份几千行的 Skill 里，常常混着三种东西：永远必须遵守的规则、某个场景才有用的经验、以及某次翻车之后留下的情绪化提醒。人类读的时候会自动降噪，Agent 读的时候却可能把一个局部经验当成全局规则，也可能在真正危险的地方漏掉一条硬约束。&lt;/p&gt;
&lt;p&gt;这就是 Prompt 负债。&lt;/p&gt;
&lt;p&gt;代码负债至少还能编译、测试、重构。Prompt 负债不会报错，它只是让 Agent 变得啰嗦、迟疑、绕路，或者在错误的上下文里引用一条过时规则。你很难一眼看出来是哪一句话害的，只会觉得“今天这个模型怎么不太聪明”。&lt;/p&gt;
&lt;p&gt;有时候，问题不在模型，而在我们喂给它的那堆历史包袱。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/agent-skills-less-is-more/imgs/prompt-debt.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/agent-skills-less-is-more/imgs/prompt-debt_hu_3098ad38c3d8bf05.png 480w, https://blog.ccino.org/p/agent-skills-less-is-more/imgs/prompt-debt_hu_69f58d9ab556e35e.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Prompt 负债：从冗长说明到高密度坑点&#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;skill-更像地雷图不像说明书&#34;&gt;Skill 更像地雷图，不像说明书
&lt;/h2&gt;&lt;p&gt;WorkOS 这个案例真正有意思的地方，不是 553 行这个数字，而是他们重新定义了 Skill 的用途。&lt;/p&gt;
&lt;p&gt;他们不是把 1 万行压缩成更短的摘要，而是让 Skill 从“教 Agent 怎么做事”变成“告诉 Agent 哪里会炸”。&lt;/p&gt;
&lt;p&gt;这两个东西差别很大。&lt;/p&gt;
&lt;p&gt;说明书式 Skill 会写得很完整：第一步执行什么命令，第二步检查什么文件，第三步遇到什么情况怎么处理。它默认 Agent 像一个刚入门的新手，必须照着流程走。&lt;/p&gt;
&lt;p&gt;地雷图式 Skill 不太一样。它会告诉你：这个仓库里 &lt;code&gt;generated/&lt;/code&gt; 目录不能手改；这个测试日志不能只看最后一行；这个 API 返回字段名很像，但语义不同；这个发布脚本缺环境变量时不会明显报错。&lt;/p&gt;
&lt;p&gt;前者在替 Agent 做计划，后者是在把人类已经付过学费的坑标出来。&lt;/p&gt;
&lt;p&gt;现在的 coding agent 已经不太需要你手把手教它读 README、看 package.json、搜索代码、推断测试命令。它经常能自己完成这些通用动作。真正值得写进 Skill 的，通常是它从公开知识里推不出来、但在你这个项目里很要命的东西。&lt;/p&gt;
&lt;p&gt;比如，一个目录看起来能改，其实是生成产物；一个命令看起来成功，其实吞了错误；一个测试可以单独跑，但发布前必须跑完整套；一个方案上个月已经被否掉了，这次不要又绕回去。&lt;/p&gt;
&lt;p&gt;这些信息不长，但密度很高。&lt;/p&gt;
&lt;h2 id=&#34;别只提醒-agent-不要撒谎&#34;&gt;别只提醒 Agent “不要撒谎”
&lt;/h2&gt;&lt;p&gt;WorkOS 还提到一个细节：他们用 SHA-256 哈希验证测试日志，防止 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;/p&gt;
&lt;p&gt;测试跑过，就应该有日志。日志是不是这次运行产生的，可以用哈希、时间戳、CI 记录去确认。构建成功，就应该有 exit code 和产物。Agent 可以解释这些东西，但验收不应该只靠它一句“我确认过了”。&lt;/p&gt;
&lt;p&gt;这也是 Agent 工程里很重要的一条分界线：能写成代码的约束，就不要只写成 Prompt。&lt;/p&gt;
&lt;p&gt;Prompt 适合表达意图、偏好和少量例外。权限、格式、边界、验收，最好交给脚本、测试、lint、CI。把边界全写进 Prompt，有点像把防火墙规则写进新人入职手册。理论上看得到，真出事时不够硬。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/agent-skills-less-is-more/imgs/verification-harness.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/agent-skills-less-is-more/imgs/verification-harness_hu_3580f0a49c77c978.png 480w, https://blog.ccino.org/p/agent-skills-less-is-more/imgs/verification-harness_hu_fa917058ac4af620.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;验证门禁：Agent 执行、测试日志、SHA-256 与人工评审&#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;好-skill-应该经得起追问&#34;&gt;好 Skill 应该经得起追问
&lt;/h2&gt;&lt;p&gt;如果把 Skill 当教材，你自然会追求完整。背景越多越好，步骤越细越好，案例越全越好。&lt;/p&gt;
&lt;p&gt;但如果把 Skill 当成 Agent 工作时的约束层，判断标准就变了。你会开始问一些更尖锐的问题：这条规则有没有避免过真实错误？它会不会在当前任务里改变 Agent 的行为？它和别的规则有没有冲突？删掉以后，失败率会不会上升？&lt;/p&gt;
&lt;p&gt;很多看起来正确的话，经不起这些追问。&lt;/p&gt;
&lt;p&gt;“写代码要清晰优雅”，正确，但太空。模型读完也不知道下一步该多做什么。&lt;/p&gt;
&lt;p&gt;“这个仓库路径包含空格，所有 shell 路径必须加引号”，就很具体。它能改变行为，也能避免真实错误。&lt;/p&gt;
&lt;p&gt;“Hugo frontmatter 里的 categories 用文本格式，tags 用数组格式”，也很具体。它甚至可以被脚本检查。&lt;/p&gt;
&lt;p&gt;所以我现在更倾向于把 Skill 里的规则看成一组高价值断言。每一条最好都能解释：它从哪次失败里来，触发场景是什么，违反后会发生什么，能不能自动验证。&lt;/p&gt;
&lt;p&gt;解释不出来，就先不要放在默认上下文里。&lt;/p&gt;
&lt;h2 id=&#34;我的清理方式先给规则分层&#34;&gt;我的清理方式：先给规则分层
&lt;/h2&gt;&lt;p&gt;如果你已经攒了一堆 CLAUDE.md、skills、commands、hooks，不一定要马上大删特删。更实际的办法，是先给它们分层。&lt;/p&gt;
&lt;p&gt;有些规则是硬约束。比如不要主动提交 git，生产发布前必须确认，某些目录由生成器管理不能手改。这类东西少而硬，应该放在 Agent 最容易看到的位置。&lt;/p&gt;
&lt;p&gt;有些是项目地雷。比如路径、编码、构建命令、frontmatter 格式、某些历史坑。它们不一定适用于所有任务，但在这个项目里很关键，可以放在项目级 CLAUDE.md 或对应 Skill 里。&lt;/p&gt;
&lt;p&gt;还有一些是流程模板。比如写博客、发公众号、生成封面、归档 Inbox。这类东西更适合做成可调用的 skill 或脚本，而不是塞进一份长长的通用说明。&lt;/p&gt;
&lt;p&gt;最后是参考资料。设计原则、详细教程、过往复盘、案例库，都可能很有价值，但不该每次都进上下文。它们更适合放到 &lt;code&gt;references/&lt;/code&gt; 里，等 Skill 真要用的时候再读取。&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;这里容易误解。删掉 95% 的 Skills，不代表团队少沉淀 95% 的经验。&lt;/p&gt;
&lt;p&gt;很多知识不该消失，只是不该常驻上下文。&lt;/p&gt;
&lt;p&gt;长篇解释可以变成 references。重复检查可以变成脚本。格式规则可以变成 lint。发布流程可以变成命令。历史经验可以变成少量地雷提示，而不是整段事故复盘。&lt;/p&gt;
&lt;p&gt;也就是说，目标不是让知识变少，而是让知识各归其位。&lt;/p&gt;
&lt;p&gt;入口处只放最硬的约束；任务技能里放当前任务需要的步骤和坑点；长背景材料按需读取；能自动检查的就交给机器。这样 Agent 不用每次背着整本百科全书干活，也不会在真正需要某条经验时完全找不到。&lt;/p&gt;
&lt;p&gt;这比单纯“多写提示词”要麻烦一点，但更接近软件工程。&lt;/p&gt;
&lt;h2 id=&#34;也许该删一点-skills-了&#34;&gt;也许该删一点 Skills 了
&lt;/h2&gt;&lt;p&gt;过去我们总怕 Agent 不知道怎么做，于是不断给它补说明。&lt;/p&gt;
&lt;p&gt;但现在很多时候，Agent 已经知道太多“可能的做法”。它缺的不是更多话，而是更清楚的边界：哪里不能碰，什么算完成，结果怎么验证，失败时该停在哪里。&lt;/p&gt;
&lt;p&gt;WorkOS 的案例给我的提醒是：Agent 工程不是写一本越来越厚的操作手册，而是把经验压缩成更少、更硬、更能验证的约束。&lt;/p&gt;
&lt;p&gt;能脚本化的，交给脚本。能测试的，交给测试。能通过日志和哈希验证的，不要靠模型口头承诺。真正写进 Skill 的，应该是那些模型自己推不出来、但你已经踩过的坑。&lt;/p&gt;
&lt;p&gt;如果你的 Claude Code 越用越慢、越用越啰嗦，未必是模型变差了。&lt;/p&gt;
&lt;p&gt;也许是 Skill 太厚了。&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.youtube.com/watch?v=vy7o1g2iHY8&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;删除 95% 的 Agent Skills 后，WorkOS 如何让智能体结果变好&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=u1OmcS97iOg&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ahmed Rehan: agent-harness Demo: Reviewable AI Agent Assets for Developers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=ZPDzifuf7HA&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Rushi More: What Is an AI Agent Harness?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>OpenRouter 融了 1.13 亿美元：AI 应用的入口，正在从“选模型”变成“选路由”</title>
        <link>https://blog.ccino.org/p/openrouter-model-routing-infra/</link>
        <pubDate>Sun, 31 May 2026 09:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/openrouter-model-routing-infra/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/openrouter-model-routing-infra/imgs/cover.png" alt="Featured image of post OpenRouter 融了 1.13 亿美元：AI 应用的入口，正在从“选模型”变成“选路由”" /&gt;&lt;p&gt;OpenRouter 刚完成 1.13 亿美元 B 轮融资。&lt;/p&gt;
&lt;p&gt;公告里写得很漂亮：CapitalG 领投，NVentures、ServiceNow Ventures、MongoDB Ventures、Snowflake Ventures、Databricks Ventures 等参投；过去六个月，平台周处理量从 5 万亿 tokens 增长到 25 万亿 tokens；OpenRouter 称自己服务 800 万以上开发者，覆盖 400 多个模型。&lt;/p&gt;
&lt;p&gt;这条新闻也上了 Hacker News 首页。当前条目显示，它拿到了 342 points 和 166 comments。一个模型调用基础设施产品能有这个讨论度，已经说明它不只是开发者圈里的小工具了。&lt;/p&gt;
&lt;p&gt;不过，如果只把这件事写成“又一家 AI 公司融了大钱”，就有点浪费了。&lt;/p&gt;
&lt;p&gt;我更关心的是另一个问题：为什么现在是 OpenRouter？为什么一个站在应用和模型之间、做聚合、路由、账单和故障切换的平台，会突然变得这么有价值？&lt;/p&gt;
&lt;p&gt;答案可能不在融资金额里，而在 AI 应用开发的日常麻烦里。&lt;/p&gt;
&lt;p&gt;过去大家做 AI 产品，第一反应往往是选模型：用 GPT，还是 Claude？用 Gemini，还是开源模型？但到了生产环境，问题会慢慢变成另一种样子：这个请求该走哪个模型？如果供应商限流怎么办？成本超预算怎么办？企业客户不允许数据留存怎么办？某个模型变贵或者变弱，系统能不能切走？&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;押 OpenAI，就围绕 GPT API 设计提示词、上下文和成本。押 Anthropic，就围绕 Claude 的长上下文、写作能力或代码能力来做体验。偏开源路线，就在 Llama、Qwen、Mistral、DeepSeek 这些模型里选一个部署方案。&lt;/p&gt;
&lt;p&gt;早期这样做没问题。很多产品本质上就是“一个模型加一个界面”：用户输入一句话，模型返回一段内容。模型差距足够大时，选对模型就能把体验拉起来。&lt;/p&gt;
&lt;p&gt;麻烦出现在产品长大以后。&lt;/p&gt;
&lt;p&gt;比如，一个客服产品可能发现，八成请求用便宜模型就够了，但少数高价值客户的问题必须交给更强模型。一个编程工具可能发现，A 模型写代码更稳，B 模型解释报错更清楚，C 模型便宜到适合做批处理。再比如，某个供应商今天延迟突然飙升，或者晚上高峰期开始限流，产品不能跟着一起卡住。&lt;/p&gt;
&lt;p&gt;成本也会改变心态。每月几百美元模型账单时，大家更在意上线速度；一旦账单涨到几万美元，模型调用就不再是可以忽略的小开销。你会开始追问：哪些请求真的需要强模型？哪些请求可以降级？哪些功能在偷偷烧钱？&lt;/p&gt;
&lt;p&gt;这时，真正的问题已经不是“哪个模型最强”，而是能不能把模型当成一组可调度、可替换、可观察的资源来管理。&lt;/p&gt;
&lt;p&gt;OpenRouter 这类平台的机会，就出现在这个转折点上。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/openrouter-model-routing-infra/imgs/model-routing-layer.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/openrouter-model-routing-infra/imgs/model-routing-layer_hu_cba2d105c90894bf.png 480w, https://blog.ccino.org/p/openrouter-model-routing-infra/imgs/model-routing-layer_hu_1e3cdafa1b7d71ff.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;OpenRouter 位于应用与多个模型供应商之间，承担路由、成本、延迟、故障切换和合规控制&#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;openrouter-不只是模型超市&#34;&gt;OpenRouter 不只是“模型超市”
&lt;/h2&gt;&lt;p&gt;从外面看，OpenRouter 很容易被理解成一个模型超市：一个接口，接很多模型，开发者不用分别注册一堆账号。&lt;/p&gt;
&lt;p&gt;这个理解没错，但太浅。&lt;/p&gt;
&lt;p&gt;在 B 轮融资公告里，OpenRouter 把自己放在应用、Agent 和模型提供商之间。它强调的能力不是“模型数量多”这么简单，而是路由、可靠性、成本优化、合规、企业 workspace、费用管理、guardrails、零数据保留、供应商级故障切换、质量感知路由。&lt;/p&gt;
&lt;p&gt;这些词有点枯燥，但它们恰恰是生产环境里最真实的问题。&lt;/p&gt;
&lt;p&gt;一个 Demo 只需要能调通模型。一个要收钱、要签企业客户、要稳定运行的 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;OpenRouter 想站的位置，大概就是这张操作台。&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;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;h2 id=&#34;从-api-key-到-gateway&#34;&gt;从 API Key 到 Gateway
&lt;/h2&gt;&lt;p&gt;很多团队第一次接入 AI，都是从一个 API Key 开始。&lt;/p&gt;
&lt;p&gt;拿到 key，写几行 SDK 调用，调一段 prompt，功能上线。这个阶段越简单越好，没必要过度设计。&lt;/p&gt;
&lt;p&gt;但真实用户来了以后，代码里的模型调用会慢慢变成一堆散点：这个功能接 OpenAI，那个功能接 Claude，后台任务用了另一个便宜模型；每个地方都有自己的错误处理和重试逻辑；账单来了以后，也很难说清楚到底是谁烧掉的。&lt;/p&gt;
&lt;p&gt;再往后，模型升级也开始变麻烦。一个模型换版本，可能影响多个功能；一个供应商出问题，临时切换要改代码；某个客户要求数据不出某个供应商，工程团队还得专门绕一套逻辑。&lt;/p&gt;
&lt;p&gt;于是 gateway 或 router 这类中间层会自然长出来。&lt;/p&gt;
&lt;p&gt;它大概承担几件事：统一模型调用入口；根据任务、用户等级、成本预算和延迟要求选择模型；主供应商失败时切到备用模型；记录每个功能、团队或客户的消耗；处理数据保留、权限和审计；比较不同模型在真实任务里的表现。&lt;/p&gt;
&lt;p&gt;OpenRouter、Vercel AI Gateway、LiteLLM、自建代理层，都是这类需求的不同解法。&lt;/p&gt;
&lt;p&gt;区别不在于谁“绝对更好”，而在于团队想把控制权放在哪里。&lt;/p&gt;
&lt;p&gt;OpenRouter 这样的托管平台，优势是快。模型多，接入省事，不用自己维护一堆供应商适配。Vercel AI Gateway 更贴近前端和应用部署生态。LiteLLM 或自建网关则适合更在意数据、日志、私有化部署和内部控制的团队。&lt;/p&gt;
&lt;p&gt;小项目可以直接调 API。产品走到一定规模后，模型调用就不该只是散落在代码里的 SDK 调用。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/openrouter-model-routing-infra/imgs/api-to-gateway.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/openrouter-model-routing-infra/imgs/api-to-gateway_hu_47c01dd53742b0cd.png 480w, https://blog.ccino.org/p/openrouter-model-routing-infra/imgs/api-to-gateway_hu_9088fbb979fb784a.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;AI 应用架构从单一 API Key 调用，演进到由 Gateway 或 Router 统一管理多模型、账单、监控和故障切换&#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;OpenRouter 这轮融资的投资方名单值得多看一眼。&lt;/p&gt;
&lt;p&gt;除了 CapitalG，里面还有 ServiceNow Ventures、MongoDB Ventures、Snowflake Ventures、Databricks Ventures、NVentures。这些名字背后连接的是企业软件、数据平台、云基础设施和 AI 计算生态。&lt;/p&gt;
&lt;p&gt;这不能直接推导出 OpenRouter 会和它们达成具体合作，公告也没有这么承诺。但这至少说明，模型路由已经不只是开发者社区里的便利工具，而开始被企业基础设施玩家看见。&lt;/p&gt;
&lt;p&gt;企业为什么会在意这件事？因为它们问的问题通常不浪漫，却很关键。&lt;/p&gt;
&lt;p&gt;哪个团队用了多少 tokens？哪个客户的成本最高？请求失败有没有重试和降级？数据会不会被模型供应商保留？新模型上线前有没有灰度和回滚？合同里写的安全承诺，能不能落实到每一次模型调用？&lt;/p&gt;
&lt;p&gt;这些问题听起来不像 AI 新闻里的主角，但它们决定 AI 能不能真正进入生产环境。&lt;/p&gt;
&lt;p&gt;OpenRouter 的融资叙事，正是把自己放在这组问题中间：不是帮你尝鲜某个新模型，而是帮你管理一套多模型生产系统。&lt;/p&gt;
&lt;h2 id=&#34;什么样的团队需要模型路由层&#34;&gt;什么样的团队需要模型路由层？
&lt;/h2&gt;&lt;p&gt;不是每个项目都需要 OpenRouter，也不是每个团队都该立刻搭一层复杂网关。&lt;/p&gt;
&lt;p&gt;如果你只是做个人工具、Demo、内部小脚本，直接调用一个模型 API 往往最合适。早期最重要的是把东西做出来，而不是先把架构画得很完整。&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;这也是 OpenRouter 这类平台最实际的价值：它不保证每次调用都更便宜，但它给应用保留了选择权。&lt;/p&gt;
&lt;h2 id=&#34;别把中间层当成新的神&#34;&gt;别把中间层当成新的神
&lt;/h2&gt;&lt;p&gt;当然，OpenRouter 不是银弹。&lt;/p&gt;
&lt;p&gt;在应用和模型供应商之间增加第三方平台，本身也是一种新依赖。它可以降低你对单个模型的依赖，也可能让你依赖新的路由平台。&lt;/p&gt;
&lt;p&gt;这里有几个风险不能忽略。&lt;/p&gt;
&lt;p&gt;数据和合规是第一层。模型请求会经过路由平台，企业必须确认数据保留、日志、加密、访问控制和合规承诺是否符合自己的业务要求。OpenRouter 公告里提到了零数据保留等企业能力，但具体到某个行业、某个客户，仍然要一项项看。&lt;/p&gt;
&lt;p&gt;调试是第二层。多模型路由越智能，问题排查越麻烦。同一个用户问题，今天走 A 模型，明天走 B 模型，效果变化到底来自模型、prompt、路由策略，还是供应商状态？如果日志和评估没做好，所谓智能路由也可能变成黑盒。&lt;/p&gt;
&lt;p&gt;锁定是第三层。平台刚接入时很方便；调用量上来以后，你会越来越依赖它的模型列表、路由规则、账单体系和企业控制台。未来想换走，未必轻松。&lt;/p&gt;
&lt;p&gt;所以，更稳妥的态度是：把模型路由层当成架构里的一个可替换组件，而不是新的单点信仰。&lt;/p&gt;
&lt;p&gt;这也是为什么有些团队会选择 LiteLLM 或自建网关。它们未必最省事，但能把关键控制面留在自己手里。&lt;/p&gt;
&lt;h2 id=&#34;最后拼的不是模型名字而是模型管理能力&#34;&gt;最后拼的不是模型名字，而是模型管理能力
&lt;/h2&gt;&lt;p&gt;我倾向于把未来的 AI 应用调用链看成三层。&lt;/p&gt;
&lt;p&gt;底层是模型供应商。OpenAI、Anthropic、Google、Meta、DeepSeek、Mistral、Qwen 等继续竞争模型能力、价格、上下文长度和多模态能力。&lt;/p&gt;
&lt;p&gt;中间是路由和治理。OpenRouter、Vercel AI Gateway、LiteLLM、自建网关以及云厂商服务，会围绕这层继续竞争。它们解决的不是“哪个模型最聪明”，而是怎样把一堆模型变成稳定、可控、可审计的生产资源。&lt;/p&gt;
&lt;p&gt;最上层才是用户真正看到的应用。客服、编程工具、内容生成、研究助理、企业工作流，用户最终关心的是结果是否稳定、价格是否可接受、出了问题有没有兜底。&lt;/p&gt;
&lt;p&gt;普通用户以后可能越来越不关心底层用了哪个模型。就像你使用一个 SaaS 产品时，通常不会在意它跑在哪个云区域、用了哪家数据库。你只关心它快不快、稳不稳、结果好不好。&lt;/p&gt;
&lt;p&gt;但对开发者和企业来说，模型选择不会变得不重要。它会从“产品早期选一个模型”，变成“运行过程中持续调度一组模型”。&lt;/p&gt;
&lt;p&gt;这才是 OpenRouter 这轮融资最值得看的地方。&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://openrouter.ai/announcements/series-b&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenRouter：OpenRouter Raises $113M Series B&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://news.ycombinator.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hacker News：首页 OpenRouter raises $113M Series B 讨论&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Agent 第二大脑开源了Hy-Memory：Openclaw 为什么三周后就变笨？</title>
        <link>https://blog.ccino.org/p/hy-memory-agent-second-brain-2026/</link>
        <pubDate>Sat, 30 May 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/hy-memory-agent-second-brain-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/hy-memory-agent-second-brain-2026/imgs/cover.png" alt="Featured image of post Agent 第二大脑开源了Hy-Memory：Openclaw 为什么三周后就变笨？" /&gt;&lt;p&gt;我最近越来越觉得，很多 AI 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;这种体验很像和一个人连续合作了几周，结果每次开会前都要重新介绍一遍项目。&lt;/p&gt;
&lt;p&gt;腾讯混元最近开源的 Hy-Memory，切中的正是这个问题。Hy-Memory 把长期 Agent 协作的痛点概括成一句话：第一周是思考伙伴，第三周沦为查询工具。它提出的办法，是给 Agent 做一个“第二大脑”：用 6 层记忆框架保存不同密度的信息，再用 System1 / System2 两套机制分别处理实时写入和后台整理。&lt;/p&gt;
&lt;p&gt;我不想把它写成一篇“某某项目发布了什么功能”的新闻稿。更值得聊的是：为什么 Agent 明明有越来越长的上下文窗口，还是会在长期协作里变笨？&lt;/p&gt;
&lt;h2 id=&#34;上下文窗口不是记忆&#34;&gt;上下文窗口不是记忆
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/hy-memory-agent-second-brain-2026/imgs/context-vs-memory.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/hy-memory-agent-second-brain-2026/imgs/context-vs-memory_hu_31e6fb382cacd850.png 480w, https://blog.ccino.org/p/hy-memory-agent-second-brain-2026/imgs/context-vs-memory_hu_eadcf91d6202f3e1.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;很多人第一次理解 AI 的“失忆”，都是从多轮对话开始的。&lt;/p&gt;
&lt;p&gt;少数派最近有篇实践文章，作者从零做了一个 Raycast 形态的 AI Agent。他很快发现一个基础事实：模型并不知道上一轮发生了什么。所谓多轮对话，本质上是程序把前几轮消息重新塞回去，让模型在这一轮“看起来记得”。&lt;/p&gt;
&lt;p&gt;这个办法当然能用。我自己做各种自动化脚本时，也经常这么处理。&lt;/p&gt;
&lt;p&gt;但它有个问题：越往后越难收拾。&lt;/p&gt;
&lt;p&gt;只塞最近几轮，早期信息会丢；塞太多历史，token 成本会涨，噪声也会变多；再往后只能压缩，把旧对话总结成摘要。摘要又会带来另一个问题：它通常能保留“发生了什么”，但很难保留“当时为什么这么判断”。&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;这也是为什么单纯扩大上下文窗口解决不了长期协作。100 万 token 的窗口当然很厉害，可如果里面混着旧需求、废弃方案、临时讨论、过时偏好和当前目标，模型仍然要在一堆互相打架的信息里猜哪条更重要。&lt;/p&gt;
&lt;p&gt;真正麻烦的不是“能不能放进去”，而是“放进去以后，谁来判断它还值不值得影响下一次决策”。&lt;/p&gt;
&lt;h2 id=&#34;真正该记住的往往不是原话&#34;&gt;真正该记住的，往往不是原话
&lt;/h2&gt;&lt;p&gt;把 Agent 记忆理解成“长期保存聊天记录”，其实低估了这件事。&lt;/p&gt;
&lt;p&gt;聊天记录只是原料。长期协作真正需要留下来的，是从原料里提炼出来的经验。&lt;/p&gt;
&lt;p&gt;比如我在这个 Obsidian 仓库里写 Hugo 博客，文章目录在 &lt;code&gt;博客/content/post/&lt;/code&gt;，frontmatter 里 &lt;code&gt;categories&lt;/code&gt; 要用文本格式，&lt;code&gt;tags&lt;/code&gt; 要用数组。这个事实如果每次都忘，就会反复犯低级错误。&lt;/p&gt;
&lt;p&gt;再比如，我更喜欢工程化、结构清楚、少一点口号感的文章；没有明确要求时，不要主动做 git commit；路径里有空格时一定加引号。这些不是某个任务的显式需求，但它们会持续影响合作质量。&lt;/p&gt;
&lt;p&gt;更难保存的是决策背后的因果。&lt;/p&gt;
&lt;p&gt;一个选题被淘汰，不只是因为“已经写过”。有时候是因为它和已发布文章在事件主体、来源 URL、核心角度上都重合。下次再遇到类似题目，Agent 应该记住的不是某个文件名，而是这个判断框架。&lt;/p&gt;
&lt;p&gt;还有一种更微妙：偏好会变，规则会变，判断标准也会变。&lt;/p&gt;
&lt;p&gt;一个靠谱的长期 Agent 不能只记住“用户曾经说过 A”，还要知道后来为什么从 A 改成了 B。否则它会把旧规则当成铁律，在新场景里制造麻烦。&lt;/p&gt;
&lt;p&gt;Hy-Memory 的 6 层记忆框架，吸引我的地方就在这里。它从 L1 原始痕迹一路分到 L5 心智模型、L6 知识网络。这个设计至少承认了一件事：记忆有密度差异。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/hy-memory-agent-second-brain-2026/imgs/memory-layers.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/hy-memory-agent-second-brain-2026/imgs/memory-layers_hu_38256f528fab1ec4.png 480w, https://blog.ccino.org/p/hy-memory-agent-second-brain-2026/imgs/memory-layers_hu_fb1d84a9d7800423.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Hy-Memory 的分层记忆结构&#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;底层回答“当时发生了什么”；中层回答“什么模式反复出现”；高层回答“这个用户、这个项目背后有哪些稳定原则”。如果没有这些区分，长期记忆很容易变成一个更大的历史垃圾堆。&lt;/p&gt;
&lt;h2 id=&#34;三周后变笨可能只是没有复盘&#34;&gt;“三周后变笨”，可能只是没有复盘
&lt;/h2&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;Agent 如果缺少这个过程，就会在两个极端之间摇摆。&lt;/p&gt;
&lt;p&gt;一种是过度遗忘。每个 session 都像新对话，只能靠用户重新交代背景。&lt;/p&gt;
&lt;p&gt;另一种是过度保留。所有旧信息都被塞回来，模型看似知道很多，其实分不清哪些还有效。它会引用一个已经废弃的方案，沿用一个已经被修正的偏好，或者把一次临时讨论当成长期规则。&lt;/p&gt;
&lt;p&gt;用户感受到的“变笨”，很多时候不是推理能力下降，而是合作上下文没有被正确整理。新的经验没有晋升成稳定记忆，旧的记忆没有被降权，冲突信息没有合并，判断因果也没留下来。&lt;/p&gt;
&lt;p&gt;Hy-Memory 提到的 System1 / System2，可以放在这里理解。&lt;/p&gt;
&lt;p&gt;System1 像实时记账。用户刚说了什么，任务刚发生了什么，工具刚返回了什么，都要快速写下来，否则下一轮就断片。&lt;/p&gt;
&lt;p&gt;System2 像复盘。它不追求马上响应，而是在后台慢慢整理：哪些只是一次性事件，哪些值得长期保存；哪些偏好反复出现，哪些旧判断已经被新事实推翻；哪些信息可以压缩，哪些因果链必须保留。&lt;/p&gt;
&lt;p&gt;只有 System1，Agent 会越记越乱。&lt;/p&gt;
&lt;p&gt;只有 System2，又很难接住当下任务。&lt;/p&gt;
&lt;p&gt;长期协作需要的是两者配合：当下别忘，事后会想。&lt;/p&gt;
&lt;h2 id=&#34;skills-像菜谱memory-像经验&#34;&gt;Skills 像菜谱，Memory 像经验
&lt;/h2&gt;&lt;p&gt;最近 Agent 产品里另一个常见词是 Skills。&lt;/p&gt;
&lt;p&gt;少数派那篇文章里有个例子很典型。作者想让自己的 Agent 获取少数派最新文章。一开始让模型自己探索，结果它搜索、抓首页、找社媒、解析页面都试了一遍，失败好几次，最后才发现 RSS 是更稳定的路线。&lt;/p&gt;
&lt;p&gt;于是作者把这条经验写成一个 skill：下次遇到同类任务，就按固定步骤走，读取 RSS，拿第一个链接，再抓正文总结。&lt;/p&gt;
&lt;p&gt;这很像给 AI 一本菜谱。&lt;/p&gt;
&lt;p&gt;Skills 的价值，是把可复用流程外置出来，减少模型自由发挥。处理少数派最新文章怎么走、发布 Hugo 文章怎么走、检查 Markdown 怎么走，这类事情很适合写成 skill。&lt;/p&gt;
&lt;p&gt;但 Skills 解决的是“怎么做”，不是“为什么这么做”。&lt;/p&gt;
&lt;p&gt;它能告诉模型处理少数派最新文章要读 RSS，却不一定知道为什么上次不用浏览器抓取，为什么用户更信任 RSS，为什么这条流程后来需要修订。如果少数派改版了，旧 skill 失败后应该怎么更新，这就不是一条菜谱能完全解决的。&lt;/p&gt;
&lt;p&gt;Memory 的位置就在这里。&lt;/p&gt;
&lt;p&gt;Skills 让 Agent 少走弯路；Memory 让 Agent 知道这些弯路为什么不该再走。&lt;/p&gt;
&lt;p&gt;一个成熟的 Agent 系统，大概率需要两者同时存在。Skills 存放稳定流程，Memory 存放经验、偏好、因果和变化。前者像操作手册，后者更像项目老员工脑子里的那部分东西。&lt;/p&gt;
&lt;p&gt;工具让模型能做事，Skills 让模型按更稳的方式做事，Memory 让模型在长期合作中慢慢知道为什么要这么做。&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;最直接的是隐私。长期记忆里会有项目资料、个人偏好、工作习惯、关系网络，甚至还有一些用户自己都没意识到的行为模式。如果这些数据没有清晰的存储边界、删除机制和可见性，所谓第二大脑就会变成一个难以审计的黑箱。&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;这和 AI 顾问的 sycophancy 问题是连在一起的。记忆越强，迎合也可能越精确。&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;如果你正在做 Agent 产品，Hy-Memory 这类系统最大的启发，不是马上照着做一个六层架构。&lt;/p&gt;
&lt;p&gt;更现实的起点，是先问清楚：你的 Agent 到底需要记住什么？&lt;/p&gt;
&lt;p&gt;客服 Agent 可能只需要记住工单状态、用户偏好和已经尝试过的方案。编程 Agent 更需要记住项目结构、代码规范、失败过的修复路线和用户确认过的技术决策。写作 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;否则，记忆系统很容易变成新的 prompt 垃圾场。你以为自己在给 Agent 加第二大脑，实际只是给它塞了一个更大的剪贴板。&lt;/p&gt;
&lt;h2 id=&#34;如果想自己试hy-memory-怎么装&#34;&gt;如果想自己试，Hy-Memory 怎么装
&lt;/h2&gt;&lt;p&gt;前面说的都偏原理。真要上手，目前 Hy-Memory 最直接的方式，是通过 OpenClaw 插件体验。&lt;/p&gt;
&lt;p&gt;官方 quick start 里说得比较清楚：Hy-Memory 不是一个单独给终端用户打开的 App，而是以 OpenClaw 插件形式分发。插件启动时，会拉起一个本地 Python 子进程，对外提供记忆读写服务；OpenClaw 在对话前后调用它，完成自动召回和自动写入。&lt;/p&gt;
&lt;p&gt;所以你需要先准备几样东西：本机能执行 &lt;code&gt;openclaw&lt;/code&gt; 命令；Python 版本不低于 3.8；手上有一个可用的 LLM API Key；再准备一个 Embedding 服务。官方示例里，LLM 用的是通过 OpenRouter 调用的 Hunyuan 3.0 Preview，Embedding 用的是 SiliconFlow 的 &lt;code&gt;BAAI/bge-m3&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;openclaw plugins install openclaw-hy-memory --dangerously-force-unsafe-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;如果你之前装过旧版本，官方建议先卸载再重新安装：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;openclaw plugins uninstall openclaw-hy-memory
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;openclaw plugins install openclaw-hy-memory --dangerously-force-unsafe-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;这里最刺眼的是 &lt;code&gt;--dangerously-force-unsafe-install&lt;/code&gt;。它不是装饰。Hy-Memory 会随插件启动本地 Python 进程，OpenClaw 默认会拦住这类会拉起外部进程的插件，所以必须显式确认。&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;openclaw hy-memory init
&lt;/span&gt;&lt;/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;它会提示你填 LLM 和 Embedding 的 &lt;code&gt;model&lt;/code&gt;、&lt;code&gt;apiKey&lt;/code&gt;、&lt;code&gt;endpoint&lt;/code&gt;。第一次接入建议用这个方式，少踩 JSON 格式错误的坑。&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;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-jsonc&#34; data-lang=&#34;jsonc&#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;openclaw-hy-memory&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;enabled&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#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;nt&#34;&gt;&amp;#34;config&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;userId&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;tom001&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;autoRecall&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#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;nt&#34;&gt;&amp;#34;autoCapture&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#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;nt&#34;&gt;&amp;#34;topK&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&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;llm&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;provider&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;openai&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;tencent/hy3-preview&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;YOUR_OPENROUTER_API_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;nt&#34;&gt;&amp;#34;baseUrl&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://openrouter.ai/api/v1&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;nt&#34;&gt;&amp;#34;embedder&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;provider&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;openai&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;BAAI/bge-m3&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;YOUR_SILICONFLOW_API_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;nt&#34;&gt;&amp;#34;baseUrl&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://api.siliconflow.cn/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;dims&amp;#34;&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&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;vectorStore&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;provider&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;chroma&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;/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;userId&lt;/code&gt; 用来区分不同用户的记忆数据；&lt;code&gt;autoRecall&lt;/code&gt; 决定每轮对话前是否自动召回相关记忆；&lt;code&gt;autoCapture&lt;/code&gt; 决定每轮对话后是否自动抽取并写入新记忆；&lt;code&gt;topK&lt;/code&gt; 是每次最多召回几条。&lt;code&gt;llm&lt;/code&gt; 负责把对话整理成记忆，&lt;code&gt;embedder&lt;/code&gt; 负责向量化，&lt;code&gt;vectorStore&lt;/code&gt; 默认用本地 Chroma。&lt;/p&gt;
&lt;p&gt;配置完成后，重启 OpenClaw 网关：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre 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;openclaw gateway restart
&lt;/span&gt;&lt;/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;openclaw hy-memory status
&lt;/span&gt;&lt;/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;registered&lt;/code&gt;、&lt;code&gt;Status: healthy&lt;/code&gt;、&lt;code&gt;VDB: ok&lt;/code&gt;、&lt;code&gt;Embed: ok&lt;/code&gt;、&lt;code&gt;LLM: ok&lt;/code&gt; 这样的信息。这里有几个关键点：&lt;code&gt;registered&lt;/code&gt; 说明插件已经被 OpenClaw 识别；&lt;code&gt;healthy&lt;/code&gt; 说明本地 Hy-Memory 服务正常；&lt;code&gt;VDB&lt;/code&gt; 是向量库状态；&lt;code&gt;Embed&lt;/code&gt; 和 &lt;code&gt;LLM&lt;/code&gt; 则分别说明 Embedding 与模型接口可用。&lt;/p&gt;
&lt;p&gt;装好之后，不需要每次手动告诉它“请保存记忆”。在 &lt;code&gt;autoRecall&lt;/code&gt; 和 &lt;code&gt;autoCapture&lt;/code&gt; 都开启的情况下，它会在对话开始前召回相关历史，在对话结束后抽取新的记忆。你真正需要调的，通常是召回数量、是否自动捕获、用户 ID，以及 LLM / Embedding 服务的稳定性。&lt;/p&gt;
&lt;p&gt;还有一个容易混淆的点：腾讯同时有一个 &lt;code&gt;TencentDB-Agent-Memory&lt;/code&gt; 项目，它更像是通用 Agent Memory 插件，支持 OpenClaw 和 Hermes，默认本地 &lt;code&gt;SQLite + sqlite-vec&lt;/code&gt;，也支持 Docker 方式接 Hermes。它和 Hy-Memory 的目标接近，但安装包名、配置方式不一样。如果你看到 &lt;code&gt;@tencentdb-agent-memory/memory-tencentdb&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;/code&gt;&lt;/pre&gt;&lt;/td&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;openclaw plugins install @tencentdb-agent-memory/memory-tencentdb
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;openclaw gateway restart
&lt;/span&gt;&lt;/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-jsonc&#34; data-lang=&#34;jsonc&#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;memory-tencentdb&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;enabled&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#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;p&gt;它默认用本地 &lt;code&gt;SQLite + sqlite-vec&lt;/code&gt; 后端，启用后会自动完成对话录制、记忆提取、场景归纳、用户画像生成和下一轮对话前召回。它还提供了更工程化的短期记忆压缩、BM25 + 向量混合检索、Mermaid 任务画布等能力。&lt;/p&gt;
&lt;p&gt;简单说，如果你只是想最快体验 Hy-Memory，就按 &lt;code&gt;openclaw-hy-memory&lt;/code&gt; 的 quick start 走；如果你想看腾讯这套 Agent Memory 工程化插件的完整形态，可以再研究 &lt;code&gt;TencentDB-Agent-Memory&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;但 Agent 真正进入工作流之后，评价标准会变。&lt;/p&gt;
&lt;p&gt;你不会只看一个同事第一天表现多惊艳。你会看他三周后还记不记得项目边界，三个月后能不能复用之前的经验，半年后会不会在新情况出现时修正旧判断。&lt;/p&gt;
&lt;p&gt;AI Agent 也一样。&lt;/p&gt;
&lt;p&gt;短期任务里，模型能力和工具调用很重要。长期协作里，记忆治理会变得同样重要。它决定 Agent 是一个每次都要重新培训的临时外包，还是一个能慢慢积累项目经验的长期伙伴。&lt;/p&gt;
&lt;p&gt;Hy-Memory 的价值，不只是多了一个记忆插件，而是把一个迟早要面对的问题摆出来了：Agent 不只要会执行，还要能沉淀经验；不只要记住内容，还要记住内容背后的因果、偏好和变化。&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;但如果 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://memory.hunyuan.tencent.com/openclaw/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hy-Memory OpenClaw Quick Start&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Tencent/TencentDB-Agent-Memory/blob/main/README_CN.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;TencentDB Agent Memory 中文 README&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://sspai.com/post/110370&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;少数派：AI Agent 干中学，“造轮子”让我学会了什么？&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;BestBlogs 今日精选：Hy-Memory 发布：打造记忆力超强的 Agent 第二大脑（资源 ID：&lt;code&gt;RAW_b4500725&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=VMLJOaOixvA&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Paddy &amp;amp; Bora Jam: Agent Harness, Claude Code At The Beach, MCP, Agent Buying Stock?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>微软砍掉 Claude Code，原因是工程师太喜欢用了</title>
        <link>https://blog.ccino.org/p/enterprise-ai-coding-cost-paradox-2026/</link>
        <pubDate>Fri, 29 May 2026 08:30:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/enterprise-ai-coding-cost-paradox-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/enterprise-ai-coding-cost-paradox-2026/imgs/cover.png" alt="Featured image of post 微软砍掉 Claude Code，原因是工程师太喜欢用了" /&gt;&lt;p&gt;微软最近做了一件让很多人感到意外的事：宣布将在 6 月 30 日前取消旗下 Experiences &amp;amp; Devices 部门大多数工程师的 Claude Code 许可。&lt;/p&gt;
&lt;p&gt;这个部门负责 Windows、Microsoft 365、Outlook、Teams 和 Surface。不是小团队，是微软产品线的核心。&lt;/p&gt;
&lt;p&gt;更让人意外的是时间线：Claude Code 的内部试点是 2025 年 12 月才启动的。从推广到砍掉，只用了六个月。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;不是工具不好是因为太好&#34;&gt;不是工具不好，是因为太好
&lt;/h2&gt;&lt;p&gt;先说数字。微软内部工程师对 Claude Code 的满意度达到 91%，这个数字放在任何企业软件评估里都算高分。&lt;/p&gt;
&lt;p&gt;但正因为满意，工程师才会一直用，而一直用的结果是 Token 消耗快速叠加。按现有报道，企业用户每名工程师的月均 API 成本在 $500 到 $2000 之间——这取决于他们做什么样的任务、跑多少 Agent 循环。&lt;/p&gt;
&lt;p&gt;对于一个中型工程团队来说，100 人按月均 $1000 算，一年就是 120 万美元，只是一个部门的编程工具费用。&lt;/p&gt;
&lt;p&gt;微软并没有公布具体数字，但有一个间接数据：整个公司的 AI 专项预算在前四个月就基本告急。按照报道，这笔预算相当大，但 AI 工具在 Agent 模式下的消耗速度远超预期。&lt;/p&gt;
&lt;p&gt;Uber 的情况更直接。Uber CTO 在 4 月接受 The Information 采访时说，公司 2026 年原定的 AI 编程预算是 34 亿美元，但前四个月就烧完了。这不是某个激进的实验性团队，而是整个工程组织的日常使用数据。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;token-计费和企业预算之间的根本矛盾&#34;&gt;Token 计费和企业预算之间的根本矛盾
&lt;/h2&gt;&lt;p&gt;问题的结构比&amp;quot;费用高&amp;quot;要复杂一点。&lt;/p&gt;
&lt;p&gt;传统企业软件用的是席位授权逻辑：每个工程师每年付一笔固定费用，不管他用多少次、跑多少功能，价格不变。这和企业的预算模型高度兼容——财务在年初可以精确预测全年支出。&lt;/p&gt;
&lt;p&gt;AI 编程工具，特别是进入 Agent 模式之后，走的是完全不同的路。每一次推理调用消耗 Token，Token 消耗对应实际计算成本，计算成本随使用量线性（甚至超线性）增长。你让 Claude Code 帮你做一次全代码库的安全扫描，调用量可能是普通对话的几十倍。&lt;/p&gt;
&lt;p&gt;这两种模型之间没有好的调和方式。企业采购方想要的是&amp;quot;固定成本、可预测&amp;quot;，工具厂商提供的是&amp;quot;用量定价、按使用收费&amp;quot;。当工具真的好用、工程师真的在高强度使用时，账单就会失控。&lt;/p&gt;
&lt;p&gt;微软把 Claude Code 换成 GitHub Copilot CLI，背后有一个很现实的逻辑：Copilot 是微软自己的产品，内部成本结构不一样，不需要对外结算 Token 费用。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/enterprise-ai-coding-cost-paradox-2026/imgs/token-vs-fixed.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/enterprise-ai-coding-cost-paradox-2026/imgs/token-vs-fixed_hu_54b8b8278903c3e3.png 480w, https://blog.ccino.org/p/enterprise-ai-coding-cost-paradox-2026/imgs/token-vs-fixed_hu_6e7d69a0cc55fb07.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Token 按量计费 vs 固定席位授权对比&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;这不是微软一家的问题&#34;&gt;这不是微软一家的问题
&lt;/h2&gt;&lt;p&gt;Uber 的 34 亿美元预算在 4 月底已经基本耗尽，说明这个问题和 Anthropic 有没有配合好没什么关系。换任何一家以 Token 计费的 AI 编程工具，同样的情况照样会发生。&lt;/p&gt;
&lt;p&gt;今年早些时候，Anthropic 对 OpenClaw（一个允许开发者用 Claude 订阅调用各种工具的第三方客户端）实施了限制，要求第三方工具的调用量单独计费，不再包含在原有订阅里。当时引发了不小的争议，有人批评 Anthropic 在&amp;quot;堵外部工具&amp;quot;，也有人认为这是平台化的必然动作。&lt;/p&gt;
&lt;p&gt;但现在回看，这个决定和微软的取消事件指向同一个方向：Token 消耗到了必须认真管理的量级，平台和企业都在重新审视&amp;quot;无上限使用&amp;quot;到底可不可持续。&lt;/p&gt;
&lt;p&gt;Databricks 今年做了一份企业 AI 落地调研，受访企业把&amp;quot;ROI 验证困难&amp;quot;排在技术挑战之前，列为首要问题。工具好不好用是一回事，花出去的钱有没有回来是另一回事，后者在很多公司里根本就没有人在系统地量化。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;cto-的账该怎么算&#34;&gt;CTO 的账该怎么算
&lt;/h2&gt;&lt;p&gt;微软这件事对做企业技术决策的人有个直接警示：对话模式和 Agent 模式是两种完全不同量级的成本。让工程师用 Claude Code 问几个问题，和让它跑一次全库依赖升级或 PR 扫描，Token 消耗可以差出几十倍。很多公司在推广 AI 编程工具时没有把这两种模式拆开来估算，等到账单出来才发现数字对不上。&lt;/p&gt;
&lt;p&gt;满意度那张牌也要小心。91% 满意度没有救下微软对 Claude Code 的许可，因为工程师喜欢用一个工具，和这个工具的产出值多少钱，真的是两码事。前者你问一个调查就能拿到，后者需要认真追踪：减少了多少 code review 来回、少了多少 bug 进生产、加速了哪些功能交付。这些数字不主动量化，财务那关很难通过。&lt;/p&gt;
&lt;p&gt;另一个现实问题是预算审批流程本身。按量计费对工具厂商来说很自然，但对企业财务来说，年初无法预测年末账单是很难接受的事。GitHub Copilot 走的固定席位路线在这一点上有天然优势——不是功能比对手强，而是数字能写进预算表里。这也是为什么不少公司即便知道某个 AI 工具效果更好，最后还是选了可以固定报价的那个。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/enterprise-ai-coding-cost-paradox-2026/imgs/budget-burning.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/enterprise-ai-coding-cost-paradox-2026/imgs/budget-burning_hu_3207569e6dc5e944.png 480w, https://blog.ccino.org/p/enterprise-ai-coding-cost-paradox-2026/imgs/budget-burning_hu_4603024c5ca73f05.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;企业 AI 预算消耗速度可视化：Uber 全年 34 亿四个月耗尽&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;anthropic-面对的是什么局面&#34;&gt;Anthropic 面对的是什么局面
&lt;/h2&gt;&lt;p&gt;微软的这次取消，对 Anthropic 的提示不在于 Claude Code 功能够不够好，而在于 Token 计费本身在企业大规模采购场景里的摩擦有多大。Anthropic 今年推出了企业套餐，也在不同定价层级上做了调整，但在&amp;quot;让开发者用得起&amp;quot;和&amp;quot;从企业端收到足够收入&amp;quot;之间，还没有一个让两边都舒服的方案。&lt;/p&gt;
&lt;p&gt;GitHub Copilot 和 Cursor 在往固定席位方向走，大模型厂商自己也在加速 IDE 集成的深度。Claude Code 在开发者社区里建立的口碑是真实的，但开发者的口碑和企业 IT 的采购决策之间，运作逻辑差距很大。前者看体验，后者看预算表能不能填。&lt;/p&gt;
&lt;p&gt;微软和 Uber 不是例外，只是最先把账单摊开来讲的两家。随着 AI 工具进入 Agent 模式的使用量继续增长，同样的矛盾会在更多公司里出现，只是时间早晚而已。&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://cybernews.com/ai-news/microsoft-claude-code-burn-yearly-ai-budget/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Microsoft is dropping Claude Code by June 30 after burning through its entire year&amp;rsquo;s AI budget&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.windowscentral.com/microsoft/microsoft-cancels-claude-code-licenses-shifting-developers-to-github-copilot-cli-a-move-likely-driven-by-financial-motives&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Microsoft cancels Claude Code licenses, shifting developers to GitHub Copilot CLI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://thenextweb.com/news/microsoft-claude-code-retreat-ai-cost&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Microsoft&amp;rsquo;s quiet Claude Code retreat and the real cost of enterprise AI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.163.com/dy/article/KTSDUVNH0550W16F.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;34亿不够花4个月？微软连夜禁用Claude Code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>为什么 2026 年大家突然都在谈 Agent Harness？</title>
        <link>https://blog.ccino.org/p/why-agent-harness-matters-2026/</link>
        <pubDate>Thu, 28 May 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/why-agent-harness-matters-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/why-agent-harness-matters-2026/imgs/cover.png" alt="Featured image of post 为什么 2026 年大家突然都在谈 Agent Harness？" /&gt;&lt;p&gt;过去一年，AI Agent 的演示视频看得人有点麻木。&lt;/p&gt;
&lt;p&gt;浏览器 Agent 自己下单，Coding Agent 一口气改完整个项目，办公 Agent 读邮件、查资料、写报告。第一次看会觉得很震撼，看多了以后，脑子里反而会冒出另一个问题：这东西要是天天跑在真实业务里，会不会把人折腾疯？&lt;/p&gt;
&lt;p&gt;一次 Demo 成功，和每天在真实环境里稳定干活，中间差了很远。&lt;/p&gt;
&lt;p&gt;真实环境里有代码库，有权限，有账单，有客户数据，有各种“最好别碰”的老系统。Agent 一旦能动这些东西，问题就不再是“它回答得准不准”，而是它到底该在什么范围里行动、什么时候该停、出错了怎么查。&lt;/p&gt;
&lt;p&gt;所以到了 2026 年，大家突然开始谈 &lt;strong&gt;Agent Harness&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这个词听起来像又一个技术圈黑话，但它背后的问题很朴素：如果 Agent 已经不只是聊天，而是能真的动手做事，那我们就得给它一套安全带、仪表盘和刹车。&lt;/p&gt;
&lt;h2 id=&#34;harness-这个词原本就不是外壳那么简单&#34;&gt;Harness 这个词，原本就不是“外壳”那么简单
&lt;/h2&gt;&lt;p&gt;中文里很难找到一个完全对应 Harness 的词。有人会翻译成“套件”“框架”“外壳”“背带”“马具”，放到 AI Agent 语境里，好像都差一点。&lt;/p&gt;
&lt;p&gt;它最早的直觉含义，其实和“控制一股力量”有关。马具是 harness，安全带也可以是 harness，工程里把某个系统接起来做测试的装置也常叫 test harness。共同点不是“包装”，而是：你面对的是一个有力量、会运动、可能失控的东西，所以需要一套结构把它接住、约束住，并把力量导向你想要的方向。&lt;/p&gt;
&lt;p&gt;这个词用在 Agent 上，反而很贴切。&lt;/p&gt;
&lt;p&gt;因为 Agent 不是普通函数。函数输入确定、输出确定，最多是 bug；Agent 会读上下文、做计划、调用工具、修改环境，还会根据中间结果改变下一步。它更像一匹能跑的马，或者一台接上了执行器的机器。你不能只夸它马力大，还要关心缰绳、刹车、护栏、仪表盘和驾驶规则。&lt;/p&gt;
&lt;p&gt;所以 Agent Harness 里的 Harness，不只是“外面包了一层框架”。它更像一套让 Agent 能被安全使用的牵引系统：既不把它绑死，也不让它乱跑。&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;但 2026 年的情况有点不一样。&lt;/p&gt;
&lt;p&gt;Claude Code、Codex、Cursor，以及一堆本地和云端 Agent，已经把门槛往前推了一截。它们不只是回答“这段代码什么意思”，而是会改文件、跑命令、读日志、调 API、生成 PR，甚至能在一个长任务里来回切换上下文。&lt;/p&gt;
&lt;p&gt;这当然是进步。但麻烦也从这里开始。&lt;/p&gt;
&lt;p&gt;如果 Agent 只是帮你写一个工具函数，写坏了删掉重来就行。可如果它连上了生产数据库、公司邮箱、GitHub 仓库和内部工单系统，失败的后果就不一样了。它可能会删错东西，可能会把不该看的上下文带进提示词，可能会陷在循环里烧钱，也可能会在错误方向上越做越认真。&lt;/p&gt;
&lt;p&gt;这时候，真正让人不放心的不是“模型下一步会不会想错”，而是我们有没有办法回答几个很具体的问题：它看过什么资料？它拿到了什么权限？它为什么调用这个工具？它什么时候应该停下来问人？它做完以后谁来验收？如果搞砸了，能不能回滚？&lt;/p&gt;
&lt;p&gt;Agent Harness 讨论的，其实就是这些事。&lt;/p&gt;
&lt;h2 id=&#34;harness-不是让-agent-更自由而是让它别乱跑&#34;&gt;Harness 不是让 Agent 更自由，而是让它别乱跑
&lt;/h2&gt;&lt;p&gt;我更愿意把 Agent 想成一个刚入职、能力很强但还不了解公司规矩的新同事。&lt;/p&gt;
&lt;p&gt;他可能学东西很快，写代码也快，甚至能一天干完别人一周的活。但你不会因为他聪明，就直接把生产数据库、财务后台、客户名单和发布权限全交出去，然后说一句：“你自己发挥。”&lt;/p&gt;
&lt;p&gt;正常公司会给新人权限边界、任务流程、代码规范、审批制度、日志系统和事故复盘。不是为了限制聪明人，而是为了让聪明人犯错时别把整栋楼点着。&lt;/p&gt;
&lt;p&gt;Agent Harness 做的也是这类脏活。&lt;/p&gt;
&lt;p&gt;它要管上下文。Agent 不能每次都把整个仓库、所有文档、所有聊天记录都塞进模型里。信息太少，它会猜；信息太多，它会迷路。真正有用的是把当前任务相关的代码、历史决策、组织知识和约束条件挑出来，而且要能随着任务推进动态调整。&lt;/p&gt;
&lt;p&gt;它要管工具和权限。同样是 shell，读文件和删文件不是一回事；同样是数据库，查测试库和改生产库也不是一回事。一次性授权、长期授权、高风险操作前确认，这些细节听起来琐碎，但 Agent 真正上线后，琐碎的地方往往最要命。&lt;/p&gt;
&lt;p&gt;它还要管计划、验证和记录。一个靠谱的 Agent 不应该拿到需求就直接改代码。至少要先说清楚自己准备怎么做，中途发现假设不成立时要能停下来。做完以后也不能只靠一句“已经完成”，而要跑测试、检查页面、对账数据，留下它做过什么、为什么这么做的痕迹。&lt;/p&gt;
&lt;p&gt;所以 Harness 这个词真正有价值的地方，不是给 Agent 加一个漂亮外壳，而是把“聪明但不可控”的东西，塞回一套工程流程里。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/why-agent-harness-matters-2026/imgs/agent-harness-layers.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/why-agent-harness-matters-2026/imgs/agent-harness-layers_hu_569a0327042d6b85.png 480w, https://blog.ccino.org/p/why-agent-harness-matters-2026/imgs/agent-harness-layers_hu_102d29db49749874.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Agent Harness 的分层牵引系统&#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;Agent Harness 也是这样。&lt;/p&gt;
&lt;p&gt;过去的 Agent 大多停留在实验和演示里。演示翻车，最多就是视频不好看。现在不一样，开发者真的开始用 Claude Code 改项目，公司也在试着把 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;聊天机器人说错一句话，用户还能自己判断。Agent 调错一个工具，影响可能直接落到文件、账户、账单和线上系统上。模型越能干，就越需要沙箱、审批、权限隔离和日志。&lt;/p&gt;
&lt;p&gt;企业用户的耐心也不一样。个人用户可以忍受 Agent 偶尔抽风，企业不行。企业要知道数据有没有泄露，操作能不能审计，版本能不能回退，异常能不能交给人处理。没有这些东西，Agent 再聪明，也很难从试点走到正式上线。&lt;/p&gt;
&lt;p&gt;AI 编程工具本身又把这个问题推到了开发者面前。Claude Code 里的 hooks、skills、agents、工作流机制，Cursor 和 Codex 的任务执行能力，还有 MCP 工具生态，都在提醒我们：真正难的不是让模型写出代码，而是让它在复杂项目里按规矩工作。&lt;/p&gt;
&lt;p&gt;这就是 Agent Harness 变热的原因。不是大家突然喜欢抽象概念，而是 Agent 终于强到需要被管理了。&lt;/p&gt;
&lt;h2 id=&#34;从-prompt-到-harness重心往外挪了一圈&#34;&gt;从 prompt 到 harness，重心往外挪了一圈
&lt;/h2&gt;&lt;p&gt;回头看这几年 AI 工程的变化，会发现讨论重心一直在往模型外面挪。&lt;/p&gt;
&lt;p&gt;2023 年，很多人关心 prompt 怎么写。那时模型能力有限，问法确实会显著影响结果。&lt;/p&gt;
&lt;p&gt;后来大家开始做 RAG，因为模型需要私有知识，不能只靠训练语料。再后来，context engineering 变热，因为光检索到资料还不够，怎么挑选、压缩、排序、注入上下文，同样会决定结果质量。&lt;/p&gt;
&lt;p&gt;到了 Agent 这一步，模型不只是回答问题，而是要拿着上下文去行动。于是工程重点自然挪到运行环境：它怎么计划，怎么用工具，怎么被验证，怎么被限制，怎么被观察。&lt;/p&gt;
&lt;p&gt;这也解释了为什么很多看似不同的项目，其实都在靠近同一个方向。&lt;/p&gt;
&lt;p&gt;CodeRabbit 强调生成代码前先做结构化规划，本质上是在减少“上来就写”的不确定性。Lyft 用 LangGraph 和 LangSmith 搭自助式 Agent 平台，是为了让客服这类业务 Agent 可以被观察、迭代，而不是散落在几个 prompt 里。AI Engineer 社区谈运行时上下文引擎，也是因为 Agent 需要理解组织知识、协作关系和权限边界，而不只是吃下更长的 prompt。&lt;/p&gt;
&lt;p&gt;GitHub 上那些 Agent 优化项目也类似。它们不是在证明“我又写了一个更神奇的机器人”，而是在尝试把专家经验、执行流程和质量门槛封装起来，让 Agent 每次做事都有轨道可循。&lt;/p&gt;
&lt;p&gt;换句话说，Agent Harness 问的不是“模型有多聪明”，而是“模型开始动手以后，我们给它安排了怎样的行动空间”。&lt;/p&gt;
&lt;h2 id=&#34;开发者要补的不只是提示词能力&#34;&gt;开发者要补的，不只是提示词能力
&lt;/h2&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;因为它会把 AI 开发从“谁更会调模型语气”，拉回到软件工程本身。好的 Agent 工程师，未必是最会写玄学提示词的人，更可能是那个懂业务流程、懂系统边界、懂错误处理、也愿意给高风险操作加一道确认的人。&lt;/p&gt;
&lt;p&gt;一个 Agent 项目是不是靠谱，以后可能不看 Demo 里跑得多丝滑，而是看它有没有几个基本习惯：默认最小权限，高风险操作前停一下，失败后能追踪原因，有稳定的评估集，能把事故样本沉淀成下一轮改进。&lt;/p&gt;
&lt;p&gt;这些听起来都不新鲜。测试、权限、日志、CI/CD、SRE，本来就是软件工程里老掉牙的东西。Agent Harness 只是在把这些老东西重新搬到 AI Agent 的执行链路里。&lt;/p&gt;
&lt;h2 id=&#34;企业最后会按-harness-来买单&#34;&gt;企业最后会按 Harness 来买单
&lt;/h2&gt;&lt;p&gt;企业试用 AI Agent 的时候，最开始会问效果和成本。能不能省人？能不能提效？每次调用多少钱？&lt;/p&gt;
&lt;p&gt;但一旦进入正式部署，问题很快会变味：出了事谁负责？能不能审计？能不能回滚？能不能限制它只做某些事？能不能证明它没有碰不该碰的数据？&lt;/p&gt;
&lt;p&gt;这时候，Harness 就会从开发者圈里的技术词，变成采购和上线检查表。&lt;/p&gt;
&lt;p&gt;只说“我们的 Agent 很聪明”，说服力会越来越弱。企业会追问权限模型、操作日志、评估报告、版本管理、人工接管、安全沙箱、合规边界。谁能把这些回答清楚，谁才更像一个能进入生产的产品。&lt;/p&gt;
&lt;p&gt;这也会推动 Agent 平台化。&lt;/p&gt;
&lt;p&gt;单个团队当然可以自己手搓一套 Harness，但成本很高，也容易漏掉边界条件。更常见的方向，可能是底层平台提供标准能力：上下文注入、工具注册、权限控制、评估、日志、回滚。业务团队在这个底座上配置自己的 Agent，而不是每个项目都从零开始造一遍轮子。&lt;/p&gt;
&lt;p&gt;有点像早期 Web 应用从手写脚本走向框架，又从自己管机器走向云平台。不是开发者不会手写，而是问题复杂到一定程度后，标准底座会更划算。&lt;/p&gt;
&lt;h2 id=&#34;现在有哪些框架接近-harness&#34;&gt;现在有哪些框架接近 Harness？
&lt;/h2&gt;&lt;p&gt;如果你现在就想找一个“Agent Harness 框架”，会发现市场上还没有一个公认的标准答案。更现实的情况是：Harness 不是一个单独软件，而是一组组件拼出来的工程层。&lt;/p&gt;
&lt;p&gt;LangGraph 更像编排骨架。它把 Agent 流程做成有状态的图，适合处理多步骤任务、人工介入、暂停恢复和条件分支。你可以把它理解成“Agent 的状态机框架”。如果一个业务 Agent 需要在多个步骤之间来回流转，而不是一次 prompt 直接结束，LangGraph 是目前比较接近生产思路的选择。&lt;/p&gt;
&lt;p&gt;AutoGen 和 CrewAI 更适合快速验证多 Agent 协作。它们能很快搭出 planner、coder、reviewer 这类角色分工，也适合内容生产、调研和轻量自动化。但真要进生产，通常还得自己补权限、日志、评估、回滚这些治理层。它们更像好用的原型工具，不是完整安全底座。&lt;/p&gt;
&lt;p&gt;OpenHands 值得单独看。它不是通用 Agent 框架，而是面向软件工程任务的开源 Agent 平台。它的价值在于：把 Agent 放进一个相对受控的开发环境里，让它读写代码、运行命令、完成任务。对于研究 Claude Code、Codex 这类 Coding Agent 怎么安全行动，OpenHands 比很多泛 Agent 框架更有参考意义。&lt;/p&gt;
&lt;p&gt;Dify、Flowise、n8n 这类低代码工具，则更适合内部自动化。它们未必会把自己叫作 Harness，但在企业里很实用：模型、知识库、API 调用、流程节点和日志面板都在一个可视化环境里。缺点也明显，高风险自治执行、复杂版本治理和细粒度权限，往往还需要额外工程配合。&lt;/p&gt;
&lt;p&gt;另外还有几类工具应该被看作 Harness 的零件。Guardrails AI、NeMo Guardrails 偏安全护栏，负责限制输入输出、对话边界和部分策略约束。LangSmith、Arize Phoenix、OpenTelemetry 偏观测和评估，负责记录 Agent 每一步用了什么上下文、调了什么工具、成本多少、质量有没有退化。&lt;/p&gt;
&lt;p&gt;所以我更建议把 Agent Harness 看成一套组合，而不是一个框架名。&lt;/p&gt;
&lt;p&gt;如果是个人开发者做原型，可以用 CrewAI 或 AutoGen，加上简单日志和人工验收。做生产业务 Agent，可以考虑 LangGraph 加 LangSmith 或 Phoenix，再配合 Guardrails 和沙箱执行环境。做 AI Coding Agent，则可以重点研究 OpenHands，再叠加容器沙箱、测试套件、Git 分支和回滚机制。低代码团队可以从 Dify、Flowise、n8n 开始，但要清楚它们解决的是流程搭建，不是全部生产治理。&lt;/p&gt;
&lt;p&gt;真正成熟的 Harness，最后一定会长得有点“不性感”：状态机、权限表、评估集、日志、沙箱、人工确认、版本回滚。这些东西没有 Demo 里的 Agent 炫，但它们决定了 Agent 能不能留在生产环境里。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/why-agent-harness-matters-2026/imgs/open-source-harness-stack.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/why-agent-harness-matters-2026/imgs/open-source-harness-stack_hu_9bac1f5f34f0de53.png 480w, https://blog.ccino.org/p/why-agent-harness-matters-2026/imgs/open-source-harness-stack_hu_64171ab480ed5af3.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;开源 Agent Harness 组合栈&#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;也别把-harness-神化&#34;&gt;也别把 Harness 神化
&lt;/h2&gt;&lt;p&gt;当然，Agent Harness 不是万能药。&lt;/p&gt;
&lt;p&gt;它不能让一个不可靠的模型突然变可靠，也不能替你把混乱的业务流程理顺。很多 Agent 项目失败，不是因为少了某个框架，而是任务本身没有边界，输入数据乱，成功标准模糊，组织内部也没人知道异常该交给谁。&lt;/p&gt;
&lt;p&gt;Harness 能做的，是把这些问题提前暴露出来，并给你一些可控制的抓手。&lt;/p&gt;
&lt;p&gt;如果一个任务连人类都很难稳定执行，Agent 加上 Harness 也不会自动成功。如果一个团队本来就没有权限分层、没有日志意识、没有测试文化，Agent 只会把这些工程债放大。&lt;/p&gt;
&lt;p&gt;所以我不太愿意把 Agent Harness 讲成“下一代 AI 的终极答案”。它更像一个信号：行业终于开始承认，Agent 不是玩具脚本，也不是一个更长的 prompt，而是一个需要被设计、约束、观察和维护的系统。&lt;/p&gt;
&lt;p&gt;这个变化不炫，但很关键。&lt;/p&gt;
&lt;h2 id=&#34;结语&#34;&gt;结语
&lt;/h2&gt;&lt;p&gt;2026 年大家谈 Agent Harness，是因为 AI Agent 走到了一个尴尬的位置。&lt;/p&gt;
&lt;p&gt;它已经强到可以进入真实工作流，但又没有稳定到可以完全放手。Demo 时代，我们关心它能不能完成一个惊艳任务；生产时代，我们更关心它能不能持续、可控、可审计地完成普通任务。&lt;/p&gt;
&lt;p&gt;Agent Harness 的价值就在这里。&lt;/p&gt;
&lt;p&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://github.com/affaan-m/ECC&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ECC Agent optimization system&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/langchain-ai/langgraph&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;LangGraph&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/microsoft/autogen&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AutoGen&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/crewAIInc/crewAI&#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://github.com/All-Hands-AI/OpenHands&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenHands&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/guardrails-ai/guardrails&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Guardrails AI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/NVIDIA/NeMo-Guardrails&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NeMo Guardrails&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Arize-ai/phoenix&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Arize Phoenix&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/n8n-io/n8n&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;n8n&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/ClaudeCode/comments/1tkjy4u/claude_code_dropped_workflows/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Code dropped /workflows&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/ClaudeCode/comments/1tmq9kz/can_someone_explain_the_real_difference_between/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Can someone explain the real difference between Hooks, Skills, Plugins, SKILL.md, CLAUDE.md and agents.md in Claude Code?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Datawhale《刚刚，一篇最全 Agent Harness 综述来了！》、Claude Blog《CodeRabbit 如何用 Claude 构建智能体编排系统》、AI Engineer《别再盯着 AI 智能体干活：构建运行时上下文引擎》&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>语言模型也需要“睡觉”：持续工作的 Agent，瓶颈正在从记忆变成休息机制</title>
        <link>https://blog.ccino.org/p/language-models-need-sleep-long-agent-rest/</link>
        <pubDate>Wed, 27 May 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/language-models-need-sleep-long-agent-rest/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/language-models-need-sleep-long-agent-rest/imgs/cover.png" alt="Featured image of post 语言模型也需要“睡觉”：持续工作的 Agent，瓶颈正在从记忆变成休息机制" /&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;你让一个 Agent 连续工作几个小时：改代码、查资料、写文档、跑测试、修报错，再继续下一个任务。前面半小时它很清醒，知道目标，也知道边界。后面上下文越堆越厚，临时判断、失败命令、用户补充、工具输出混在一起，它就开始重复检查、绕远路，甚至把已经废弃的想法重新捡回来。&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;img src=&#34;https://blog.ccino.org/p/language-models-need-sleep-long-agent-rest/imgs/cover.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/language-models-need-sleep-long-agent-rest/imgs/cover_hu_7620af2b102d4ebc.png 480w, https://blog.ccino.org/p/language-models-need-sleep-long-agent-rest/imgs/cover_hu_ff0b025826c60ad.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;语言模型也需要睡觉：持续工作的 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;持续工作的-agent也会越跑越乱&#34;&gt;持续工作的 Agent，也会越跑越乱
&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;一次失败的命令，会留下一大段错误日志；一个临时猜测，可能后来已经被证明不对，但仍然躺在上下文里；用户中途改了方向，旧目标也不会自动消失；工具返回的内容里，真正有用的可能只有三行，噪音却有三百行。&lt;/p&gt;
&lt;p&gt;如果没有整理过程，Agent 的工作记忆会变成一个堆满纸团的桌面。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/language-models-need-sleep-long-agent-rest/imgs/context-cleanup.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/language-models-need-sleep-long-agent-rest/imgs/context-cleanup_hu_c7d4c087e79f2b4c.png 480w, https://blog.ccino.org/p/language-models-need-sleep-long-agent-rest/imgs/context-cleanup_hu_e93c2c5dc11635d4.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;东西是都在，但你很难继续工作。&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;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;比如一个 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;人睡一觉后，通常不会逐帧记得昨天每个操作。但你会带着一种更干净的判断醒来：这个方案别再试了，那个接口要小心，早上先跑测试。&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;很多人会把希望放在长上下文上。&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;到了长任务，它有时反而像负担。早期误判、失败命令、用户已经否定的方向，都会以某种方式留在现场。模型不是真的累，但它要在一堆互相打架的线索里做选择，表现自然会变钝。&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;h2 id=&#34;agent-的睡眠应该做什么&#34;&gt;Agent 的“睡眠”应该做什么
&lt;/h2&gt;&lt;p&gt;如果把睡眠翻译成工程机制，我觉得至少有几件事。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/language-models-need-sleep-long-agent-rest/imgs/agent-sleep-cycle.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/language-models-need-sleep-long-agent-rest/imgs/agent-sleep-cycle_hu_ea015fa00a55d6f.png 480w, https://blog.ccino.org/p/language-models-need-sleep-long-agent-rest/imgs/agent-sleep-cycle_hu_682ea391c6214b3d.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;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;先是压缩状态。&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;休息之后，Agent 应该重新拿到一个干净的起点：现在要做什么，已经不用再做什么，下一步先检查哪里。&lt;/p&gt;
&lt;p&gt;这比一句“总结一下刚才做了什么”要难。&lt;/p&gt;
&lt;p&gt;总结只是把历史缩短。真正的休息，是把历史变成下一段工作能继承的状态。&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;第二阶段开始比记忆：谁能理解项目，谁能记住用户，谁能跨会话延续。&lt;/p&gt;
&lt;p&gt;再往后，可能要比谁更会“休息”。&lt;/p&gt;
&lt;p&gt;一个真正可用的持续工作 Agent，不能只是一直在线、一直执行。它要知道什么时候该停下来做 checkpoint，什么时候把一段临时上下文沉淀成长期记忆，什么时候提醒用户“这段历史太重了，整理一下再继续”。&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;h2 id=&#34;现在我们可以怎么用&#34;&gt;现在我们可以怎么用
&lt;/h2&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;/ul&gt;
&lt;p&gt;然后基于这份整理后的状态继续，而不是把完整历史一直拖着走。&lt;/p&gt;
&lt;p&gt;如果是在写代码，还可以让 Agent 在阶段结束前输出更具体的 checkpoint：改了哪些文件，跑过哪些测试，剩下哪些风险。下一轮开始时，它不需要重新翻完整聊天记录，也不容易把临时猜测当成事实。&lt;/p&gt;
&lt;p&gt;这件事听起来很朴素，但很有用。&lt;/p&gt;
&lt;p&gt;我现在越来越觉得，使用 Agent 的关键能力不只是会不会写 prompt，而是会不会安排工作节奏。什么时候让它冲刺，什么时候让它复盘，什么时候清理上下文，什么时候开新会话。&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;但 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;持续工作的 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://openreview.net/pdf?id=iiZy6xyVVE&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Language Models Need Sleep: Learning to Self Modify and Consolidate Context&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://arxiv.org/html/2603.07670v1&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Memory for Autonomous LLM Agents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://developers.openai.com/cookbook/examples/agents_sdk/context_personalization&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI Cookbook: Context Engineering for Personalization&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Shichun-Liu/Agent-Memory-Paper-List&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Agent Memory Paper List&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>AI Agent 真正的分水岭：不是模型，而是可验证的 Harness</title>
        <link>https://blog.ccino.org/p/ai-agent-harness-verification-2026/</link>
        <pubDate>Tue, 26 May 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/ai-agent-harness-verification-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/ai-agent-harness-verification-2026/imgs/cover.png" alt="Featured image of post AI Agent 真正的分水岭：不是模型，而是可验证的 Harness" /&gt;&lt;p&gt;过去一年，判断一个 AI 工具好不好用，很多人还是先问模型。&lt;/p&gt;
&lt;p&gt;它背后是 Claude 还是 GPT？是 Opus 还是 Sonnet？上下文多长？benchmark 排第几？&lt;/p&gt;
&lt;p&gt;这些问题当然有意义。但真把 AI Agent 放进工作流里，体验很快会变得复杂：模型已经能讲出像样的方案，也能写出不错的代码，可离“稳定把一件事做完”还差一段距离。&lt;/p&gt;
&lt;p&gt;差的那段，往往不是“再聪明一点”就能补上。&lt;/p&gt;
&lt;p&gt;最近 Hugging Face 发了一篇 Agent 术语梳理，把这段中间层叫作 &lt;strong&gt;Harness&lt;/strong&gt;。简单说，模型负责生成文本和行动意图，Harness 负责把模型放进一个可以执行的循环里：调用模型，解析工具请求，执行工具，把结果放回上下文，再判断该继续、重试、停下，还是交还给人。&lt;/p&gt;
&lt;p&gt;这个词听起来有点工程味，但它解释了最近很多 AI Agent 讨论里的别扭感。&lt;/p&gt;
&lt;p&gt;我们总在聊模型能力，可真正让 Agent 可用的，常常是模型外面的那套东西。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/ai-agent-harness-verification-2026/imgs/cover.png&#34;
	width=&#34;1280&#34;
	height=&#34;720&#34;
	srcset=&#34;https://blog.ccino.org/p/ai-agent-harness-verification-2026/imgs/cover_hu_e8d3906a9694227b.png 480w, https://blog.ccino.org/p/ai-agent-harness-verification-2026/imgs/cover_hu_84fef251aceddeb3.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;AI 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;h2 id=&#34;模型只是起点&#34;&gt;模型只是起点
&lt;/h2&gt;&lt;p&gt;单独看，一个大模型更像高质量的文本函数。&lt;/p&gt;
&lt;p&gt;你给它输入，它给你输出。它可以说“我需要读这个文件”，也可以说“我准备调用这个 API”，但它自己不会真的读文件，也不会真的调用 API。它只是表达了行动意图。&lt;/p&gt;
&lt;p&gt;Hugging Face 那篇文章里有个很清楚的区分：模型可以提出工具调用，但需要 Harness 去执行。&lt;/p&gt;
&lt;p&gt;这也是为什么“Agent = 模型 + 外部执行系统”这个说法越来越常见。&lt;/p&gt;
&lt;p&gt;以 Claude Code 为例，Claude 是模型；系统提示、工具描述、项目上下文和输出格式，属于 scaffolding；而让它能读文件、改代码、运行测试、等待确认、结束任务的执行循环，才是 Harness。&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/ai-agent-harness-verification-2026/imgs/model-scaffold-harness.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/ai-agent-harness-verification-2026/imgs/model-scaffold-harness_hu_d897530312210ae1.png 480w, https://blog.ccino.org/p/ai-agent-harness-verification-2026/imgs/model-scaffold-harness_hu_64011c7496d497e6.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;模型、Scaffolding 与 Harness 的关系图&#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;长程任务不是靠一句-prompt-跑完的&#34;&gt;长程任务不是靠一句 prompt 跑完的
&lt;/h2&gt;&lt;p&gt;短任务里，prompt 的作用非常明显。&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 经常不是第一步就错，而是跑到第七步、第十步以后开始漂。它可能把症状当根因，可能为了让测试通过绕开真正的问题，也可能在上下文越来越长之后忘掉最初的限制。更糟的是，它有时会用很完整的解释包装一个没有验证过的结果。&lt;/p&gt;
&lt;p&gt;Claude Code 官方最佳实践里反复提到一件事：给 Claude 一个验证自己工作的方式。可以是测试，可以是截图，可以是预期输出，也可以是一条能判断成功失败的命令。文档里的说法很朴素：没有清晰成功标准时，结果可能看起来对，实际上不能工作。&lt;/p&gt;
&lt;p&gt;这其实就是 Harness 思维。&lt;/p&gt;
&lt;p&gt;不要只告诉 Agent “认真一点”。要给它一个会撞墙的环境。测试失败就是墙，截图不一致也是墙，构建报错、lint 报错、用户确认不通过，都是墙。&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;/p&gt;
&lt;p&gt;真实业务里，魔法通常会被一些很小的东西打断：登录状态过期了，按钮文案变了，页面多了一个弹窗，接口返回慢了，表单新增了必填项，账号权限和演示环境不一样。&lt;/p&gt;
&lt;p&gt;人类遇到这些情况，会停下来判断。Agent 如果没有外部约束，只能继续猜。&lt;/p&gt;
&lt;p&gt;所以，生产环境里的 Agent 不一定需要更多自由，反而需要更窄、更清楚的行动通道。哪些动作可以自动做，哪些动作必须确认；什么叫成功，什么只是模型自己觉得完成；失败后重试几次，什么时候放弃；执行轨迹保存在哪里，事后怎么复盘，这些问题比“再接一个工具”更关键。&lt;/p&gt;
&lt;p&gt;这也是最近一些高质量实践正在靠近的方向。&lt;/p&gt;
&lt;p&gt;Anthropic 内部使用 Claude Code 的一些做法，已经不是简单写 prompt，而是在重建需求和验证流程。比如把规格说明做得更结构化、更容易被检查；让模型主动采访用户，把模糊需求问清楚；让组件在 DOM 里暴露可验证的数据契约，方便 Playwright 之类的工具直接检查结构，而不是只靠人眼看页面像不像。&lt;/p&gt;
&lt;p&gt;这些做法的共同点，不是“提示词更高级”，而是把 Agent 放进一条可检查的流水线。&lt;/p&gt;
&lt;p&gt;需求不是一句话，而是一份可以对照的规格。实现不是一段代码，而是要通过测试和视觉检查。完成也不再是模型说 done，而是外部系统确认状态达标。&lt;/p&gt;
&lt;p&gt;这比 prompt engineering 往前走了一步。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/ai-agent-harness-verification-2026/imgs/verifiable-workflow.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/ai-agent-harness-verification-2026/imgs/verifiable-workflow_hu_af2f5670b49fc897.png 480w, https://blog.ccino.org/p/ai-agent-harness-verification-2026/imgs/verifiable-workflow_hu_46915891f4836b3a.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;harness-不是给-agent-接满工具&#34;&gt;Harness 不是给 Agent 接满工具
&lt;/h2&gt;&lt;p&gt;一提到 Harness，很多人会先想到工具。&lt;/p&gt;
&lt;p&gt;文件系统、终端、浏览器、数据库、MCP、搜索引擎，全接上，Agent 不就更强了吗？&lt;/p&gt;
&lt;p&gt;事情没这么简单。&lt;/p&gt;
&lt;p&gt;工具越多，行动空间越大，出错路径也越多。成熟的 Harness 不只是让 Agent 做更多事，还要定义它什么时候不能做，什么时候必须停，什么时候要把控制权交回人类。&lt;/p&gt;
&lt;p&gt;PromptArmor 最近披露的 Microsoft Copilot Cowork 文件外泄风险，就是一个很现实的提醒。按他们的描述，Copilot Cowork 可以使用用户的 Microsoft 权限，通过 Microsoft Graph 读取租户数据。如果攻击者把间接 prompt injection 藏进 skill 或其他上下文里，就可能诱导 Agent 生成 Teams 或邮件消息，再借外部图片请求带走预认证下载链接。文章中特别提到，某些发给当前用户自己的 Teams 或邮件动作，在实践中不需要人工批准。&lt;/p&gt;
&lt;p&gt;这个案例最刺眼的地方，不是“模型不够聪明”。PromptArmor 还说，同样攻击在高级模型上也能成功。&lt;/p&gt;
&lt;p&gt;问题在外层系统：当 Agent 带着企业账号权限行动时，审批边界、权限边界和数据外流边界不够硬。&lt;/p&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;今天另一个有意思的信号来自国内团队。&lt;/p&gt;
&lt;p&gt;BestBlogs 今日精选里收录了高德和阿里云开发者关于 AI 自主增长系统的内容，里面反复出现几个词：多 Agent 协作、状态机流程控制、独立评估门禁、Benchmark 驱动自进化。&lt;/p&gt;
&lt;p&gt;这些词已经不是“让 AI 帮我写点东西”的语境了。&lt;/p&gt;
&lt;p&gt;状态机意味着任务不能随便跳。Agent 当前处在需求发现、方案生成、代码实现、评审还是上线阶段，每个阶段能做什么、不能做什么，都被流程约束。&lt;/p&gt;
&lt;p&gt;独立评估门禁意味着生成结果不能自己给自己打分。一个 Agent 产出方案，另一个评估环节检查质量，不合格就打回。&lt;/p&gt;
&lt;p&gt;Benchmark 驱动自进化意味着团队不是凭感觉判断“最近好像更好用了”，而是用一组固定任务和指标，观察系统是不是真的变强。&lt;/p&gt;
&lt;p&gt;这些东西听起来很重，但恰好说明 Agent 正在进入真实业务。&lt;/p&gt;
&lt;p&gt;玩具 demo 可以靠一次漂亮生成。每天运行的生产系统，靠的是稳定流程。&lt;/p&gt;
&lt;p&gt;一个可用的 Agent 系统，更像一支被流程约束的团队，而不是一个灵感爆棚的天才员工。它可以自动执行，但要留下轨迹；可以自我修正，但不能自己宣布永远正确；可以创造，但要在可检查的边界里创造。&lt;/p&gt;
&lt;h2 id=&#34;个人也可以有自己的小-harness&#34;&gt;个人也可以有自己的小 Harness
&lt;/h2&gt;&lt;p&gt;即使你不是在做企业级 Agent 平台，也可以用 Harness 思维改造自己的 AI 工作流。&lt;/p&gt;
&lt;p&gt;最小版本很简单：把“一句话请求”改成“可验证流程”。&lt;/p&gt;
&lt;p&gt;比如写文章，不要只说“帮我写一篇”。可以先让 AI 根据素材列出几个角度，说明每个角度和你已发布内容的差异；你确认后再写大纲；草稿出来后，再检查重复论点、过度列表、没有来源的强断言；最后才整理成发布版本。&lt;/p&gt;
&lt;p&gt;这就是一个小 Harness。它没有复杂代码，但有阶段、有检查点、有停止条件。&lt;/p&gt;
&lt;p&gt;写代码也一样。&lt;/p&gt;
&lt;p&gt;不要只说“实现这个功能”。可以先让它读现有实现，列出会改哪些文件；再给出计划；实现后运行测试；如果涉及 UI，再启动页面截图验证；验证通过后再总结改动。&lt;/p&gt;
&lt;p&gt;这类流程不神秘，但效果通常很明显。AI 变稳，不是因为模型换了，而是因为你给它换了运行环境。&lt;/p&gt;
&lt;p&gt;对个人创作者来说，Harness 也可以是一套固定模板：选题采集、去重检查、素材入库、草稿写作、人工化改写、发布前校验。流程足够清楚以后，AI 就不只是临时帮忙，而会变成可复用的生产系统。&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;谁 prompt 写得顺，谁知道哪个模型适合哪个任务，谁就能更快一点。&lt;/p&gt;
&lt;p&gt;但当 Agent 进入更长、更复杂、更高风险的任务，个人手感会慢慢不够用。你不能指望每一次都靠临场发挥，把一个长程任务从头盯到尾。&lt;/p&gt;
&lt;p&gt;能力会沉淀到流程里。&lt;/p&gt;
&lt;p&gt;团队有没有清晰的规格写法，有没有自动化测试，有没有权限边界，有没有评审机制，有没有任务轨迹记录，有没有失败复盘，这些原本属于软件工程和组织管理的问题，会直接决定 AI Agent 能发挥到什么程度。&lt;/p&gt;
&lt;p&gt;Harness 这个词有意思的地方也在这里。它听起来像技术，最后却指向管理：管理上下文，管理工具，管理风险，管理反馈，管理停止条件。&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;/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://huggingface.co/blog/agent-glossary&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hugging Face：Harness, Scaffold, and the AI Agent Terms Worth Getting Right&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://code.claude.com/docs/en/best-practices&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Code Best Practices&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.promptarmor.com/resources/microsoft-copilot-cowork-exfiltrates-files&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PromptArmor：Microsoft Copilot Cowork Exfiltrates Files&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Lum1104/Understand-Anything&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Understand-Anything GitHub 项目&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>AI Agent 写后端的真正问题：不是不会写，而是越写越不守规矩</title>
        <link>https://blog.ccino.org/p/constraint-decay-ai-agent-backend-2026/</link>
        <pubDate>Mon, 25 May 2026 10:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/constraint-decay-ai-agent-backend-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/constraint-decay-ai-agent-backend-2026/imgs/cover.png" alt="Featured image of post AI Agent 写后端的真正问题：不是不会写，而是越写越不守规矩" /&gt;&lt;p&gt;最近读到一篇 arXiv 论文，题目很长：&lt;a class=&#34;link&#34; href=&#34;https://arxiv.org/abs/2605.06445&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Constraint Decay: The Fragility of LLM Agents in Backend Code Generation&lt;/a&gt;。它讨论的不是“AI 会不会写代码”这种大问题，而是一个后端工程师更熟悉的麻烦：你给 AI Agent 一堆项目规矩，它能不能在多文件改动里一直守住？&lt;/p&gt;
&lt;p&gt;作者做了一个挺朴素、但很有价值的实验。他们固定了一套 API 契约（API contract），准备了 80 个从零生成的任务和 20 个功能迭代任务，覆盖 8 个 Web 框架。验收时不只看接口能不能跑，还用端到端测试和静态检查去看结构有没有被破坏。结果是，约束越多，Agent 掉得越明显。较强的配置从基础任务到完整约束任务，assertion pass rate 平均掉了 30 个百分点；弱一些的配置几乎掉到零。&lt;/p&gt;
&lt;p&gt;论文把这个现象叫 &lt;strong&gt;constraint decay&lt;/strong&gt;，约束衰减。&lt;/p&gt;
&lt;p&gt;这个词有点学术，但你只要用 Claude Code、Cursor 或其他编程智能体（coding agent）改过一个稍微复杂的后端项目，就大概知道它在说什么：代码能跑，测试也许还绿，但项目的形状开始变了。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/constraint-decay-ai-agent-backend-2026/imgs/architecture-decay.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/constraint-decay-ai-agent-backend-2026/imgs/architecture-decay_hu_17dc5fd58da6b8a7.png 480w, https://blog.ccino.org/p/constraint-decay-ai-agent-backend-2026/imgs/architecture-decay_hu_2c122ca49c20f9c0.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;现在的 AI 编程工具很擅长把模糊需求变成演示项目（demo）。你说“帮我做一个用户登录接口”，它很快就能补路由（route）、控制器（controller）、模型（model）、数据库查询，甚至顺手加测试。&lt;/p&gt;
&lt;p&gt;如果验收标准只是“接口返回 200”，这事看起来已经结束了。&lt;/p&gt;
&lt;p&gt;但真实项目不会只问返回码。它还会追问：这段逻辑该不该放在 controller？有没有绕过 service 层？查询有没有经过统一的权限过滤？ORM 关系是不是只在简单数据下碰巧没炸？为了当前接口跑通，它有没有顺手改掉别的模块依赖的结构？&lt;/p&gt;
&lt;p&gt;这些问题通常不会第一时间报错。它们更像裂缝。第一天只是代码有点别扭，第三天开始测试难写，第三周以后你发现每加一个功能都要绕开前面留下的结构债。&lt;/p&gt;
&lt;p&gt;这也是这篇论文切中的地方。很多基准测试（benchmark）会奖励“功能正确但结构随意”的答案。论文摘要里的说法是：功能上正确、结构上任意的解法（functionally correct but structurally arbitrary solutions）。翻成工程现场的话，就是：我们一直在奖励 AI 写能跑的野路子。&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;一个接口表面上只是接收参数、查询数据、返回 JSON，背后却牵着数据库模式（schema）、对象关系映射（ORM）、事务边界、权限模型、错误处理、依赖注入、迁移文件和框架生命周期。很多关键约束不在需求文字里，也不在当前文件里，而是散在项目习惯和历史代码里。&lt;/p&gt;
&lt;p&gt;论文的错误分析（error analysis）里提到，主要问题之一是数据层缺陷（data-layer defects），包括查询组合错误（incorrect query composition）和对象关系映射运行时违规（ORM runtime violations）。这个判断很贴近实际。Agent 往往不是不会写 SQL，也不是不知道 ORM 怎么用，而是对不齐项目已有的模型关系、查询入口和框架约定。&lt;/p&gt;
&lt;p&gt;比如你让它给订单系统加一个“按用户筛选订单”的接口。它看到 &lt;code&gt;Order&lt;/code&gt; model 里有 &lt;code&gt;user_id&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-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;n&#34;&gt;orders&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;query&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Order&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;filter&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Order&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;user_id&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;user_id&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;all&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;code&gt;OrderRepository&lt;/code&gt;，因为里面封装了租户隔离、软删除过滤、权限范围和审计日志。Agent 可能没读到那部分，也可能读到了但在后续修补里忘了。最后表现出来的是：功能通过，边界破坏。&lt;/p&gt;
&lt;p&gt;这种破坏还不容易被普通单元测试抓住。你测“给 user_id 能不能返回订单”，它通过了。可你没测“有没有绕过租户隔离”。等真正出问题时，已经不是一个接口的 bug（缺陷），而是项目约束被穿了一个洞。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;框架越有默契agent-越容易踩空&#34;&gt;框架越有默契，Agent 越容易踩空
&lt;/h2&gt;&lt;p&gt;论文里还有个发现：Agent 在极简、显式（minimal、explicit）的框架里表现更好，比如 Flask；在重约定（convention-heavy）的环境里表现差得多，比如 FastAPI、Django。&lt;/p&gt;
&lt;p&gt;这很合理。显式框架把事情摆在明面上，文件在哪里，函数怎么接，依赖怎么传，代码通常比较直接。Agent 读到相邻文件后，比较容易照着模式写下去。&lt;/p&gt;
&lt;p&gt;约定型框架就麻烦些。很多规则藏在命名、目录、配置、装饰器、生命周期和社区惯例里。Django 的模型（model）、管理器（manager）、迁移（migration）、管理后台（admin）、序列化器（serializer）、视图集（viewset）之间有一整套默认假设。FastAPI 项目也经常把依赖注入（dependency injection）、Pydantic 模式（schema）、路由器（router）分组和服务层（service layer）组织成内部规范。&lt;/p&gt;
&lt;p&gt;人类开发者进项目后，会慢慢形成“这里应该这么写”的手感。Agent 更容易被最近读到的几个文件带偏。它可能在 A 模块模仿得不错，到了 B 模块因为上下文挤压、文件没读全，或者目标被“尽快修好测试”绑架，就开始用自己熟悉的通用写法补洞。&lt;/p&gt;
&lt;p&gt;我见过的典型过程是这样的：第一轮生成还像原项目；第二轮修 bug（缺陷），开始加局部 hack（临时补丁）；第三轮扩功能，文件边界松了；第四轮再让它修测试，它为了过测试去碰更底层的结构。&lt;/p&gt;
&lt;p&gt;这不一定是模型突然变笨。更像是当前任务的压力逐渐盖过了项目规则。Agent 追着“把这次需求完成”跑，架构约束在一次次局部修补里被磨掉。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;prompt-只能提醒不能兜底&#34;&gt;Prompt 只能提醒，不能兜底
&lt;/h2&gt;&lt;p&gt;很多人的第一反应是：那我把规则写清楚一点不就好了？&lt;/p&gt;
&lt;p&gt;确实有用。你应该告诉 Agent：不要绕过服务层（service layer），不要直接改数据库模式（schema），不要新增全局状态，不要在控制器（controller）里写业务逻辑。但只靠提示词（prompt），很快会遇到麻烦。&lt;/p&gt;
&lt;p&gt;一个麻烦是目标冲突。你同时要求它保持架构一致、不要大改、修复所有测试、尽快完成需求。真冲突时，Agent 往往会选最容易被验证的目标：测试绿了，接口跑了。&lt;/p&gt;
&lt;p&gt;另一个麻烦是可见性。规则写在 prompt 里，不代表它每一步编辑都能正确应用到当前文件。长任务里，它可能没有读到关键文件，也可能没有意识到某个局部改动已经违反项目级约束。&lt;/p&gt;
&lt;p&gt;所以 prompt 只是意图，不是边界。更靠谱的做法，是把一部分规矩变成机器能检查的东西。&lt;/p&gt;
&lt;p&gt;比如控制器（controller）不能直接访问对象关系映射（ORM），就用代码检查（lint）或脚本拦住。Agent 有没有偷偷改数据库结构，就看数据库模式差异（schema diff）。模块之间不能反向导入（import），就写架构测试。API 契约（API contract）不能动，就用静态检查和契约测试（contract test）。数据库行为不能只靠模拟对象（mock），就跑真实集成测试。&lt;/p&gt;
&lt;p&gt;这些东西不一定要很复杂。关键是要在 Agent 完成任务后立刻跑，而不是几天后人工 review 才发现风格已经跑偏。&lt;/p&gt;
&lt;p&gt;在 AI coding 里，prompt 像任务说明，verifier 才像门禁。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/constraint-decay-ai-agent-backend-2026/imgs/verifier-guardrails.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/constraint-decay-ai-agent-backend-2026/imgs/verifier-guardrails_hu_85708d17f0f4846.png 480w, https://blog.ccino.org/p/constraint-decay-ai-agent-backend-2026/imgs/verifier-guardrails_hu_a7358daa633d1d19.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;我会怎么改-claude-code-工作流&#34;&gt;我会怎么改 Claude Code 工作流
&lt;/h2&gt;&lt;p&gt;如果你平时用 Claude Code 写后端，这篇论文不是在说“别用 Agent”。它更像是在提醒：别把 Agent 当成一个天然理解项目边界的同事。&lt;/p&gt;
&lt;p&gt;它更接近一个执行力很强的外包工程师。给它自由度太大，它就可能在你看不见的地方做局部最优。&lt;/p&gt;
&lt;p&gt;我的做法会保守一点。&lt;/p&gt;
&lt;p&gt;先让它读结构，不急着写代码。让它说清楚控制器（controller）、服务层（service）、仓储层（repository）的边界，数据库访问集中在哪里，新增功能应该落在哪几个文件。如果这一步答不清，后面写得越快越危险。&lt;/p&gt;
&lt;p&gt;然后把任务拆小。不要让它“一次实现完整订单管理模块”。先补数据库模式（schema），再补服务层（service），再补路由（route），再补测试。每一步都看代码差异（diff），避免一个大补丁里混进结构漂移。&lt;/p&gt;
&lt;p&gt;还要给少量硬禁止项。比如不要修改迁移文件（migration）以外的数据库模式定义（schema），不要在路由（route）里直接查询对象关系映射（query ORM），不要新增跨层导入（import）。禁止项不用多，太多反而会被稀释，但关键边界要硬。&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;p&gt;过去一年，AI coding 的讨论很容易走向两个极端。&lt;/p&gt;
&lt;p&gt;一种说法是模型越来越强，代码越来越快，未来人人都能做软件。另一种说法是 AI 代码全是垃圾，真正工程还得人写。&lt;/p&gt;
&lt;p&gt;Constraint Decay 给了一个更具体的判断：AI Agent 不是不会写后端，它是在结构约束累积时开始掉队。这个问题不一定靠更长上下文就能解决，也不一定靠更顺滑的聊天界面就能掩盖。&lt;/p&gt;
&lt;p&gt;后端开发本来就是约束密集型工作。一个成熟项目的价值，不只在功能列表里，也在那些看起来无聊的规矩里：哪些层可以互相调用，哪些数据只能通过统一入口访问，哪些异常必须被包装，哪些迁移必须可回滚，哪些 API 契约（API contract） 不能破坏。&lt;/p&gt;
&lt;p&gt;人类工程师花很多年学会的，其实就是在功能压力下仍然守住这些规矩。&lt;/p&gt;
&lt;p&gt;AI Agent 现在最容易做到的是把功能补上。它还不稳定的是：补功能时不破坏系统的形状。&lt;/p&gt;
&lt;p&gt;所以我不觉得这篇论文是在唱衰 AI 编程。它是在把问题说得更准：代码生成变便宜以后，工程约束会变得更贵。&lt;/p&gt;
&lt;p&gt;以后评价一个 Coding Agent，不能只问它能不能写出功能。还要问：当项目规则越来越多、文件越来越多、框架约定越来越重时，它还能不能守规矩。&lt;/p&gt;
&lt;p&gt;如果答案不确定，就别把规矩只写在提示词（prompt）里。把它写进测试，写进静态检查，写进代码审查清单（review checklist），写进每一次小步提交。&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://arxiv.org/abs/2605.06445&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;arXiv: Constraint Decay: The Fragility of LLM Agents in Backend Code Generation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.semanticscholar.org/paper/Constraint-Decay%3A-The-Fragility-of-LLM-Agents-in-Dente-Satriani/dd5f2a077184293de0847b9a53b514f15924fc0c&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Semantic Scholar: Constraint Decay&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://news.ycombinator.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hacker News 相关讨论&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>快模型需要慢开发者：AI 写代码越快，人越不能急</title>
        <link>https://blog.ccino.org/p/fast-models-need-slow-developers/</link>
        <pubDate>Sun, 24 May 2026 08:20:45 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/fast-models-need-slow-developers/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/fast-models-need-slow-developers/imgs/cover.png" alt="Featured image of post 快模型需要慢开发者：AI 写代码越快，人越不能急" /&gt;&lt;p&gt;如果一个 AI 编程模型每秒能吐出 1200 个 token，我的第一反应其实不是兴奋，而是有点警惕。&lt;/p&gt;
&lt;p&gt;等模型输出很烦，这大家都知道。以前让 AI 改一个稍微复杂点的功能，等几分钟很正常。等它打字的时候，人很容易切走，去看消息、喝水、处理别的事。回来的时候，屏幕上已经多了一大段代码，甚至改了好几个文件。&lt;/p&gt;
&lt;p&gt;慢模型时代，这种习惯已经不太好；到了快模型时代，它会变得更危险。&lt;/p&gt;
&lt;p&gt;Sarah Chieng 在 AI Engineer 的分享里讲到 Cerebras 和 OpenAI 合作推出的 Codex Spark。据她介绍，这个模型可以用每秒 1200 tokens 的速度生成代码。很多常见模型大概是每秒 40 到 60 tokens。换句话说，过去十分钟才堆出来的一大坨 diff，现在可能半分钟就出现。&lt;/p&gt;
&lt;p&gt;这时问题就变了。不是“AI 太慢，影响效率”，而是“AI 太快，人还没来得及判断，它已经替你做完了好几个决定”。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/fast-models-need-slow-developers/imgs/failure-modes.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/fast-models-need-slow-developers/imgs/failure-modes_hu_f32a6e9c3c143102.png 480w, https://blog.ccino.org/p/fast-models-need-slow-developers/imgs/failure-modes_hu_2fabe37a452923a9.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;快模型改变 AI coding 的失败模式&#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;以前我们习惯写一个很大的 prompt。背景、需求、约束、文件结构、注意事项，能塞进去的都塞进去，然后希望模型一次性给个完整结果。&lt;/p&gt;
&lt;p&gt;这套办法为什么流行？因为等待很贵。既然等一轮输出要几分钟，那当然希望一轮多做点。&lt;/p&gt;
&lt;p&gt;可一旦模型很快，这个逻辑就不太成立了。快模型适合短跑，不适合在没人看的情况下自己开车上高速。一个 agent 如果理解错了需求，它可以很快改完多个文件，顺手删掉旧逻辑，补几条看起来合理的测试，再把接口整理得像模像样。你打开 diff 时，甚至会觉得它挺认真。&lt;/p&gt;
&lt;p&gt;麻烦就在这里。坏代码不一定长得很粗糙。AI 生成的坏代码，经常是语气很自信、结构很完整、命名也还不错，只是方向错了。&lt;/p&gt;
&lt;p&gt;所以我觉得“快模型需要慢开发者”这句话，重点不是让大家少用 AI，而是提醒我们：不能再把 AI coding 当成“丢给外包，晚点验收”。它更像一台转速很高的机器。机器当然能提高产能，但你得盯着它切到哪里、有没有越界、有没有把不该动的地方也顺手磨掉。&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;我现在更愿意把快模型当成“候选方案生成器”。比如做一个 UI 组件，与其让它一次写出最终版，不如让它给几种布局；写一个边界条件多的函数，也可以让它给两三种处理方式。然后人来选，选完再让它收敛。&lt;/p&gt;
&lt;p&gt;这和演讲里提到的 cherry-pick 思路很接近。快模型的价值不是替你跳过审美和工程判断，而是让你有更多可比较的草稿。人的价值，也不再只是亲手敲每一行代码，而是知道哪一版更稳、更贴近需求、更不容易给未来挖坑。&lt;/p&gt;
&lt;h2 id=&#34;测试别留到最后&#34;&gt;测试别留到最后
&lt;/h2&gt;&lt;p&gt;我以前也常犯一个错：让 AI 先写完，最后统一跑测试。&lt;/p&gt;
&lt;p&gt;这个习惯在快模型时代要改。原因很简单，代码几秒钟就能生成一轮，测试就不该等到最后才出现。否则你会得到一个很大的 diff，然后才发现第一步就走错了。&lt;/p&gt;
&lt;p&gt;更舒服的节奏应该小很多：先划清任务边界，让 AI 只改一个局部；改完马上跑对应测试、lint 或类型检查；结果不对就立刻停下，缩小问题，再来一轮。没有测试的项目，也至少要让它给出可观察的验证方式，比如启动页面、检查输出、对比某个 API 返回。&lt;/p&gt;
&lt;p&gt;这听起来慢，但通常会省时间。真正浪费时间的不是多跑几次测试，而是半小时后才发现 AI 从一开始就理解错了。&lt;/p&gt;
&lt;p&gt;在高速 AI coding 里，验证不是保守动作，而是节奏的一部分。就像开车不是因为胆小才看后视镜，而是因为车速上来了，不看就太冒险。&lt;/p&gt;
&lt;h2 id=&#34;规划和执行最好分开&#34;&gt;规划和执行最好分开
&lt;/h2&gt;&lt;p&gt;Sarah Chieng 还提到一个分工：高智能模型负责规划，快模型负责执行。&lt;/p&gt;
&lt;p&gt;我觉得这点特别适合放到 Claude Code、Codex、Cursor 这类工具里理解。并不是所有任务都应该交给最快的模型。速度适合明确的小任务：改一个组件，补一个测试，实现一个函数，生成几个候选方案。&lt;/p&gt;
&lt;p&gt;但架构判断、需求拆解、跨模块迁移、兼容性边界，这些事情不该只追求快。它们需要更强的推理，也需要人先把边界写清楚。&lt;/p&gt;
&lt;p&gt;一个比较稳的 AI coding 流程，通常会分成两段。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/fast-models-need-slow-developers/imgs/slow-workflow.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/fast-models-need-slow-developers/imgs/slow-workflow_hu_d056f0a4ba7e5ec8.png 480w, https://blog.ccino.org/p/fast-models-need-slow-developers/imgs/slow-workflow_hu_a179a410d1b93510.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;慢开发者的 AI 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;先做规划：这次到底改什么，不改什么，哪些接口不能动，哪些行为要保持，怎么证明改对了。这个阶段不用急，越急越容易漏约束。&lt;/p&gt;
&lt;p&gt;再做执行：在明确边界里快速试错，生成代码，补测试，修 lint，跑局部验证。这里才应该吃速度红利。&lt;/p&gt;
&lt;p&gt;很多翻车不是因为模型不会写某一行代码，而是你让它同时当产品经理、架构师、程序员、测试和 reviewer。它当然会省事，也当然会在某些地方糊弄过去。速度越快，这种糊弄越不容易被及时发现。&lt;/p&gt;
&lt;h2 id=&#34;把上下文写进文件里&#34;&gt;把上下文写进文件里
&lt;/h2&gt;&lt;p&gt;演讲里还有一个细节我很喜欢：用几个持久的 Markdown 文件管理上下文，比如 &lt;code&gt;agents.md&lt;/code&gt;、&lt;code&gt;plan.md&lt;/code&gt;、&lt;code&gt;progress.md&lt;/code&gt;、&lt;code&gt;verify.md&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;这不是为了仪式感。快模型会更快吃掉上下文窗口。原来十分钟才触发的压缩，现在可能几十秒就遇到。上下文一压缩，早期说过的限制就可能被淡化，尤其是那些“不要做什么”。&lt;/p&gt;
&lt;p&gt;把关键上下文写进文件里，就等于给 AI 留了一本项目手册。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;agents.md&lt;/code&gt; 可以写角色和边界，&lt;code&gt;plan.md&lt;/code&gt; 写目标和步骤，&lt;code&gt;progress.md&lt;/code&gt; 记录已经做完什么、还卡在哪里，&lt;code&gt;verify.md&lt;/code&gt; 写每一步怎么验收。不一定非得照搬这四个文件，但原则很简单：重要约束不要只留在聊天记录里。&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;&lt;img src=&#34;https://blog.ccino.org/p/fast-models-need-slow-developers/imgs/claude-code-workflow.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/fast-models-need-slow-developers/imgs/claude-code-workflow_hu_797ee48383f7c447.png 480w, https://blog.ccino.org/p/fast-models-need-slow-developers/imgs/claude-code-workflow_hu_97617abedb1a7ab8.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;如果把这套想法落到 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;最后看 diff 的时候，不只问“做了什么”，还要问“有没有改到不该改的地方”。这个问题比总结功能更有用。&lt;/p&gt;
&lt;h2 id=&#34;慢下来不是少用-ai&#34;&gt;慢下来，不是少用 AI
&lt;/h2&gt;&lt;p&gt;我不觉得“慢开发者”是在怀念手写代码。恰恰相反，只有真正用得多，才会意识到节奏控制有多重要。&lt;/p&gt;
&lt;p&gt;AI 写代码越快，人越需要知道什么时候该停。什么时候让模型继续跑，什么时候要读 diff；什么时候让它生成多个候选，什么时候只允许它改一个文件；什么时候追求速度，什么时候必须先补验证。&lt;/p&gt;
&lt;p&gt;以后熟练使用 AI coding 的人，可能不是 prompt 写得最长的人，而是最会设检查点的人。&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.bestblogs.dev/video/fe5bc07&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Fast Models Need Slow Developers — Sarah Chieng, Cerebras&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=TeGsFFNqRLA&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;YouTube: Fast Models Need Slow Developers — Sarah Chieng, Cerebras&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/categories/ai-coding-agents&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Product Hunt: AI Coding Agents&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Claude Code 开始有“应用商店”了：官方插件目录意味着什么？</title>
        <link>https://blog.ccino.org/p/claude-code-official-plugin-directory/</link>
        <pubDate>Sat, 23 May 2026 09:30:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/claude-code-official-plugin-directory/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/claude-code-official-plugin-directory/imgs/cover.png" alt="Featured image of post Claude Code 开始有“应用商店”了：官方插件目录意味着什么？" /&gt;&lt;p&gt;GitHub Trending 上最近出现了一个仓库：&lt;code&gt;anthropics/claude-plugins-official&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;仓库名字没绕弯，Claude Code Plugins Directory。README 里的描述也很短：这是一个由 Anthropic 管理的高质量 Claude Code 插件目录。&lt;/p&gt;
&lt;p&gt;乍一看，这件事不算大。很多开源项目都会维护一个官方 examples repo、templates repo，或者类似 awesome list 的东西。多一个目录，好像也只是让用户少搜几次 GitHub。&lt;/p&gt;
&lt;p&gt;但如果你这半年一直在用 Claude Code，会发现它的味道有点不一样。&lt;/p&gt;
&lt;p&gt;Claude Code 原来更像一个强力终端助手。你给它上下文，配好 &lt;code&gt;CLAUDE.md&lt;/code&gt;，接几个 MCP server，再慢慢攒自己的 commands 和 skills。用得好不好，很大程度取决于你个人怎么折腾。&lt;/p&gt;
&lt;p&gt;现在 Anthropic 把 plugins 单独做成官方目录，相当于承认了一件事：Claude Code 的能力不能永远靠用户自己到处复制配置。一个成熟的开发工具，迟早要处理安装、分发、信任、更新和治理这些麻烦事。&lt;/p&gt;
&lt;h2 id=&#34;这个仓库透露出的东西&#34;&gt;这个仓库透露出的东西
&lt;/h2&gt;&lt;p&gt;这个仓库目前是公开的。GitHub 页面显示，它已经有 2 万多个 stars，目录结构主要分成两块：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;/plugins
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/external_plugins
&lt;/span&gt;&lt;/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;/plugins&lt;/code&gt; 放 Anthropic 内部开发和维护的插件，&lt;code&gt;/external_plugins&lt;/code&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;/code&gt;&lt;/pre&gt;&lt;/td&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;/plugin install {plugin-name}@claude-plugins-official
&lt;/span&gt;&lt;/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;/plugin &amp;gt; Discover&lt;/code&gt; 浏览。&lt;/p&gt;
&lt;p&gt;这就比较接近传统开发工具的插件市场了。过去你想扩展 Claude Code，常见流程是：看到别人分享一个仓库，点进去看 README，复制一段 &lt;code&gt;.mcp.json&lt;/code&gt;，再把 commands 或 skills 放到对应目录。路径、依赖、版本、权限，全靠自己判断。&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;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-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;plugin-name/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── .claude-plugin/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   └── plugin.json
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── .mcp.json
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── commands/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── agents/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── skills/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── README.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;这个结构说明，Claude Code 里的 plugin 不是一个简单的按钮，也不是一个单独的 MCP server。它可以同时带元数据、MCP 配置、slash commands、agent definitions、skills 和文档。&lt;/p&gt;
&lt;p&gt;也就是说，一个插件可能是一整套工作环境。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-code-official-plugin-directory/imgs/plugin-structure.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-code-official-plugin-directory/imgs/plugin-structure_hu_d82c730d4b84c723.png 480w, https://blog.ccino.org/p/claude-code-official-plugin-directory/imgs/plugin-structure_hu_f7eece1f25402335.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Claude Code 插件的组成结构&#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 Code 加一个命令。它可能同时提供浏览器调试 MCP、UI review agent、组件生成 command、设计系统 skill，以及一份告诉你怎么使用它的 README。&lt;/p&gt;
&lt;p&gt;这和我们过去在浏览器或 VS Code 里理解的插件不太一样。传统插件大多是给人用的功能扩展；Claude Code 的插件更像给 Agent 装上的工具箱和操作规程。&lt;/p&gt;
&lt;h2 id=&#34;skillsmcpplugins-到底怎么分工&#34;&gt;Skills、MCP、Plugins 到底怎么分工
&lt;/h2&gt;&lt;p&gt;Claude Code 的概念现在有点多。MCP、skills、agents、commands、plugins，全都在扩展能力。如果不区分清楚，很容易把它们都叫“插件”。&lt;/p&gt;
&lt;p&gt;我的理解是，MCP 解决的是连接问题。它让 Claude Code 可以用一种标准方式接外部工具和数据源，比如 GitHub、Slack、数据库、浏览器、文件系统，或者公司内部 API。&lt;/p&gt;
&lt;p&gt;Skills 解决的是流程问题。它不是告诉 AI 一个知识点，而是告诉 AI 在某类任务里应该怎么做。比如写博客前先读选题，发布前检查 Hugo frontmatter，生成图片后校验路径，归档 Inbox 时同步移动 imgs 目录。真正有价值的是步骤、触发条件、质量门槛和失败处理。&lt;/p&gt;
&lt;p&gt;Plugins 则更像打包和分发单位。它可以把 MCP、commands、agents、skills 和说明文档放在一起，让用户通过一个名字安装。&lt;/p&gt;
&lt;p&gt;所以以前 Claude Code 的高级用法更像“手工组装电脑”。懂的人可以配得很好：这个 MCP 用来查 GitHub，那个 skill 用来写博客，再加几个自己写的 slash command。问题是，一旦换一台机器，或者让团队里十个人都这么配，麻烦就来了。&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;README 里有一段提醒很重要。它说，安装、更新或使用插件前，要确认自己信任这个插件。Anthropic 也明确表示，它不能控制插件里包含的 MCP servers、文件或其他软件，也不能保证它们一定按预期工作，或者以后不会变化。&lt;/p&gt;
&lt;p&gt;这不是一句普通免责声明。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/claude-code-official-plugin-directory/imgs/trust-governance.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/claude-code-official-plugin-directory/imgs/trust-governance_hu_bcbabedad4ec1c3a.png 480w, https://blog.ccino.org/p/claude-code-official-plugin-directory/imgs/trust-governance_hu_d8eb178e6f03c30a.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;Claude Code 插件和传统主题插件不一样。一个主题插件坏了，最多是界面难看；一个 Claude Code 插件如果带了 MCP server、shell 命令和文件读写能力，风险就完全不同了。&lt;/p&gt;
&lt;p&gt;因为 Agent 不是被动等你点按钮。它会根据任务主动调用工具。你给它装的能力越多，它能做的事越多，误操作或被滥用的空间也越大。&lt;/p&gt;
&lt;p&gt;官方目录解决不了所有安全问题，但它至少提供了一些基本线索：插件来自哪里，谁维护，结构是否标准，是否属于 Anthropic 内部插件，还是外部提交插件。&lt;/p&gt;
&lt;p&gt;没有目录时，用户面对的是散落在 GitHub、博客、X 帖子和私人仓库里的配置片段。有目录后，至少有了一个相对集中的起点。&lt;/p&gt;
&lt;p&gt;个人用户会觉得这是省事。团队用户更在意的是：终于有地方可以做筛选和治理了。&lt;/p&gt;
&lt;h2 id=&#34;ai-编程工具开始比拼周边系统&#34;&gt;AI 编程工具开始比拼“周边系统”
&lt;/h2&gt;&lt;p&gt;过去比较 AI 编程工具，大家喜欢问几个问题：Claude Code 和 Cursor 谁更懂大型代码库？Codex CLI 会不会追上来？Antigravity 的多代理体验是不是更好？哪个模型写代码更稳？&lt;/p&gt;
&lt;p&gt;这些问题当然还重要。但在实际使用里，模型能力只是其中一层。&lt;/p&gt;
&lt;p&gt;当 AI 编程工具进入每天的工作流后，差距会出现在一些更琐碎的地方。它能不能接入公司内部文档？能不能复用团队的 review 标准？能不能跑项目自己的测试命令？能不能遵守安全团队批准的权限边界？新人装完之后，能不能马上获得一套接近团队最佳实践的工作环境？&lt;/p&gt;
&lt;p&gt;这些事情单靠模型解决不了。&lt;/p&gt;
&lt;p&gt;VS Code 能成为很多人的默认编辑器，不只是因为编辑器本身好用。扩展生态、调试器、主题、语言服务器、设置同步，这些东西一起构成了平台。Chrome 也类似，浏览器内核很重要，但扩展、账号、开发者工具和分发渠道同样重要。&lt;/p&gt;
&lt;p&gt;Claude Code 如果只停留在 CLI，它会是一个很强的工具。插件生态跑起来后，它更像一个 AI 原生开发平台。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;claude-plugins-official&lt;/code&gt; 的意义就在这里。它不是说 Claude Code 已经拥有成熟应用商店了，而是说明 Anthropic 开始补平台化所需的分发层。&lt;/p&gt;
&lt;h2 id=&#34;企业内部大概率会有自己的插件目录&#34;&gt;企业内部大概率会有自己的插件目录
&lt;/h2&gt;&lt;p&gt;BestBlogs 今天还推了一个 Spotify 的案例：Spotify 如何把 Claude Code、Honk、Backstage、MCP 和验证闭环扩展到 3000 名工程师。&lt;/p&gt;
&lt;p&gt;这个案例和官方插件目录放在一起看，很像同一个趋势的两面。&lt;/p&gt;
&lt;p&gt;个人用 Claude Code，问题通常是“我怎么把它调得更顺手”。企业推广 Claude Code，问题会变成“怎么让几千个工程师安全、稳定、可控地用”。&lt;/p&gt;
&lt;p&gt;公司里的 AI 编程工具不会孤立存在。它要接内部文档、代码搜索、CI、监控、权限系统、工单系统、设计系统、发布系统。每个系统背后都可能有一个 MCP server、一组 commands、一套 agent 或一份 skill。&lt;/p&gt;
&lt;p&gt;如果这些东西靠个人互相转发配置，很快就会乱。&lt;/p&gt;
&lt;p&gt;更合理的做法，是把能力分层管理。公司级插件负责身份、权限、内部平台；团队级插件封装某条业务线的测试命令、代码规范、发布流程；个人级插件保留自己的效率偏好。&lt;/p&gt;
&lt;p&gt;Anthropic 的官方目录未必直接解决企业私有插件的问题，但它给出了一个很清楚的结构范式。插件应该有元数据，有文档，有标准目录，有安装方式，最好还能区分内部维护和外部来源。&lt;/p&gt;
&lt;p&gt;以后新人入职一个工程团队，可能不再是同事发一篇长文：“先装这个 MCP，再复制这个 CLAUDE.md，然后把这个 command 放到这里。”&lt;/p&gt;
&lt;p&gt;更可能是：装公司插件，装团队插件，打开项目，Claude Code 已经知道这个团队怎么测试、怎么 review、怎么发布。&lt;/p&gt;
&lt;h2 id=&#34;麻烦也会跟着来&#34;&gt;麻烦也会跟着来
&lt;/h2&gt;&lt;p&gt;插件生态一旦起来，老问题也会一起回来。&lt;/p&gt;
&lt;p&gt;质量参差不齐、重复造轮子、插件要的权限太大、更新破坏兼容、依赖链过长、用户不知道该装什么。这些在 VS Code、Chrome、npm、Python 包生态里都见过。&lt;/p&gt;
&lt;p&gt;AI 插件还多一个麻烦：能力边界不够直观。&lt;/p&gt;
&lt;p&gt;一个普通插件加了一个按钮，你大概知道它会在你点击时做什么。一个 Claude Code 插件如果带了 MCP、commands、agents 和 skills，你很难只看名字就知道它什么时候会被 Agent 调用，会读哪些文件，会不会访问网络，会不会把数据发到第三方服务。&lt;/p&gt;
&lt;p&gt;所以 Claude Code 插件生态要健康，不能只靠“好用”。它还需要更清楚的权限说明、更稳定的版本管理、更容易审计的执行记录。&lt;/p&gt;
&lt;p&gt;个人电脑上试插件，风险还可控。企业环境里，最好有 allowlist、版本锁定和回滚机制。否则插件越多，Claude Code 越强，管理成本也会越高。&lt;/p&gt;
&lt;p&gt;这不是泼冷水。恰恰相反，只有这些麻烦开始出现，才说明 Claude Code 正在进入更真实的生产环境。&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;哪些 MCP 是每天都用的？哪些 slash command 可以标准化？哪些 skills 是你反复调用的？哪些 agent 适合放到项目级别？哪些配置只适合个人电脑，不能放进团队仓库？&lt;/p&gt;
&lt;p&gt;这些东西以前可能散在聊天记录、&lt;code&gt;.claude&lt;/code&gt; 目录、Obsidian 笔记和几个临时脚本里。现在可以开始把它们收拢成更稳定的结构。&lt;/p&gt;
&lt;p&gt;如果你在团队里推广 Claude Code，也可以先维护一个简单的内部仓库。里面不用一开始就做成真正的 plugin marketplace，只要先放团队认可的 MCP 配置、commands、skills、安装说明和安全边界。&lt;/p&gt;
&lt;p&gt;先把“每个人各配各的”变成“团队共同维护一套”。等 Claude Code 插件系统更成熟，再迁移成正式插件也不迟。&lt;/p&gt;
&lt;p&gt;还有一点要提醒：第三方插件别乱装。&lt;/p&gt;
&lt;p&gt;尤其是带 MCP server、shell 命令、文件读写和网络访问能力的插件。装之前看 README，看源码结构，看它要什么权限。来源不明的插件，不要直接接生产仓库、密钥文件和公司内部系统。&lt;/p&gt;
&lt;h2 id=&#34;一个小目录背后是分发方式变了&#34;&gt;一个小目录，背后是分发方式变了
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;anthropics/claude-plugins-official&lt;/code&gt; 现在还只是一个目录。它不是 Claude Code 的终局，也不能证明插件生态已经成熟。&lt;/p&gt;
&lt;p&gt;但它确实说明了一件事：Claude Code 的能力分发方式开始变化了。&lt;/p&gt;
&lt;p&gt;以前，Claude Code 的高级能力大多藏在个人配置里。谁的 &lt;code&gt;CLAUDE.md&lt;/code&gt; 写得好，谁的 MCP 配得顺，谁的 skills 积累得多，谁就用得更好。&lt;/p&gt;
&lt;p&gt;插件目录出现后，这些能力开始有机会被打包、安装、发现和治理。&lt;/p&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;而是 Claude Code 终于开始补上一个平台必须有的东西：能力分发。&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/anthropics/claude-plugins-official&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;anthropics/claude-plugins-official&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://code.claude.com/docs/en/plugins&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Code Plugins documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>特斯拉停产 Model S/X：马斯克把旗舰轿车换成了人形机器人</title>
        <link>https://blog.ccino.org/p/tesla-model-sx-optimus-robot-factory-2026/</link>
        <pubDate>Fri, 22 May 2026 09:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/tesla-model-sx-optimus-robot-factory-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/tesla-model-sx-optimus-robot-factory-2026/imgs/cover.png" alt="Featured image of post 特斯拉停产 Model S/X：马斯克把旗舰轿车换成了人形机器人" /&gt;&lt;p&gt;2026 年 5 月，最后一辆 Model S 在加利福尼亚州弗里蒙特工厂缓缓驶下流水线。&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;Model S 不是一款普通的车。&lt;/p&gt;
&lt;p&gt;2012 年上市时，它几乎以一己之力扭转了外界对电动车的看法。在那个年代，电动车等于&amp;quot;高尔夫球车&amp;quot;，续航焦虑是行业共识，外形丑陋是默认设置。Model S 打破了这一切：&lt;strong&gt;0 到 96 公里时速 2.4 秒、续航超过 600 公里、中控大屏、空中升级&lt;/strong&gt;——它重新定义了&amp;quot;好车&amp;quot;的边界，顺带让一批传统豪车品牌慌了手脚。&lt;/p&gt;
&lt;p&gt;Model X 更夸张。2015 年发布，以一对会向上展开的&amp;quot;鹰翼门&amp;quot;闻名于世。工程难度极高，以至于特斯拉自己都承认量产过程一塌糊涂；但这对翅膀成了 Model X 永恒的符号，也让特斯拉在全球的品牌溢价达到顶峰。&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;特斯拉弗里蒙特工厂是一个有历史的地方。它曾经是通用汽车与丰田的合资工厂 NUMMI，2010 年被特斯拉收购，此后成为 Model S、Model X、Model 3 的诞生地。每一辆从这里开出的车，都带着硅谷那种&amp;quot;我们来颠覆&amp;quot;的气质。&lt;/p&gt;
&lt;p&gt;现在，这条流水线要被重新改造。&lt;/p&gt;
&lt;p&gt;根据特斯拉公布的计划：&lt;strong&gt;4 个月内，Fremont 工厂的产线完成拆除与重构，转向 Optimus 人形机器人的专用生产线。&lt;/strong&gt; 目标是将 Optimus Gen 3 的年产能推到 &lt;strong&gt;100 万台&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这个数字，在机器人行业听起来像是幻想。&lt;/p&gt;
&lt;p&gt;目前全球量产能力最强的人形机器人公司——中国的宇树科技、波士顿动力的母公司 Hyundai、1X Robotics——年出货量加在一起，还没到一万台。特斯拉说它要年产一百万台，相当于凭空再造一个全新量级。&lt;/p&gt;
&lt;p&gt;马斯克不是没有&amp;quot;放卫星&amp;quot;的前科。但这次，他已经开始拆车间了。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;optimus-gen-3-是什么水平&#34;&gt;Optimus Gen 3 是什么水平
&lt;/h2&gt;&lt;p&gt;在谈&amp;quot;100 万台&amp;quot;有没有可能之前，先看看 Optimus 现在在哪里。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Optimus Gen 3&lt;/strong&gt; 是特斯拉目前在量产设计上投入最多的版本：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;身高 &lt;strong&gt;1.73 米&lt;/strong&gt;，体重 &lt;strong&gt;57 公斤&lt;/strong&gt;，设计接近真人体型&lt;/li&gt;
&lt;li&gt;双手共 &lt;strong&gt;50 个执行器&lt;/strong&gt;，每只手 22 个自由度，可以折叠衣物、拧螺丝、分拣零件&lt;/li&gt;
&lt;li&gt;全身 &lt;strong&gt;28 个结构执行器&lt;/strong&gt;，支持复杂动作链&lt;/li&gt;
&lt;li&gt;单次充电可支撑 &lt;strong&gt;8 小时工作班次&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;目标零售价：&lt;strong&gt;2 万至 2.5 万美元&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/tesla-model-sx-optimus-robot-factory-2026/imgs/illustration-specs.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/tesla-model-sx-optimus-robot-factory-2026/imgs/illustration-specs_hu_f97a98df9b617962.png 480w, https://blog.ccino.org/p/tesla-model-sx-optimus-robot-factory-2026/imgs/illustration-specs_hu_5836429380c21339.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Optimus Gen 3 技术规格&#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;目标售价 2 万美元，是一个很刻意的数字。这大约是一辆特斯拉 Model 3 的起售价。换句话说，马斯克想让机器人像汽车一样便宜——买得起，用得上，能替代劳动力。&lt;/p&gt;
&lt;p&gt;特斯拉已经在自己的工厂里部署了超过 &lt;strong&gt;1000 台&lt;/strong&gt; Optimus 机器人做内部测试，主要用于搬运零件、分拣物料、辅助装配。这不是展台上的 Demo，是真实生产环境里的测试数据。&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;p&gt;人形机器人的竞争，正在以某种出人意料的方式展开——中国厂商已经先特斯拉一步，开始批量出货。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;宇树科技&lt;/strong&gt;是目前国产人形机器人里量产化走得最靠前的公司。它的 G1 机器人售价约 &lt;strong&gt;1.6 万美元&lt;/strong&gt;，已经开始向研究机构和工业客户发货。H2 是今年年初发布的新旗舰，身高 182 厘米，拥有 31 个自由度，在运动能力上已经相当成熟——今年 4 月，H1 在北京亦庄人形机器人半马中跑出了 &lt;strong&gt;7.51 米/秒&lt;/strong&gt;的均速，超越了人类 1500 米世界纪录的配速。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;傅利叶智能&lt;/strong&gt;的 GR-2 有 53 个自由度，是目前公开产品里自由度最高的人形机器人，力反馈关节控制在工业场景下有独特优势，是被学术论文引用最多的国产机器人之一。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;小米&lt;/strong&gt;则宣布将在五年内把人形机器人部署到自己的所有工厂——这不是 PPT，这是供应链集成的承诺。&lt;/p&gt;
&lt;p&gt;和这些对手相比，特斯拉 Optimus 的优势和劣势都很清晰：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/tesla-model-sx-optimus-robot-factory-2026/imgs/illustration-competition.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/tesla-model-sx-optimus-robot-factory-2026/imgs/illustration-competition_hu_b7a9d70a4a3d6621.png 480w, https://blog.ccino.org/p/tesla-model-sx-optimus-robot-factory-2026/imgs/illustration-competition_hu_e86eb94d93a133c.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;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;&lt;/th&gt;
					&lt;th&gt;特斯拉 Optimus Gen 3&lt;/th&gt;
					&lt;th&gt;宇树 G1/H2&lt;/th&gt;
					&lt;th&gt;傅利叶 GR-2&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,000–25,000&lt;/td&gt;
					&lt;td&gt;$16,000–90,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;手部 22 DOF&lt;/td&gt;
					&lt;td&gt;31 DOF&lt;/td&gt;
					&lt;td&gt;53 DOF&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;量产状态&lt;/td&gt;
					&lt;td&gt;2026 下半年启动&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;FSD 数据 + 垂直整合&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;p&gt;十年间，特斯拉的汽车积累了数十亿公里的真实世界驾驶数据，训练出了 FSD 的神经网络。同样的逻辑，如果 1000 台 Optimus 在工厂里持续工作，它们产生的行为数据会被反哺到下一代模型——这是宇树和傅利叶目前没有的飞轮。&lt;/p&gt;
&lt;p&gt;问题是，这个飞轮还没有真正转起来。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;为什么是现在&#34;&gt;为什么是现在
&lt;/h2&gt;&lt;p&gt;一个合理的问题：Model S 卖了 14 年，为什么偏偏现在停？&lt;/p&gt;
&lt;p&gt;有几个时间线上的压力是并发的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;首先，高端电动轿车市场的天花板到了。&lt;/strong&gt; Model S 和 Model X 一直是特斯拉的利润奶牛，但销量在 2023 年后就开始持续下滑。奔驰 EQS、保时捷 Taycan、国内的小米 SU7 Ultra、极氪 001、智界 S9——这些竞争者用更低的价格、更本土化的服务，在抢特斯拉旗舰产品的饭碗。继续投产 Model S/X，边际收益越来越低。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;其次，Optimus 需要产能。&lt;/strong&gt; 外部代工并不在特斯拉的考虑范围内——马斯克一直坚持垂直整合，自己做电池、自己做芯片、自己做整车。机器人也一样，必须在自己的工厂里造。弗里蒙特是现成的重资产，改造比新建更快。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;最后，时间窗口。&lt;/strong&gt; 具身 AI 的竞争进入了加速期。英伟达在今年的 GTC 大会上宣布把 Blackwell 算力向人形机器人行业全面开放，谷歌、Meta、亚马逊都在加码机器人研究，中国政府把人形机器人列入了战略新兴产业。&lt;strong&gt;先量产、先积累数据、先建立部署网络的公司，会获得几乎不可逆的领先优势。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;停掉 Model S/X，是为了给机器人腾地方——字面意义上的腾地方。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;年产-100-万台可能吗&#34;&gt;年产 100 万台，可能吗
&lt;/h2&gt;&lt;p&gt;说实话：&lt;strong&gt;在 2026 年实现 100 万台年产能，几乎不可能。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;但这不是重点。&lt;/p&gt;
&lt;p&gt;特斯拉说 100 万台的时候，它的逻辑和当年说&amp;quot;Model 3 周产 5000 辆&amp;quot;是一样的——先定一个激进的目标，然后把整个供应链、工程团队、生产系统推到极限去逼近它。最后真正实现的数字可能是 5 万、10 万，但这个过程本身会产生巨大的工程知识积累。&lt;/p&gt;
&lt;p&gt;更关键的是，&lt;strong&gt;机器人行业的竞争不只是卖出多少台，而是谁先部署了足够多的机器人、积累了足够多的数据。&lt;/strong&gt; 如果特斯拉 2026 年底在自己的工厂里运行 5 万台 Optimus，2027 年卖出 10 万台，它就已经建立了别人无法复制的数据壁垒。&lt;/p&gt;
&lt;p&gt;从这个角度看，停产 Model S/X 不是一个财务决策，而是一个战略押注：&lt;strong&gt;特斯拉的下一个十年，不靠卖汽车，靠卖机器人。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;至于这个押注对不对，要看 2027 年。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;最后&#34;&gt;最后
&lt;/h2&gt;&lt;p&gt;Model X 的鹰翼门，大概是过去十年里最有辨识度的汽车设计之一。&lt;/p&gt;
&lt;p&gt;我第一次看到它的时候，觉得马斯克在玩概念。后来它真的量产了，卖了十年，成了科技感的符号。&lt;/p&gt;
&lt;p&gt;现在它停产了，生产线要变成人形机器人工厂。&lt;/p&gt;
&lt;p&gt;也许十年后，我们回头看 Optimus，会像今天回头看 Model X 鹰翼门一样——当初觉得在玩概念，后来发现它真的改变了什么。&lt;/p&gt;
&lt;p&gt;也可能不会。&lt;/p&gt;
&lt;p&gt;但这一次，马斯克已经不是在 PPT 上画饼了。他把流水线拆了。&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://36kr.com/p/3816942732133510&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;36kr：特斯拉 Model S/X 停产，产线转向机器人，规划年产能达 100 万台&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.cnbc.com/2026/01/28/tesla-ending-model-s-x-production.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CNBC: Elon Musk says Tesla ending Models S and X production, converting Fremont factory lines to make Optimus robots&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.globalchinaev.com/post/tesla-to-discontinue-model-s-and-x-shifts-fremont-to-optimus-humanoid-robots&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Global China EV: Tesla to discontinue Model S and X, shifts Fremont to Optimus humanoid robots&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://humanoid.guide/product/optimus-gen-3/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Humanoid.guide: Tesla Optimus Gen 3 Specs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.ccino.org/unitree-robot-breaks-human-record-2026/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;宇树科技跑赢人类：这一天比所有人预想的早&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>OpenAI 模型独自推翻了一道 80 年数学难题——这次不是辅助，是自主</title>
        <link>https://blog.ccino.org/p/openai-ai-disproves-erdos-conjecture-math-2026/</link>
        <pubDate>Thu, 21 May 2026 08:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/openai-ai-disproves-erdos-conjecture-math-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/openai-ai-disproves-erdos-conjecture-math-2026/imgs/cover.png" alt="Featured image of post OpenAI 模型独自推翻了一道 80 年数学难题——这次不是辅助，是自主" /&gt;&lt;p&gt;2026 年 5 月 20 日，OpenAI 联合创始人 Greg Brockman 在 X 上发了一条公告，语气平静得有些反常——&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;An OpenAI model has achieved a major breakthrough in mathematics, by disproving a central conjecture in discrete geometry that was first posed by Paul Erdős in 1946. This is the first time AI has autonomously solved a prominent open problem central to a field of mathematics.&amp;rdquo;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;这句话里有几个词值得停下来读一遍：&lt;strong&gt;autonomously（自主地）&lt;/strong&gt;，&lt;strong&gt;prominent open problem（核心开放问题）&lt;/strong&gt;，&lt;strong&gt;first time（首次）&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;它们不是营销语言。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;erdős-和那道困了数学界-80-年的题&#34;&gt;Erdős 和那道困了数学界 80 年的题
&lt;/h2&gt;&lt;p&gt;Paul Erdős 是 20 世纪最多产的数学家之一，一生发表论文超过 1500 篇，合作者遍布全球，多到数学界专门发明了&amp;quot;Erdős 数&amp;quot;来追踪与他的合作距离。他有个习惯：把自己解不出来的问题整理成列表，标上悬赏金额，向全世界征解。&lt;/p&gt;
&lt;p&gt;这道题就是他在 1946 年提出的：&lt;strong&gt;平面单位距离问题（Planar Unit Distance Problem）&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;题目本身并不难懂。想象平面上摆着 n 个点，随便你怎么放。问：这 n 个点里，最多可以有多少对点的距离恰好等于 1？&lt;/p&gt;
&lt;p&gt;直觉上，如果你把点摆成正方形网格，相邻的点距离是 1，斜对角是 √2——单位距离的点对大约和 n 成正比。Erdős 猜想这就是上界的数量级，更精确地写成 n^(1+o(1))，意思是增长速度&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/openai-ai-disproves-erdos-conjecture-math-2026/imgs/unit-distance-geometry.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/openai-ai-disproves-erdos-conjecture-math-2026/imgs/unit-distance-geometry_hu_b45904ef738df33b.png 480w, https://blog.ccino.org/p/openai-ai-disproves-erdos-conjecture-math-2026/imgs/unit-distance-geometry_hu_3b0fd64ca18c2815.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;平面单位距离问题：20个点之间恰好等于1的距离对用蓝色连线标出，正六边形排布能使单位距离对数量最大化&#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;接下来的 80 年里，无数数学家试图证明这个上界，或者找到突破它的构型。Fields 奖得主 Terry Tao、Jean Bourgain 都曾在这个问题上留下过工作，但每次进展都是微小的参数改进，没有人能把它彻底推翻，也没有人能彻底证明它。&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;2026 年 5 月，OpenAI 把这个问题交给了自己的一个内部通用推理模型。&lt;/p&gt;
&lt;p&gt;没有专门的数学框架，没有人工设计的推理链，没有逐步的人类引导——只有一张问题陈述。&lt;/p&gt;
&lt;p&gt;模型返回了一个证明。&lt;/p&gt;
&lt;p&gt;证明的核心结论是：存在一种 n 个点的平面配置，使得恰好 1 单位距离的点对数量至少达到 n^(1+δ)，其中 δ 是某个固定的正指数。&lt;/p&gt;
&lt;p&gt;这推翻了 Erdős 的猜想。不是改进了上界，是从根本上证明了 Erdős 想象中的&amp;quot;接近线性&amp;quot;是错的，单位距离对的数量可以超越那个边界。&lt;/p&gt;
&lt;p&gt;证明的方法是把&lt;strong&gt;代数数论&lt;/strong&gt;和&lt;strong&gt;具体几何问题&lt;/strong&gt;连接起来，把平面点集的距离问题转化成了数论中某种代数结构的计数问题。OpenAI 随后邀请了一组外部数学家独立验证，对方确认证明是正确的，并撰写了配套的解读论文，专门解释证明的背景和论证结构。&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;strong&gt;AlphaGeometry（2024）&lt;/strong&gt; 能在奥数几何题上达到金牌水平，但它用的是神经网络加形式化符号系统的混合架构，整套推理框架是人工设计的，AI 在其中负责填充具体步骤。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AlphaProof（2024）&lt;/strong&gt; 可以证明奥数中的竞赛题，也是在形式化证明语言（Lean）的框架里工作，问题被提前&amp;quot;翻译&amp;quot;成机器可操作的格式，证明过程由人类研究者选定。&lt;/p&gt;
&lt;p&gt;它们很强，但有一个共同特点：&lt;strong&gt;人类的介入不只是提问，而是设计了整套工作框架&lt;/strong&gt;。AI 在其中像一个被放进跑道里的赛马，跑得很快，但跑道是人铺的。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/openai-ai-disproves-erdos-conjecture-math-2026/imgs/ai-math-autonomy-comparison.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/openai-ai-disproves-erdos-conjecture-math-2026/imgs/ai-math-autonomy-comparison_hu_cd71933ef580f97d.png 480w, https://blog.ccino.org/p/openai-ai-disproves-erdos-conjecture-math-2026/imgs/ai-math-autonomy-comparison_hu_eff4805ff95efe7a.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;左侧：AlphaGeometry/AlphaProof 需要人工设计框架&amp;#43;形式化语言&amp;#43;分步引导；右侧：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 模型不同。&lt;/p&gt;
&lt;p&gt;它接收的是一段文字描述的数学问题，没有翻译成形式语言，没有人告诉它从哪个方向入手，也没有提供任何中间步骤的提示。它产出的是一段完整的证明，然后交给人类验证。&lt;/p&gt;
&lt;p&gt;HN 上一条高赞评论说得很到位：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&amp;ldquo;Either &amp;lsquo;recombining existing material&amp;rsquo; is not disqualifying, or a lot of Fields Medals need to be returned.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;（&amp;ldquo;要么&amp;rsquo;重组已有材料&amp;rsquo;本身不是一种贬低，要么得把很多 Fields 奖奖章收回去。&amp;quot;）&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;Fields 奖得主 Tim Gowers 在看到这个结果后公开表示，这个结果引出了&amp;quot;真正有趣且微妙的问题&amp;rdquo;——他的措辞是克制的，但 Gowers 向来是这种风格。他没有说&amp;quot;AI 成了数学家&amp;quot;，也没有说&amp;quot;这只是个工具&amp;quot;。&lt;/p&gt;
&lt;p&gt;这种克制本身说明了一些事情。&lt;/p&gt;
&lt;p&gt;数学界的主流分歧大致是这样的：支持者认为，AI 在这道题上展示了跨域知识连接能力，把代数数论和平面几何拉到同一个框架里，这本身不是一件容易的事，哪怕对人类数学家也不是。反对者说，现有模型是&amp;quot;插值机器&amp;quot;，只能在训练数据的隐含模式里打转，难以实现真正的范式突破，比如微积分或广义相对论那种级别的飞跃。&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;p&gt;先说意义。&lt;/p&gt;
&lt;p&gt;这不是 AI 替代数学家的信号，但它确实是一个节点：&lt;strong&gt;AI 作为独立提出数学论证的主体，而非单纯的辅助计算工具，已经在这道题上成立了&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;对科研工作流来说，这个节点的含义比听起来更具体。如果一个通用推理模型可以接到开放问题、自主探索、产出可验证的证明，那么它在科研中的位置就不再只是&amp;quot;帮我查文献&amp;quot;&amp;ldquo;帮我写代码&amp;rdquo;，它开始具备了参与&amp;quot;想问题&amp;quot;本身的可能。&lt;/p&gt;
&lt;p&gt;再说边界。&lt;/p&gt;
&lt;p&gt;这次的问题，尽管开放了 80 年，仍然属于一类有明确陈述、有清晰验证标准的数学问题。AI 的证明是在一个相对封闭的问题空间里完成的，所用的工具（代数数论、组合几何）都是已知框架。&lt;/p&gt;
&lt;p&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;p&gt;有一个细节我觉得值得记下来。&lt;/p&gt;
&lt;p&gt;OpenAI 在宣布这个结果的时候，没有大张旗鼓地说&amp;quot;我们的模型解决了 Erdős 问题&amp;quot;。Greg Brockman 的那条推文很简洁，用词很谨慎——&amp;ldquo;disproved a central conjecture&amp;rdquo;，而不是&amp;quot;solved mathematics&amp;quot;。&lt;/p&gt;
&lt;p&gt;这种克制，和数学界的反应里那种审慎，倒是构成了某种对称。&lt;/p&gt;
&lt;p&gt;数学界通常是最不容易被热情感染的群体。如果连 Tim Gowers 都说这个结果引出了&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://openai.com/index/model-disproves-discrete-geometry-conjecture/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI 官方博文：An OpenAI model has disproved a central conjecture in discrete geometry&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://news.ycombinator.com/item?id=48212493&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hacker News 讨论（#1 热帖，640 分）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.startuphub.ai/ai-news/artificial-intelligence/2026/openai-model-cracks-geometry-s-toughest-nut&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;StartupHub.ai 分析报道&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/gdb/status/2057182650784452925&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Greg Brockman X 公告&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>一个文件，140K Stars：Karpathy 观察到的 LLM 编程陷阱被做成了 CLAUDE.md</title>
        <link>https://blog.ccino.org/p/karpathy-claude-md-140k-stars-2026/</link>
        <pubDate>Thu, 21 May 2026 08:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/karpathy-claude-md-140k-stars-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/karpathy-claude-md-140k-stars-2026/imgs/cover.png" alt="Featured image of post 一个文件，140K Stars：Karpathy 观察到的 LLM 编程陷阱被做成了 CLAUDE.md" /&gt;&lt;p&gt;GitHub Trending 今天排第一的项目叫 &lt;code&gt;multica-ai/andrej-karpathy-skills&lt;/code&gt;，截至今日已有 140,750 个 Star，昨天单日新增 2,679 个。&lt;/p&gt;
&lt;p&gt;它的全部内容就是一个文件：&lt;code&gt;CLAUDE.md&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;项目描述说得很直白：&amp;ldquo;A single CLAUDE.md file to improve Claude Code behavior, derived from Andrej Karpathy&amp;rsquo;s observations on LLM coding pitfalls.&amp;quot;（一个改善 Claude Code 行为的单文件配置，提炼自 Andrej Karpathy 对 LLM 编程陷阱的观察。）&lt;/p&gt;
&lt;p&gt;这件事有两层意思值得分开看。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;claudemd-是什么&#34;&gt;CLAUDE.md 是什么
&lt;/h2&gt;&lt;p&gt;如果你用过 Claude Code，可能见过项目根目录里的 &lt;code&gt;CLAUDE.md&lt;/code&gt; 文件。Claude Code 在启动时会自动读取这个文件，把里面的内容当成对话上下文的一部分——相当于在每次对话开始前，先给 AI 念一份&amp;quot;工作守则&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;它不是提示词工程里那种一次性的 system prompt，而是持久的项目级行为配置。你在里面写什么，Claude Code 在这个项目里就倾向于怎么工作。&lt;/p&gt;
&lt;p&gt;这种机制存在已经有一段时间了，但真正被广泛使用是在 Claude Code 从邀请制转向公开测试之后。大量开发者开始摸索：写什么样的 CLAUDE.md，能让 AI 编程的结果更可控？&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/karpathy-claude-md-140k-stars-2026/imgs/claude-md-workflow.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/karpathy-claude-md-140k-stars-2026/imgs/claude-md-workflow_hu_3055126ff4f24a56.png 480w, https://blog.ccino.org/p/karpathy-claude-md-140k-stars-2026/imgs/claude-md-workflow_hu_41a41fef6d791a86.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;CLAUDE.md 被 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;code&gt;andrej-karpathy-skills&lt;/code&gt; 给了一个答案。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;文件里写了什么&#34;&gt;文件里写了什么
&lt;/h2&gt;&lt;p&gt;这个 CLAUDE.md 的核心是四条规则。每条规则背后，都对应一类已经被反复观察到的 LLM 编程失误。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Think Before Coding（编码前先想清楚）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;规则原文：&amp;ldquo;State your assumptions explicitly. If uncertain, ask.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Karpathy 曾多次指出，LLM 最容易犯的错误之一是&amp;quot;沉默地做出假设&amp;quot;。你问的是 A，AI 理解成了 A&amp;rsquo;，然后在错误理解的基础上写出完整的代码，等你发现的时候已经走偏了很远。这条规则的意图是强制 AI 在开始工作前把自己的理解说出来，而不是直接动手。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Simplicity First（最简原则）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Minimum code that solves the problem. Nothing speculative.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;这是另一个经典陷阱：AI 会自动补全你没要求的功能。你让它写一个读取文件的函数，它顺手加了错误处理、日志记录、配置项、类型注解……代码变长了，但你需要的只是那个核心逻辑。这条规则要求：只写被要求的，不写&amp;quot;可能有用&amp;quot;的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Surgical Changes（外科手术式修改）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Touch only what you must. Clean up only your own mess.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;AI 在修改代码时有重构冲动。让它改一个 bug，它可能顺带把整个函数的命名风格、缩进格式全都重写了——哪怕你的原始风格没有问题。这条规则限制改动范围：只碰需要改的那行，不把周边代码一起&amp;quot;顺手优化&amp;quot;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Goal-Driven Execution（目标驱动执行）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Define success criteria. Loop until verified.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;这条解决的是验证问题。很多时候 AI 写完代码就算完事，但&amp;quot;写完&amp;quot;不等于&amp;quot;正确&amp;quot;。这条规则要求把任务转化成可验证的目标，写完后要有确认步骤，而不是生成代码后直接交给你。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/karpathy-claude-md-140k-stars-2026/imgs/four-rules-cards.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/karpathy-claude-md-140k-stars-2026/imgs/four-rules-cards_hu_de07ddaefaf11206.png 480w, https://blog.ccino.org/p/karpathy-claude-md-140k-stars-2026/imgs/four-rules-cards_hu_f18962368dc26298.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;为什么-140k-人觉得值得-star&#34;&gt;为什么 140K 人觉得值得 Star
&lt;/h2&gt;&lt;p&gt;这个数字的规模有些反直觉。一个 CLAUDE.md 文件，不涉及任何框架、不提供任何可安装的包，凭什么能超过很多有实质功能的工具库？&lt;/p&gt;
&lt;p&gt;原因大概有两个。&lt;/p&gt;
&lt;p&gt;第一个是时机。Karpathy 在这个项目走红的同一周刚刚加入 Anthropic，他本人也是这个工具的潜在用户和观察者。Claude Code 的活跃用户群此刻正处于某种共鸣状态：大家都在摸索 CLAUDE.md 怎么写，突然出现一份据说来自 LLM 领域最有影响力的研究者的观察总结，传播速度自然快。&lt;/p&gt;
&lt;p&gt;第二个是可操作性。这份文件没有任何使用门槛。你不需要理解背后的原理，只需要把文件复制到你的项目根目录，Claude Code 下次启动时就会自动读取。对于很多人来说，它是&amp;quot;我在 Claude Code 上遇到的问题有了一个现成的解决方案&amp;quot;，而不是&amp;quot;我需要学一套新方法&amp;quot;。&lt;/p&gt;
&lt;p&gt;HackerNews 上有个评论说得比较直接：&amp;ldquo;It&amp;rsquo;s basically a distilled version of &amp;lsquo;don&amp;rsquo;t let the LLM do more than you asked.&amp;rsquo;&amp;quot;（这基本上是&amp;quot;别让 LLM 做超出你要求的事&amp;quot;的提炼版。）&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;怎么用&#34;&gt;怎么用
&lt;/h2&gt;&lt;p&gt;最直接的用法：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打开 &lt;a class=&#34;link&#34; href=&#34;https://github.com/multica-ai/andrej-karpathy-skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub 项目页&lt;/a&gt;，找到 &lt;code&gt;CLAUDE.md&lt;/code&gt; 文件&lt;/li&gt;
&lt;li&gt;复制全部内容&lt;/li&gt;
&lt;li&gt;在你的项目根目录创建 &lt;code&gt;CLAUDE.md&lt;/code&gt;，粘贴进去&lt;/li&gt;
&lt;li&gt;重启 Claude Code（或开始新对话）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果你的项目根目录已经有 &lt;code&gt;CLAUDE.md&lt;/code&gt;，可以把这四条规则追加进去，而不是完全替换——CLAUDE.md 支持叠加，你可以在里面同时写项目特定的约定（比如&amp;quot;这个项目用 TypeScript strict mode，不要用 any&amp;rdquo;）和通用的 LLM 行为规则。&lt;/p&gt;
&lt;p&gt;Claude Code 还支持 &lt;code&gt;~/.claude/CLAUDE.md&lt;/code&gt;（用户级配置），写在这里的规则对所有项目生效。如果你认同这四条规则的逻辑，可以把它放到用户级配置，不用在每个项目里重复复制。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;claudemd-的边界&#34;&gt;CLAUDE.md 的边界
&lt;/h2&gt;&lt;p&gt;这个文件本身的传播，也暴露了一个开放问题：CLAUDE.md 对 LLM 行为的影响有多稳定？&lt;/p&gt;
&lt;p&gt;写进配置文件的规则不像硬编码的系统提示那样必然生效。AI 在处理复杂任务时会有上下文优先级的权衡，如果任务要求和规则约束产生冲突，规则不一定总是赢。这个项目的描述里也承认了这一点：&amp;ldquo;these guidelines bias toward caution over speed, recognizing that trivial tasks may warrant less rigor.&amp;quot;（这些规则偏向谨慎而非速度，对于简单任务可能显得过于严格。）&lt;/p&gt;
&lt;p&gt;换句话说，这四条规则是观察性的总结，不是铁板钉钉的保证。它减少了 LLM 编程里的某些常见失误，但没有消除失误本身。&lt;/p&gt;
&lt;p&gt;真正有价值的，大概不只是这个文件的内容，而是它所代表的思路：你可以用 CLAUDE.md 给 AI 编程工具建立项目级的行为边界，这个机制本身值得每个认真用 Claude Code 的人花时间研究。&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://github.com/multica-ai/andrej-karpathy-skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub 项目：multica-ai/andrej-karpathy-skills&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/trending&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub Trending（2026-05-21）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/karpathy/status/2056753169888334312&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Karpathy 加入 Anthropic 公告（X）&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>OpenAI 接入 SynthID：AI 内容溯源从厂商自证走向公共信任层</title>
        <link>https://blog.ccino.org/p/openai-synthid-content-provenance/</link>
        <pubDate>Wed, 20 May 2026 09:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/openai-synthid-content-provenance/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/openai-synthid-content-provenance/imgs/cover.png" alt="Featured image of post OpenAI 接入 SynthID：AI 内容溯源从厂商自证走向公共信任层" /&gt;&lt;p&gt;OpenAI 在 5 月 19 日发了一篇关于内容溯源的更新。它准备在 ChatGPT、Codex 和 OpenAI API 生成的图片里加入 Google DeepMind 的 SynthID 隐形水印，同时继续支持 C2PA Content Credentials，并开放一个早期验证工具，让用户上传图片后检查里面是否带有 OpenAI 的来源信号。&lt;/p&gt;
&lt;p&gt;单看功能，这像是一条安全更新。AI 图越来越多，平台加水印、做验证，似乎是顺理成章的事。&lt;/p&gt;
&lt;p&gt;但这条新闻有个细节值得单独拎出来看：OpenAI 没有只推自己的识别体系，而是接入了 Google 的 SynthID。&lt;/p&gt;
&lt;p&gt;这意味着内容溯源正在从“各家公司自己证明自己”往外走一步。过去两年，AI 生成内容识别很像一堆孤岛：A 公司说自己的模型会加标记，B 平台说自己能检测，C 工具说自己能验证。问题是，一张图只要离开生成平台，就会进入社交网络、聊天软件、截图、转存、压缩、二次编辑的混合环境。单个平台的承诺，很难在这条传播链里一直有效。&lt;/p&gt;
&lt;p&gt;OpenAI 这次接入 SynthID，重要性就在这里。它不是多了一个“水印按钮”，而是在承认：AI 内容的信任问题，不能靠某一家厂商独自解决。&lt;/p&gt;
&lt;h2 id=&#34;openai-这次做了哪几件事&#34;&gt;OpenAI 这次做了哪几件事
&lt;/h2&gt;&lt;p&gt;OpenAI 官方文章里主要讲了三层。&lt;/p&gt;
&lt;p&gt;第一层是 C2PA。OpenAI 宣布自己成为 C2PA Conforming Generator Product。C2PA 全称是 Coalition for Content Provenance and Authenticity，是一套跨行业的内容来源标准。你可以把它理解成给媒体文件附上一份带签名的“来源说明”：这张图来自哪里，被什么工具生成或编辑过，相关信息由谁签名。&lt;/p&gt;
&lt;p&gt;这种信息对新闻机构、内容平台和普通用户都有用。它比“AI 生成”四个字更细，因为它能提供上下文，而不是只给一个粗糙标签。&lt;/p&gt;
&lt;p&gt;第二层是 SynthID。OpenAI 会给图片加入 Google DeepMind 的隐形水印。它不是角落里肉眼可见的 logo，而是嵌入在图像里的检测信号。OpenAI 说，这会从 ChatGPT、Codex 和 OpenAI API 生成的图片开始。&lt;/p&gt;
&lt;p&gt;第三层是验证工具。用户可以上传图片，工具会检查里面是否有 Content Credentials、SynthID 这类来源信号。如果检测到了，它可以提示这张图是否来自 OpenAI 的生成系统。&lt;/p&gt;
&lt;p&gt;这三层放在一起，才是这次更新的重点：元数据提供丰富信息，隐形水印提高耐传播性，验证工具让普通人有机会读懂这些信号。&lt;/p&gt;
&lt;h2 id=&#34;元数据很好但它太容易丢&#34;&gt;元数据很好，但它太容易丢
&lt;/h2&gt;&lt;p&gt;C2PA 这类元数据方案很有价值，但它有一个天然弱点：它依赖文件携带信息。&lt;/p&gt;
&lt;p&gt;现实传播环境没那么温柔。一张图从生成工具到用户眼前，可能经历聊天软件压缩、社交平台重编码、内容管理系统裁剪、编辑软件导出、截图再上传。任何一步都可能把元数据弄丢。&lt;/p&gt;
&lt;p&gt;这不是 C2PA 做得不好，而是互联网一直就是这样运转的。很多平台过去并不关心保留图片元数据，有些还会主动清理元数据，以减少文件体积或规避隐私问题。&lt;/p&gt;
&lt;p&gt;所以，只靠元数据不够。&lt;/p&gt;
&lt;p&gt;SynthID 这类隐形水印的价值，在于它更贴近图像本身。它不一定能提供 C2PA 那么丰富的信息，但它可能在截图、压缩、尺寸变化之后仍然留下可检测的痕迹。&lt;/p&gt;
&lt;p&gt;一个不太精确但好懂的类比是：C2PA 像随文件携带的履历表，SynthID 像藏在图像纹理里的指纹。履历表信息多，但容易在转手时丢失；指纹信息少，却更可能随着图像一起留下来。&lt;/p&gt;
&lt;p&gt;OpenAI 这次没有说用 SynthID 替代 C2PA，而是把它们叠在一起。这个方向是合理的。AI 内容的传播路径太复杂，单一技术很难扛住所有场景。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/openai-synthid-content-provenance/imgs/two-layer-provenance.png&#34;
	width=&#34;1536&#34;
	height=&#34;864&#34;
	srcset=&#34;https://blog.ccino.org/p/openai-synthid-content-provenance/imgs/two-layer-provenance_hu_62b74a1bf59919.png 480w, https://blog.ccino.org/p/openai-synthid-content-provenance/imgs/two-layer-provenance_hu_b129cd5cc4e0b59e.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;C2PA 元数据与 SynthID 隐形水印共同构成内容溯源的两层信号&#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;为什么用-google-的水印比水印本身更有意思&#34;&gt;为什么“用 Google 的水印”比水印本身更有意思
&lt;/h2&gt;&lt;p&gt;OpenAI 完全可以只做一套自己的水印系统，然后告诉用户：OpenAI 生成的图片，可以用 OpenAI 工具验证。&lt;/p&gt;
&lt;p&gt;这当然也有用，但它解决的是自家生态里的问题。&lt;/p&gt;
&lt;p&gt;现在它选择接入 Google DeepMind 的 SynthID，意味就不一样了。至少在图片溯源这件事上，两个最重要的 AI 阵营之间出现了基础设施层面的协作。&lt;/p&gt;
&lt;p&gt;这对用户更有意义。因为用户最终看到的不是“OpenAI 生态内的一张图”，而是一张已经经过多轮传播的图片。它可能由 ChatGPT 生成，被发到 X，又被搬到小红书，再被公众号引用，最后出现在某个群聊截图里。看到它的人通常只关心两个问题：这是不是 AI 生成的？它从哪里来？&lt;/p&gt;
&lt;p&gt;如果每家公司都用一套完全不同的识别体系，验证就会变得很笨重。平台要兼容很多种信号，用户也要记住很多个工具。A 家内容用 A 家工具查，B 家内容用 B 家工具查，这很难成为互联网级别的信任机制。&lt;/p&gt;
&lt;p&gt;OpenAI 接入 SynthID 的信号是：内容溯源不应该只是某个产品的卖点，它更像是一层公共协议。&lt;/p&gt;
&lt;p&gt;这有点像早期互联网里的 HTTPS、邮件认证、OAuth。用户最终需要的不是“某家公司说自己可信”，而是一套跨平台都能读取、传递和验证的机制。&lt;/p&gt;
&lt;h2 id=&#34;验证工具不是真假裁判&#34;&gt;验证工具不是“真假裁判”
&lt;/h2&gt;&lt;p&gt;OpenAI 这次也预览了一个公开验证工具。这个工具可以检查上传图片里是否存在 OpenAI 的来源信号，包括 Content Credentials 和 SynthID。&lt;/p&gt;
&lt;p&gt;但这里要特别小心一个误解：这种工具不是“真假裁判”。&lt;/p&gt;
&lt;p&gt;如果工具检测到信号，它能告诉你：这张图很可能来自 OpenAI 的生成系统，或者至少带有 OpenAI 的来源标记。这个结论有用。&lt;/p&gt;
&lt;p&gt;如果工具没检测到信号，它不能证明这张图一定不是 AI 生成的。信号可能被剥离，图片可能来自其他模型，也可能经过了工具目前无法处理的编辑流程。OpenAI 官方也写得很谨慎：没有检测到元数据或水印时，工具不会直接下结论。&lt;/p&gt;
&lt;p&gt;这个边界必须讲清楚。否则内容溯源工具很容易被误用成另一种“鉴定神器”。&lt;/p&gt;
&lt;p&gt;它能回答的是“有没有找到来源线索”，不是“图里发生的事是不是真的”。一张由 OpenAI 生成的图片，可能描述的是虚构场景；一张没有水印的照片，也可能是真实拍摄。来源验证和事实核查是两回事。&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;互联网内容不是放在文件柜里的原件，而是一条不断复制、压缩、裁剪、截图、转码的流水线。图片经过几轮传播后，原始文件早就不存在了。你看到的可能只是某个截图的截图，或者被平台重编码后的版本。&lt;/p&gt;
&lt;p&gt;如果内容溯源要真正有用，就不能只靠 OpenAI 和 Google 在生成端努力。社交平台、媒体系统、图库、浏览器、操作系统、相机厂商、编辑软件，都要参与进来。至少，它们不能随手把来源信号全部抹掉；更进一步，它们还要能读懂这些信号，并用用户能理解的方式展示出来。&lt;/p&gt;
&lt;p&gt;这也是 C2PA 这类开放标准的价值。它试图让不同工具理解同一种来源信息，而不是让每家公司各自发明一套格式。SynthID 的价值也类似：如果越来越多模型和平台支持可检测的隐形信号，验证工具就不必只服务于某一家厂商。&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-synthid-content-provenance/imgs/propagation-chain.png&#34;
	width=&#34;1376&#34;
	height=&#34;768&#34;
	srcset=&#34;https://blog.ccino.org/p/openai-synthid-content-provenance/imgs/propagation-chain_hu_a87bd32fea168528.png 480w, https://blog.ccino.org/p/openai-synthid-content-provenance/imgs/propagation-chain_hu_62318d45e26dbba8.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;如果你只是偶尔用 ChatGPT 生成几张配图，这次更新可能看起来离你很远。但它会慢慢改变创作者和平台之间的关系。&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;p&gt;普通用户也需要调整预期。水印不是“真假标签”，而是“来源线索”。看到“由 OpenAI 生成”，不等于图中事件真实；看不到水印，也不等于图一定是真的。&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;C2PA 至少提供了一个跨行业协商的框架，避免每家公司都做一套黑盒规则。但开放标准本身不自动带来公平。接入成本高不高，验证过程透明不透明，开源社区能不能参与，平台愿不愿意保留和展示信号，都会影响它最后长成什么样。&lt;/p&gt;
&lt;p&gt;OpenAI 接入 SynthID 是一个积极信号，因为它说明竞争对手之间愿意在内容来源问题上共享一部分底层能力。但下一步更关键：其他模型公司会不会接入？社交平台会不会展示？浏览器和操作系统会不会原生支持？开源模型有没有低成本的参与方式？&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;最底层是生成端标记。模型或应用在内容生成时写入 C2PA、SynthID 或其他来源信号，解决“来源信息从哪里开始”的问题。&lt;/p&gt;
&lt;p&gt;中间层是传播端保留。社交平台、CMS、编辑软件、浏览器尽量保留、读取和传递这些信号，解决“来源信息能不能活过传播链”的问题。&lt;/p&gt;
&lt;p&gt;最上层是用户端解释。验证工具、平台提示、浏览器 UI 把复杂信号翻译成人能理解的结果：检测到了什么，没检测到什么，这个结果意味着什么，又不意味着什么。&lt;/p&gt;
&lt;p&gt;OpenAI 这次主要做了底层和上层：它生成信号，也提供验证工具。但中间层仍然取决于更大的生态。&lt;/p&gt;
&lt;p&gt;所以，这条新闻不该只被理解为“OpenAI 给图片加水印”。更准确地说，它是 AI 内容来源系统开始跨公司拼接的一步。&lt;/p&gt;
&lt;h2 id=&#34;结尾&#34;&gt;结尾
&lt;/h2&gt;&lt;p&gt;OpenAI 接入 Google SynthID，不会让 AI 假图问题立刻消失，也不代表以后每张 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;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/advancing-content-provenance/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI：Advancing content provenance for a safer, more transparent AI ecosystem&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://deepmind.google/models/synthid/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google DeepMind：SynthID&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://c2pa.org/conformance/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;C2PA Conformance&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/OpenAI/status/2056793648571011232&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI 官方推文&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <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 要单独算钱了？真正变化的是“自动化 Agent”不再吃订阅大锅饭</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 要单独算钱了？真正变化的是“自动化 Agent”不再吃订阅大锅饭" /&gt;&lt;p&gt;这篇先纠个错。&lt;/p&gt;
&lt;p&gt;我之前把这件事说得太宽，容易让人以为 Anthropic 是要把 &lt;strong&gt;Claude Code 整个从订阅里拆出去&lt;/strong&gt;，或者以后所有 Claude Code 都要单独付钱。&lt;/p&gt;
&lt;p&gt;核对原文后，这个说法不够准确。&lt;/p&gt;
&lt;p&gt;更准确的版本是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;你坐在终端或 IDE 前，手动用 Claude Code 改代码，这部分还是原来的订阅逻辑。真正被拆出来的，是那些无人值守、程序化调用 Claude 的用法。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;也就是这几类：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude Agent SDK&lt;/li&gt;
&lt;li&gt;&lt;code&gt;claude -p&lt;/code&gt; 这种 headless 命令&lt;/li&gt;
&lt;li&gt;Claude Code GitHub Actions&lt;/li&gt;
&lt;li&gt;通过 Agent SDK 接入 Claude 的第三方 Agent 应用&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以，这不是一句“Claude Code 要单独收费了”就能概括的事。&lt;/p&gt;
&lt;p&gt;更像是 Anthropic 开始把两种使用方式分开算账：&lt;/p&gt;
&lt;p&gt;一种是人坐在电脑前用 Claude。&lt;/p&gt;
&lt;p&gt;另一种是程序、CI、脚本、Agent 在后台替你调用 Claude。&lt;/p&gt;
&lt;p&gt;这两种以前混在订阅里，现在开始被拆开。&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;h2 id=&#34;先别把两件事混在一起&#34;&gt;先别把两件事混在一起
&lt;/h2&gt;&lt;p&gt;这里有两条线。&lt;/p&gt;
&lt;p&gt;第一条，是 4 月底那次 Pro 页面风波。&lt;/p&gt;
&lt;p&gt;当时 Ars Technica、The Register、Simon Willison 都记录过：Anthropic 的定价页一度显示 Pro 计划不再包含 Claude Code，后来又回滚。Anthropic 的增长负责人 Amol Avasare 解释说，这是一个只影响约 2% 新 prosumer 注册用户的小测试，老的 Pro / Max 用户不受影响。&lt;/p&gt;
&lt;p&gt;这条线讨论的是：Claude Code 还算不算 Pro 权益。&lt;/p&gt;
&lt;p&gt;第二条，是后来的计费池拆分。&lt;/p&gt;
&lt;p&gt;这条线讨论的不是你在终端里手动用 Claude Code，而是 Agent SDK、&lt;code&gt;claude -p&lt;/code&gt;、Claude Code GitHub Actions、第三方 Agent 应用这些自动化用法。&lt;/p&gt;
&lt;p&gt;从 6 月 15 日开始，这些自动化调用不再和 Claude.ai 聊天、交互式 Claude Code、Claude Cowork 共用原来的订阅使用池，而是进入单独的 credit pool。&lt;/p&gt;
&lt;p&gt;所以如果把第二条说成“Claude Code 被单独收费”，就会误导读者。&lt;/p&gt;
&lt;p&gt;真正该说的是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Claude Code 的自动化用法，尤其是 GitHub Actions、headless、Agent SDK 这几条路径，被单独拎出来算钱了。&lt;/strong&gt;&lt;/p&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;类型&lt;/th&gt;
					&lt;th&gt;是否走新 Agent SDK Credit Pool&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;Claude.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;交互式 Claude Code 终端会话&lt;/td&gt;
					&lt;td&gt;人手动使用&lt;/td&gt;
					&lt;td&gt;否&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Claude Code IDE 交互&lt;/td&gt;
					&lt;td&gt;人手动使用&lt;/td&gt;
					&lt;td&gt;否&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Claude Cowork&lt;/td&gt;
					&lt;td&gt;人手动使用&lt;/td&gt;
					&lt;td&gt;否&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Claude Agent SDK&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;code&gt;claude -p&lt;/code&gt; 非交互命令&lt;/td&gt;
					&lt;td&gt;自动化 / headless&lt;/td&gt;
					&lt;td&gt;是&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Claude Code GitHub Actions&lt;/td&gt;
					&lt;td&gt;自动化 / CI&lt;/td&gt;
					&lt;td&gt;是&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;第三方 Agent 通过订阅认证调用 Claude&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;这个表比“Claude Code 涨价了”更接近事实。&lt;/p&gt;
&lt;p&gt;Anthropic 不是把所有 Claude Code 都拿出去单独卖，而是在区分两类负载。&lt;/p&gt;
&lt;p&gt;你人在终端前，一步步看着 Claude 改代码，是一种用法。&lt;/p&gt;
&lt;p&gt;你把 Claude 接进 GitHub Actions、脚本、定时任务，让它自己在后台跑，是另一种用法。&lt;/p&gt;
&lt;p&gt;被重新计费的是后者。&lt;/p&gt;
&lt;h2 id=&#34;为什么-github-actions-会被盯上&#34;&gt;为什么 GitHub Actions 会被盯上？
&lt;/h2&gt;&lt;p&gt;因为它不像聊天。&lt;/p&gt;
&lt;p&gt;在终端里用 Claude Code，你通常会边看边决定下一步。Claude 也会消耗 token，但节奏还是被人控制着。&lt;/p&gt;
&lt;p&gt;GitHub Actions 不是这样。&lt;/p&gt;
&lt;p&gt;一个 PR 评论里 @claude，一条 workflow 触发，Claude 就可以在 GitHub runner 上分析代码、生成修改、开 PR、跑多轮任务。它消耗的不只是 Claude token，还有 GitHub Actions minutes。&lt;/p&gt;
&lt;p&gt;Claude Code GitHub Actions 官方文档也专门提醒了两类成本：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GitHub-hosted runners 会消耗 GitHub Actions minutes&lt;/li&gt;
&lt;li&gt;每次 Claude interaction 会根据 prompt 和 response 消耗 API tokens&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类用法的共同点是：人不一定实时盯着。&lt;/p&gt;
&lt;p&gt;Agent SDK、&lt;code&gt;claude -p&lt;/code&gt;、GitHub Actions，本质上都是把 Claude 从“聊天对象”变成“自动化执行组件”。&lt;/p&gt;
&lt;p&gt;Anthropic 要单独建 Agent SDK Credit Pool，其实就是在处理这类后台负载。&lt;/p&gt;
&lt;p&gt;这不是在针对普通 Claude Code 用户。&lt;/p&gt;
&lt;p&gt;它是在说：自动化调用不能继续和普通订阅混在一个池子里烧。&lt;/p&gt;
&lt;h2 id=&#34;credit-pool-是什么东西&#34;&gt;Credit Pool 是什么东西？
&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: right&#34;&gt;每月 Agent SDK / Autonomous Credit&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;Pro&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;$20&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Max 5x&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;$100&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Max 20x&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;$200&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Team Standard&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;$20 / seat&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Team Premium&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;$100 / seat&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这些 credit 按用户算，不能在团队里合并，也不会滚到下个月。&lt;/p&gt;
&lt;p&gt;用完以后，如果你没有开启额外 usage credits，自动化请求会停；如果开启了，就继续按标准 API 价格扣。&lt;/p&gt;
&lt;p&gt;这对 CI/CD 很关键。&lt;/p&gt;
&lt;p&gt;如果你用 Claude Code GitHub Actions 做自动 review、自动修 issue、定时报告，credit 用完后 workflow 可能直接失败。它不会因为你还有 Pro 订阅，就自动回到普通交互池里继续扣。&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;我那些无人值守的 Claude 自动化任务，接下来算哪一池钱？&lt;/strong&gt;&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;h2 id=&#34;anthropic-为什么要这么拆&#34;&gt;Anthropic 为什么要这么拆？
&lt;/h2&gt;&lt;p&gt;从用户角度看，这当然不舒服。&lt;/p&gt;
&lt;p&gt;原来一个订阅能覆盖更多东西，现在突然拆成两个池。尤其是 OpenClaw、Conductor、Zed、Jean 这类第三方 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;自动化 Agent 更像是程序启动一个任务，然后模型持续干活。&lt;/p&gt;
&lt;p&gt;第三方 Agent 还有一个问题：它们未必能像 Anthropic 自己的产品那样充分利用 prompt caching。同一个任务，如果每次都从头处理上下文，成本会高很多。&lt;/p&gt;
&lt;p&gt;TechTimes 的整理里提到，Anthropic 今年已经多次尝试处理这个问题：限制第三方工具、调整 OAuth 使用边界、禁止部分订阅凭证调用，最后又用 credit pool 的方式重新给出一条合规路径。&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;只要 Agent 能在后台跑，单个用户的计算消耗就可能远高于普通聊天用户。&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;真正需要重新算账的是这些人：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;用 Claude Code GitHub Actions 做自动 PR、自动 review、自动 issue 修复&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;claude -p&lt;/code&gt; 写脚本、跑定时任务、做 cron 自动化&lt;/li&gt;
&lt;li&gt;用 Agent SDK 把 Claude 接进 Python / TypeScript 项目&lt;/li&gt;
&lt;li&gt;用 OpenClaw、Conductor、Zed、Jean 这类第三方 Agent，并通过订阅认证调用 Claude&lt;/li&gt;
&lt;li&gt;团队里多人触发同类自动化任务，但 credit 不能池化&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这些人要关心的不是“Claude Code 还在不在 Pro 里”，而是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;每月自动化任务大概消耗多少？&lt;/li&gt;
&lt;li&gt;$20 / $100 / $200 credit 够不够？&lt;/li&gt;
&lt;li&gt;用完后要不要开启 API overage？&lt;/li&gt;
&lt;li&gt;CI/CD 失败有没有监控？&lt;/li&gt;
&lt;li&gt;团队任务是不是应该改用直接 API billing？&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果这些没想清楚，6 月 15 日之后最容易出问题的，不是你坐在电脑前突然用不了 Claude Code。&lt;/p&gt;
&lt;p&gt;更可能是某个后台 workflow 静悄悄停掉。&lt;/p&gt;
&lt;h2 id=&#34;这其实是第二次定价分水岭&#34;&gt;这其实是第二次定价分水岭
&lt;/h2&gt;&lt;p&gt;第一次分水岭，是模型访问权。&lt;/p&gt;
&lt;p&gt;免费、Pro、Max、Team，主要区别是能用多强的模型、消息额度多少、上下文和速度怎样。&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;AI Agent 也在走这条路。&lt;/p&gt;
&lt;p&gt;Claude Code GitHub Actions、Agent SDK、&lt;code&gt;claude -p&lt;/code&gt; 这些东西的出现，意味着 Claude 不再只是聊天窗口里的模型，而开始变成开发工作流里的自动化执行单元。&lt;/p&gt;
&lt;p&gt;只要它进入 CI/CD、脚本、后台任务，定价就不可能还完全按聊天产品来。&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 被整体拿出去单独收费了。&lt;/p&gt;
&lt;p&gt;更准确的标题应该是现在这个：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Claude Code 要单独算钱了？真正变化的是“自动化 Agent”不再吃订阅大锅饭。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;注意，这里的重点不是 Claude Code 本身。&lt;/p&gt;
&lt;p&gt;重点是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Claude 的自动化调用，开始从订阅权益里独立出来，按更接近 API 的方式计算成本。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;以后看 AI 编程工具价格，不能只问“这个套餐包不包含 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;还是让它在 GitHub Actions、脚本、Agent SDK 里自动跑？&lt;/p&gt;
&lt;p&gt;这几类以前被订阅制混在一起，现在 Anthropic 开始拆账了。&lt;/p&gt;
&lt;h2 id=&#34;写在最后&#34;&gt;写在最后
&lt;/h2&gt;&lt;p&gt;这次修订后，我对这件事的判断更清楚了。&lt;/p&gt;
&lt;p&gt;如果说“Claude Code 要涨价”，太粗糙，也容易误导。&lt;/p&gt;
&lt;p&gt;如果说“Claude 的自动化 Agent 用法要从交互式订阅里拆出来”，就准确多了。&lt;/p&gt;
&lt;p&gt;这不是小措辞问题。&lt;/p&gt;
&lt;p&gt;交互式 Claude Code 和 Claude Code GitHub Actions，是两种完全不同的成本结构。&lt;/p&gt;
&lt;p&gt;前者是人机协作。&lt;/p&gt;
&lt;p&gt;后者是自动化工作负载。&lt;/p&gt;
&lt;p&gt;Anthropic 真正要重新定价的，是后者。&lt;/p&gt;
&lt;p&gt;以后判断 AI 编程工具价格时，也不能只问：套餐里有没有 Claude Code？&lt;/p&gt;
&lt;p&gt;更要问：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;我用的是交互式 Claude Code，还是自动化 Claude Code？&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;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.theregister.com/software/2026/04/22/anthropic-tests-reaction-to-yanking-claude-code-from-pro/5224929&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic tests reaction to yanking Claude Code from Pro&lt;/a&gt; — The Register，2026-04-22&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://simonwillison.net/2026/apr/22/claude-code-confusion/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Is Claude Code going to cost $100/month? Probably not—it’s all very confusing&lt;/a&gt; — Simon Willison，2026-04-22&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.techtimes.com/articles/317625/20260602/anthropic-ends-subscription-subsidy-agents-june-15-credit-pool-replaces-flat-rate-access.htm&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic Ends Subscription Subsidy for Agents June 15: Credit Pool Replaces Flat-Rate Access&lt;/a&gt; — TechTimes，2026-06-02&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://help.apiyi.com/en/anthropic-claude-subscription-agent-sdk-billing-split-june-2026-en.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic June 15 Claude subscription billing overhaul&lt;/a&gt; — APIYI，2026-05-15&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.alexdunlop.com/writing/claude-code-pricing-2026-autonomous-credits&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Code Pricing 2026: Autonomous Credits and What Changed&lt;/a&gt; — Alex Dunlop，2026-05-14&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://code.claude.com/docs/en/github-actions.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Code GitHub Actions 官方文档&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://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;&lt;span class=&#34;cm&#34;&gt;&amp;lt;!-- .github/PULL_REQUEST_TEMPLATE/claude.md --&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;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 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;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;l&#34;&gt;title}}&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;l&#34;&gt;date}}&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;l&#34;&gt;author}}&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;tag1}}&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;tag2}}&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;tag3}}&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;aliases&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;alternative_name}}&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;status&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;status}}&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;priority&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;priority}}&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;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&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>
