<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Coding Agent on 鬼哥的空间</title><link>https://guige.ai/tags/coding-agent/</link><description>Recent content in Coding Agent on 鬼哥的空间</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Wed, 19 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://guige.ai/tags/coding-agent/index.xml" rel="self" type="application/rss+xml"/><item><title>Skill 越多，Agent 为什么越容易犯选择困难？</title><link>https://guige.ai/p/skills-are-not-memory/</link><pubDate>Wed, 19 Aug 2026 00:00:00 +0000</pubDate><guid>https://guige.ai/p/skills-are-not-memory/</guid><description>&lt;img src="https://guige.ai/" alt="Featured image of post Skill 越多，Agent 为什么越容易犯选择困难？" /&gt;&lt;p&gt;不知道大家Vibe Coding时间久了以后会不会碰到这样的问题: 学习和使用了不少有用的skill, 自己的skill库越来越丰富, 但 Skill 库越攒越多，Agent 反而偶尔开始犯一种很熟悉的病：&lt;strong&gt;选择困难症。&lt;/strong&gt; 有些问题, 这个skill能处理, 那个也能搞定, 但又都不是完美匹配当前场景的. 导致同一个问题, 多次解决路径居然不一致, 带来的结果和周边影响也不一样.&lt;/p&gt;
&lt;p&gt;AI跟人一样, 对一些问题有多条解决路径选择时。就跟鬼哥看到“干炒牛河、辣椒炒肉、小炒黄牛肉、湖南米粉”同时出现在菜单上，脑子就直接进入一个 &lt;code&gt;Infinity Loop&lt;/code&gt; 循环, 这顿饭都没力气吃下去了。Agent 面前如果同时摆着几十份名字相近、边界暧昧的 Skill，情况大致相同，只是它不会叹气，而是更认真地读错几份文件。&lt;/p&gt;
&lt;p&gt;鬼哥昨天读到一篇新论文 &lt;a class="link" href="https://arxiv.org/pdf/2608.14036" target="_blank" rel="noopener"
 &gt;&lt;em&gt;Demystifying Agent Skills: Why They Work—Until They Don’t&lt;/em&gt;&lt;/a&gt; 恰好把这个问题拆开了。它问的不是“Skill 有没有用”，而是更麻烦也更有价值的问题：&lt;strong&gt;它什么时候帮忙、为什么帮忙、又从哪里开始添乱？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;论文的答案很克制：Skill 确实有效，但它最主要的作用不是给 Agent 多塞一点知识，而是把过去混乱的经验压缩成一根可执行的“程序锚点”。问题也在这里：锚点一旦抛错地方，船就会稳稳地停在错误的位置。&lt;/p&gt;
&lt;p&gt;&lt;img alt="一张菜单式的 Agent Skill 库，多个相似选项让 Agent 在选择循环中犹豫" class="gallery-image" data-flex-basis="135px" data-flex-grow="56" height="1672" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/skills-are-not-memory/cover.webp" srcset="https://guige.ai/p/skills-are-not-memory/cover_hu_b48826964b622baf.webp 800w, https://guige.ai/p/skills-are-not-memory/cover.webp 941w" width="941"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="skill-不是经验文档而是经验的蒸馏"&gt;Skill 不是“经验文档”，而是经验的蒸馏
&lt;/h2&gt;&lt;p&gt;论文把同一批历史执行轨迹做成了三种版本：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;给 Agent 的东西&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;Raw&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;Workflow Memory&lt;/td&gt;
 &lt;td&gt;清洗过的历史流程&lt;/td&gt;
 &lt;td&gt;仍夹带失败分支、偶然细节和冗长探索&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Skill&lt;/td&gt;
 &lt;td&gt;从同一批流程蒸馏出的 &lt;code&gt;SKILL.md&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;需要判断是否适用、如何适配&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这个对照很关键。Skill 和 Workflow Memory 来自&lt;strong&gt;同一批成功与失败轨迹&lt;/strong&gt;，所以它们的差异不能简单归因于“前者知道得更多”。&lt;/p&gt;
&lt;p&gt;在匹配比较里，Skill 的成功率为 &lt;strong&gt;61.9%&lt;/strong&gt;，Raw 为 &lt;strong&gt;59.1%&lt;/strong&gt;，Workflow Memory 为 &lt;strong&gt;55.9%&lt;/strong&gt;；Skill 相比 Workflow Memory 的增益为 &lt;strong&gt;6.06 个百分点&lt;/strong&gt;，95% bootstrap 置信区间为 &lt;strong&gt;+0.76 到 +11.36&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;更有意思的是，研究者逐条分析 Agent 轨迹后发现：Skill 有效的案例里，&lt;strong&gt;65.7%&lt;/strong&gt; 是因为它提供了程序锚点——步骤顺序、工具调用、检查点、验证方案、常见坑；只有 &lt;strong&gt;4.5%&lt;/strong&gt; 是因为它补充了 Agent 原本不知道的事实。&lt;/p&gt;
&lt;p&gt;这和很多人的直觉相反。我们写 Skill 时常想“把知识写全一点”，但真正有价值的，往往是让 Agent 在关键时刻不忘记：先启动什么、再检查什么、哪种输出不算完成、踩坑后怎样退回来。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Skill 最大的作用，不是替 Agent 多记一条知识，而是在关键步骤上少忘一件事。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="同一批混乱的执行轨迹被蒸馏为简洁的步骤、检查点和风险提示，对比原始 Workflow Memory" class="gallery-image" data-flex-basis="135px" data-flex-grow="56" height="1672" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/skills-are-not-memory/skills-as-procedural-anchors.webp" srcset="https://guige.ai/p/skills-are-not-memory/skills-as-procedural-anchors_hu_bfb47188649e5acb.webp 800w, https://guige.ai/p/skills-are-not-memory/skills-as-procedural-anchors.webp 941w" width="941"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="它最擅长修的是会做但总忘的问题"&gt;它最擅长修的，是“会做但总忘”的问题
&lt;/h2&gt;&lt;p&gt;论文里的细分结果很像所有做过 Agent 工程的人见过的事故单：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;环境或基础设施失败：从 Raw 的 &lt;strong&gt;5.3%&lt;/strong&gt; 降到 Skill 的 &lt;strong&gt;0.2%&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;输出格式或 schema 不匹配：从 &lt;strong&gt;7.4%&lt;/strong&gt; 降到 &lt;strong&gt;3.2%&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;后台服务生命周期失败：从 &lt;strong&gt;2.7%&lt;/strong&gt; 降到 &lt;strong&gt;0.8%&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些不是深奥推理题。它们更多是执行纪律问题：路径没记住、服务没确认、schema 没校验、命令没按正确顺序跑。&lt;/p&gt;
&lt;p&gt;所以一个好的 Skill，应该像一位靠谱但不啰嗦的值班同事：它不替你决定产品要不要做，却会在你准备发布前提醒“配置读了吗？”“服务起来了吗？”“返回值真符合接口吗？”&lt;/p&gt;
&lt;p&gt;但别因此高估它。算法逻辑错误在 Skill 条件下仍有 &lt;strong&gt;7.4%&lt;/strong&gt;，只做静态检查、没有真正运行验证的失败仍有 &lt;strong&gt;11.7%&lt;/strong&gt;。Skill 能稳住执行，不能替人重新定义一个理解错了的问题。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="skill-的反噬它会让错误的假设更有执行力"&gt;Skill 的反噬：它会让错误的假设更有执行力
&lt;/h2&gt;&lt;p&gt;Skill 不是自动执行的。Agent 必须先判断它是否相关，再决定跟到什么程度，还得在当前环境里修改它。&lt;/p&gt;
&lt;p&gt;这一步一旦偷懒，Skill 就从经验变成了惯性。论文中，&lt;code&gt;skill_guidance_misapplied_or_ignored&lt;/code&gt; 在 Skill 组里占 &lt;strong&gt;10.0%&lt;/strong&gt;，而 Raw 是 &lt;strong&gt;0.8%&lt;/strong&gt;、Workflow Memory 是 &lt;strong&gt;0.4%&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这不是说 Skill 内容一定不好。更常见的情况是：旧任务和新任务看起来像，但一个前提已经变了；Agent 拿着一份“通常正确”的流程，顺手把它套到“不再通常”的场景上。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;一个没有退出条件的 Skill，是把经验固化成偏见的最快方式。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这也是为什么我现在更在意 Skill 里有没有下面四块，而不是它写了多少页：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## 适用前提
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 什么输入、环境和权限下使用？
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## 执行路径
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 关键步骤的顺序是什么？
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## 验证标准
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 跑什么检查？什么结果才算完成？
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## 退出与升级
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&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 alt="一份好的 Skill 像程序合同：适用前提、执行路径、验证标准、退出与升级四个模块" class="gallery-image" data-flex-basis="135px" data-flex-grow="56" height="1672" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/skills-are-not-memory/skill-contract.webp" srcset="https://guige.ai/p/skills-are-not-memory/skill-contract_hu_99942d94b0f46d0b.webp 800w, https://guige.ai/p/skills-are-not-memory/skill-contract.webp 941w" width="941"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="skill-库越大难的不是保存而是选择和适配"&gt;Skill 库越大，难的不是保存，而是选择和适配
&lt;/h2&gt;&lt;p&gt;论文专门测了这个问题。候选 Skill 池从 5 个增加到 100 个时，Agent 在真实执行里实际使用 ground-truth Skill 的精确率，平均从 &lt;strong&gt;29.6%&lt;/strong&gt; 掉到 &lt;strong&gt;3.3%&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;但下游任务成功率却没有同步崩掉，只从 &lt;strong&gt;36.4%&lt;/strong&gt; 变到 &lt;strong&gt;39.3%&lt;/strong&gt;。原因并不神秘：Agent 可能看了多份相近 Skill；其中某份并非标注的“唯一正确答案”，却依然给了有用的操作线索。反过来，即使它选中了 ground-truth Skill，也仍可能在执行、适配或验证环节失败。&lt;/p&gt;
&lt;p&gt;论文由此给出一个很重要的结论：&lt;strong&gt;精确调用标注上的正确 Skill，既不是任务成功的充分条件，也不是必要条件。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这对个人开发者的含义是：别只用“检索命中了没有”衡量 Skill 库。更应该问：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;这份 Skill 的触发条件是否能和相邻 Skill 区分开？&lt;/li&gt;
&lt;li&gt;它能否解释自己为什么适用于当前任务？&lt;/li&gt;
&lt;li&gt;它的关键步骤能否被当前环境的 verifier 验证？&lt;/li&gt;
&lt;li&gt;当它与另一份 Skill 冲突时，Agent 知不知道该降级、组合还是停下来问？&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Skill 库的瓶颈从来不是存储空间，而是选择和适配能力。菜单可以很长，但“都来一份”不是一个工程策略。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Skill 池从 5 到 100 时，离线检索与真实执行的差异：精确命中下降，但任务成功不等于同步下降" class="gallery-image" data-flex-basis="135px" data-flex-grow="56" height="1672" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/skills-are-not-memory/retrieval-is-not-success.webp" srcset="https://guige.ai/p/skills-are-not-memory/retrieval-is-not-success_hu_dc57f7ac653ab265.webp 800w, https://guige.ai/p/skills-are-not-memory/retrieval-is-not-success.webp 941w" width="941"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="失败轨迹别急着扔它们是-skill-的边界说明书"&gt;失败轨迹别急着扔，它们是 Skill 的边界说明书
&lt;/h2&gt;&lt;p&gt;研究者还做了一个很实用的消融：构建 Skill 时，保留或去掉历史轨迹的“成功/失败”标记。&lt;/p&gt;
&lt;p&gt;只有成功轨迹时，是否保留标记影响不大；一旦混入失败轨迹，结果标签就开始发挥作用。以 Gemini 在 Terminal-Bench-2 的 &lt;code&gt;3 成功 + 2 失败&lt;/code&gt; 轨迹组合为例：构建 Skill 时保留 outcome labels，成功率为 &lt;strong&gt;74.62%&lt;/strong&gt;；拿掉标签后，只有 &lt;strong&gt;40.00%&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这说明失败轨迹并不是应当删掉的脏东西。它告诉我们：哪一步看似合理却不通、什么条件一变流程就失效、最终验证为什么没有通过。&lt;/p&gt;
&lt;p&gt;当然，失败记录原封不动地塞回上下文也不行——Workflow Memory 的 timeout/budget exhaustion 达 &lt;strong&gt;10.6%&lt;/strong&gt;，而 Skill 为 &lt;strong&gt;4.4%&lt;/strong&gt;。正确做法不是保存更多过程，而是把失败蒸馏成可判断的边界：&lt;strong&gt;失败模式、触发条件、检查办法、替代路径。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="给个人开发者的一条-skill-维护规则"&gt;给个人开发者的一条 Skill 维护规则
&lt;/h2&gt;&lt;p&gt;如果你正在维护自己的 Skill 库，我建议不要从“再写一份新的”开始，而是从每次真实任务结束后的四个问题开始：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;这次 Agent 反复犯的，究竟是知识缺口，还是执行步骤遗漏？&lt;/li&gt;
&lt;li&gt;哪一步可以写成稳定的前提、动作和 verifier？&lt;/li&gt;
&lt;li&gt;哪个失败条件必须写进这份 Skill 的退出路径？&lt;/li&gt;
&lt;li&gt;它和已有 Skill 的边界是否足够清楚，还是只是在菜单上多加了一道相似的菜？&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;若答案只是“我觉得这条 Prompt 很有用”，先别急着建库。让它在几个真实任务里活下来，再把它写成 Skill。&lt;/p&gt;
&lt;p&gt;这篇论文仍是一篇预印本，实验主要集中在终端与工具调用任务，覆盖的 Agent 框架和模型数量也有限；它不等于已经证明了所有网页 Agent 或开放式协作场景的规律。但它至少把一个常被忽略的问题说清了：Skill 的效果不是一次注入，而是一条生命周期——&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="参考资料"&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Zhiyuan Jiang et al., &lt;a class="link" href="https://arxiv.org/pdf/2608.14036" target="_blank" rel="noopener"
 &gt;&lt;em&gt;Demystifying Agent Skills: Why They Work—Until They Don’t&lt;/em&gt;&lt;/a&gt;, arXiv:2608.14036, 2026.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>持续学习 - 读吴恩达老师的 AI Engineering Skills Map</title><link>https://guige.ai/p/you-are-your-ai/</link><pubDate>Sun, 16 Aug 2026 00:00:00 +0000</pubDate><guid>https://guige.ai/p/you-are-your-ai/</guid><description>&lt;img src="https://guige.ai/" alt="Featured image of post 持续学习 - 读吴恩达老师的 AI Engineering Skills Map" /&gt;&lt;p&gt;Andrew Ng 最近发布了 &lt;em&gt;The AI Engineering Skills Map&lt;/em&gt;。&lt;/p&gt;
&lt;p&gt;我原以为，它大概又会列出一串要学的新名词：模型、Agent、RAG、MCP、评估……毕竟这两年 AI 圈最不缺的，就是下一批必须学会的工具。&lt;/p&gt;
&lt;p&gt;但读完后，真正让我停下来的不是某个工具，而是其中一项能力：&lt;strong&gt;Shaping the build。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;当 AI 越来越擅长“按规格把东西做出来”，工程师更重要的工作，反而变成了决定：&lt;strong&gt;究竟什么值得被做出来。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="Andrew Ng 的 AI 工程能力地图：四项核心能力与持续学习底座" class="gallery-image" data-flex-basis="135px" data-flex-grow="56" height="1672" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/you-are-your-ai/cover.webp" srcset="https://guige.ai/p/you-are-your-ai/cover_hu_56590c7e91e889d.webp 800w, https://guige.ai/p/you-are-your-ai/cover.webp 941w" width="941"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="我们太擅长围观模型太少真正走进现场"&gt;我们太擅长围观模型，太少真正走进现场
&lt;/h2&gt;&lt;p&gt;这两年，AI 圈最不缺的，是围绕模型的热闹。&lt;/p&gt;
&lt;p&gt;又一家机构发布了新模型，参数多大，跑分涨了多少，在哪个 benchmark 超过了谁。我们很容易花半天时间讨论它的能力边界，仿佛坐在路边摊上，也能把国际局势分析得头头是道。&lt;/p&gt;
&lt;p&gt;信息当然重要。模型进步也确实会改变工程方案。我自己也在关注、在试用、在学习各种 AI Coding 工具、harness 和 Skill。&lt;/p&gt;
&lt;p&gt;但读完 Andrew 的文章，我开始反问：这些信息最后有多少变成了我真正做过的东西？我有没有拿一个真实问题去试过、撞过墙、做过评估、承担过一次“它答错了怎么办”的后果？&lt;/p&gt;
&lt;p&gt;鬼哥一直有个很朴素的判断：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;上过一天战场的普通士兵，强过训练过一年、却从未见过敌人眼中杀气的特种部队。&lt;/strong&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;放到 AI 开发上，这不是鼓吹粗糙上线，而是说：一次真实实践里遇到的脏数据、用户误解、预算约束、模型幻觉和责任边界，比十篇模型评测更能逼着人长出工程判断。&lt;/p&gt;
&lt;p&gt;&lt;img alt="左边是围观模型跑分和工具榜单的人群，右边是开发者在用户现场观察真实问题的对照画面" class="gallery-image" data-flex-basis="135px" data-flex-grow="56" height="1672" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/you-are-your-ai/watching-models-vs-building.webp" srcset="https://guige.ai/p/you-are-your-ai/watching-models-vs-building_hu_9d89ed466a048d48.webp 800w, https://guige.ai/p/you-are-your-ai/watching-models-vs-building.webp 941w" width="941"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="一句做个-ai-客服其实还没有开始定义问题"&gt;一句“做个 AI 客服”，其实还没有开始定义问题
&lt;/h2&gt;&lt;p&gt;假设有人对你说：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;“我们做一个 AI 客服，提高客服效率吧。”&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;这句话看起来已经足够清楚。于是很自然的下一步是：选一个模型，接知识库，做一个聊天窗口，必要时再加个 RAG 和转人工按钮。&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;img alt="AI 客服需求从一句模糊目标分叉成用户意图、风险等级、人工接管、知识来源和评估标准的决策图" class="gallery-image" data-flex-basis="135px" data-flex-grow="56" height="1672" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/you-are-your-ai/ai-support-question-map.webp" srcset="https://guige.ai/p/you-are-your-ai/ai-support-question-map_hu_d137a8fdf67f9ca5.webp 800w, https://guige.ai/p/you-are-your-ai/ai-support-question-map.webp 941w" width="941"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="andrew-的四项能力恰好解释了差别从哪里开始"&gt;Andrew 的四项能力，恰好解释了差别从哪里开始
&lt;/h2&gt;&lt;p&gt;Andrew 的团队基于 10,000 多条招聘信息、专家与招聘方访谈、问卷及其他在线数据，归纳出四项最重要的 AI Engineering 能力。对我来说，它们不是一张“待学名词表”，而是一张让那句 AI 客服需求显影的地图。&lt;/p&gt;
&lt;h3 id="1-构建与部署-ai-应用把不确定当作系统属性"&gt;1. 构建与部署 AI 应用：把“不确定”当作系统属性
&lt;/h3&gt;&lt;p&gt;传统软件大多是确定性的：同样的输入，通常得到同样的输出。AI 应用不是。你给 LLM 一段上下文，不会完全知道它下一次会怎么回答；你训练一个模型，也无法保证它面对新样本时的判断。&lt;/p&gt;
&lt;p&gt;所以 AI 客服的关键从来不是“它能不能回答”，而是：&lt;strong&gt;它会怎样答错，我们如何发现、衡量并纠正它。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这就是为什么 Andrew 特别强调 disciplined evals 和 error analysis loops。没有评估和错误分析，所谓优化常常只是换一个 Prompt、换一个模型，然后凭感觉说“似乎好一些”。&lt;/p&gt;
&lt;h3 id="2-软件工程基础ai-不会替你做取舍"&gt;2. 软件工程基础：AI 不会替你做取舍
&lt;/h3&gt;&lt;p&gt;一个客服系统不仅有模型，还有并发、延迟、缓存、数据权限、审计、成本、可用性和隐私。&lt;/p&gt;
&lt;p&gt;如果客户上传的订单截图被送进第三方模型，数据如何处理？如果一个工具调用错了退款接口，如何避免不可逆操作？如果高峰期响应慢了 3 秒，用户会等待还是转人工？&lt;/p&gt;
&lt;p&gt;这些没有标准答案，只有取舍。&lt;strong&gt;工程基础的价值，不是让人比 Agent 多写几行代码，而是让人看见 Agent 看不见、也不会主动替你承担的代价。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="3-使用-coding-agent不是让它替你思考而是让它进入闭环"&gt;3. 使用 Coding Agent：不是让它替你思考，而是让它进入闭环
&lt;/h3&gt;&lt;p&gt;Coding Agent 能很快搭出客服界面、接好 API、补齐测试的表面结构。它也可能在没有足够上下文时，做出一个看起来合理、实则危险的默认选择。&lt;/p&gt;
&lt;p&gt;会用 Agent，远不止会写一段 Prompt。它意味着你知道该给什么上下文，什么时候先规划，什么时候直接执行；更意味着你能给它清晰的 verifier：哪些回答算正确，哪些调用绝不能发生，哪些失败必须自动暴露。&lt;/p&gt;
&lt;p&gt;Agent 是执行的杠杆。&lt;strong&gt;没有规格、边界和验证，它放大的往往只是含糊。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="4-shaping-the-build最难的工作在代码之前"&gt;4. Shaping the build：最难的工作在代码之前
&lt;/h3&gt;&lt;p&gt;前三项能力让系统能被可靠地做出来；第四项追问的是：它该不该这样被做出来？&lt;/p&gt;
&lt;p&gt;当 Agent 越来越擅长交付一份明确的 spec，工程师的价值正从“把 spec 写成代码”，逐渐前移到“参与决定 spec 应该写什么”。&lt;/p&gt;
&lt;p&gt;回到 AI 客服：也许真正的问题不是客服打字太慢，而是退款规则本身让用户反复追问；也许用户要的不是一个更会说话的机器人，而是一个能告诉他“这件事已经由谁、在什么时候处理”的确定性。&lt;/p&gt;
&lt;p&gt;如果没有走到用户面前，没有理解业务目标和人的感受，再强的模型也只会把错误的问题实现得更快。&lt;/p&gt;
&lt;p&gt;&lt;img alt="四项 AI 工程能力围绕同一个 AI 客服需求形成闭环：理解问题、构建、验证、取舍、迭代" class="gallery-image" data-flex-basis="135px" data-flex-grow="56" height="1672" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/you-are-your-ai/ai-engineering-skills-loop.webp" srcset="https://guige.ai/p/you-are-your-ai/ai-engineering-skills-loop_hu_1da69d2fa5d6ad84.webp 800w, https://guige.ai/p/you-are-your-ai/ai-engineering-skills-loop.webp 941w" width="941"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="持续学习不是追完每一条模型新闻"&gt;持续学习，不是追完每一条模型新闻
&lt;/h2&gt;&lt;p&gt;Andrew 在最后还提到了一项贯穿所有能力的底层心态：&lt;strong&gt;Continuous Learning。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这句话看起来最不“技术”，却可能是最难的一项。&lt;/p&gt;
&lt;p&gt;因为 AI 变化太快了。模型在变，Coding Agent 的能力边界在变，工具的最佳实践也在变。两个月前还需要手工拆解的步骤，今天可能已经可以交给 Agent；今天看起来可靠的工作流，下一次模型升级后又可能需要重新设计。&lt;/p&gt;
&lt;p&gt;所以，持续学习当然包括关注新模型、试用新工具、阅读好文章。但如果它只停在这些地方，我们又会回到开头那种“围观模型”的热闹里。&lt;/p&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;看它在真实用户、真实数据和真实约束下怎样失败；&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;一次这样的失败，往往比知道某个新模型多了几个 benchmark 分数更有价值。前者会改变你下一次怎么理解问题；后者未必会。&lt;/p&gt;
&lt;p&gt;持续学习因此不是把知识库存得越来越满，而是让自己的判断在一次次真实交付中变得更准。&lt;strong&gt;它让工具进步不只发生在屏幕上，也发生在使用工具的人身上。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="ai-提高了效率但没有取消人的认知边界"&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 的不只是 Prompt。你给它的还有：你对用户的理解、你识别风险的能力、你知道哪些地方该慢下来、以及你愿意对什么结果负责。&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 alt="一个人的经验、用户洞察、工程知识和责任意识汇入 AI 系统，输出为最终产品体验的概念图" class="gallery-image" data-flex-basis="135px" data-flex-grow="56" height="1672" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/you-are-your-ai/you-are-your-ai.webp" srcset="https://guige.ai/p/you-are-your-ai/you-are-your-ai_hu_497fcdf370109ec7.webp 800w, https://guige.ai/p/you-are-your-ai/you-are-your-ai.webp 941w" width="941"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="每次让-ai-开工前先问自己五个问题"&gt;每次让 AI 开工前，先问自己五个问题
&lt;/h2&gt;&lt;p&gt;如果这篇文章只留下一件可以立刻执行的事，我希望是下面这五问：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;用户说出的需求，背后真正想解决的是什么？&lt;/li&gt;
&lt;li&gt;AI 答错或做错一次，谁承担什么后果？&lt;/li&gt;
&lt;li&gt;我用什么真实样本和标准，判断它真的有用？&lt;/li&gt;
&lt;li&gt;哪些决策可以交给 AI，哪些必须由人负责？&lt;/li&gt;
&lt;li&gt;我现在给 AI 的上下文，是否已经暴露了自己的认知盲区？&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;AI Coding 最好的时代，或许不是每个人都能更快地生成代码的时代。&lt;/p&gt;
&lt;p&gt;而是每个愿意走进真实问题、持续校准自己判断的人，都能把自己的能力更大规模地交付给世界的时代。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="参考资料"&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Andrew Ng, &lt;em&gt;The AI Engineering Skills Map&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>