<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>推理模型 | Xwell's Blog</title><link>https://imxwell.com/tag/%E6%8E%A8%E7%90%86%E6%A8%A1%E5%9E%8B/</link><atom:link href="https://imxwell.com/tag/%E6%8E%A8%E7%90%86%E6%A8%A1%E5%9E%8B/index.xml" rel="self" type="application/rss+xml"/><description>推理模型</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Wed, 23 Sep 2026 00:00:00 +0000</lastBuildDate><image><url>https://imxwell.com/media/icon_hu69ee3ffdb4f867e32a76265cfde5ef48_25430_512x512_fill_lanczos_center_3.png</url><title>推理模型</title><link>https://imxwell.com/tag/%E6%8E%A8%E7%90%86%E6%A8%A1%E5%9E%8B/</link></image><item><title>把书放回床头：我和大模型的向内求与向外看</title><link>https://imxwell.com/blog/inward_outward/</link><pubDate>Wed, 23 Sep 2026 00:00:00 +0000</pubDate><guid>https://imxwell.com/blog/inward_outward/</guid><description>&lt;p>以前我坐地铁通勤，每天来回有一个多小时的固定时间，基本都用来读书，会读一些经典书籍。上半年工位搬了，我开始自驾通勤，开车没法看书，这段时间就换成了听播客和网络课程。&lt;/p>
&lt;p>一开始觉得路上的时间没有浪费。可听得多了才发现，播客大多面向大众，很多话题点到即止，缺少深度；得到上的讲书也差不多，半个小时讲完一本，听到的是别人消化过的版本。更明显的是阅读计划：年初列了 12 本书，到 9 月初才读了 5 本。&lt;/p>
&lt;p>9 月开始，我做了一件很小的事：把想读的书放在床头，每天睡前读半个小时。几周下来，深度阅读和思考的时间又慢慢回来了。&lt;/p>
&lt;p>回头看，这件事里有两个动作。第一个是向内的：我先察觉到自己不对劲，听了很多却不踏实，真正想要的是能沉下来的阅读和思考。第二个是向外的：我没有逼自己“每天必须挤出时间读书”，而是改了环境，让书就在伸手可及的地方，把睡前阅读变成默认选项。&lt;/p>
&lt;p>这件小事让我想到，一件事做不好的时候，我们通常有两种本能：一种是停下来问自己“我到底怎么了”，另一种是去找工具、找人、换环境。&lt;/p>
&lt;p>《孟子·离娄上》说“行有不得者，皆反求诸己”，这是向内求；《荀子·劝学》说“君子生非异也，善假于物也”，这是向外看。两句话都对，但放到具体问题里，究竟该先向内还是先向外，并没有那么容易判断。&lt;/p>
&lt;p>《非暴力沟通》我很早就读过，一直觉得这套理念很好，但真到实操落地，总觉得还差点什么。最近读了《助推》，才隐约觉得这两本书像是一体两面，刚好站在内与外的两端。前者花了大量篇幅教人觉察和表达自己的状态，本质上是一种向内的澄清；后者则建立在人的理性有限这一前提上，主张通过设计环境来帮助人做出更好的选择。&lt;/p>
&lt;p>再往我熟悉的领域延伸一步，这组关系在大模型上几乎重演了一遍：模型自身的推理能力，让它在回答之前先把问题想清楚，是向内；模型之外的 harness，把它接到工具、代码仓库和测试上，让它从环境里拿到反馈，是向外。&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">维度&lt;/th>
&lt;th style="text-align:left">向内求&lt;/th>
&lt;th style="text-align:left">向外看&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>书&lt;/strong>&lt;/td>
&lt;td style="text-align:left">《非暴力沟通》&lt;/td>
&lt;td style="text-align:left">《助推》&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>大模型&lt;/strong>&lt;/td>
&lt;td style="text-align:left">模型自身的推理（reasoning）、自我反思&lt;/td>
&lt;td style="text-align:left">模型之外的 harness：工具、上下文、反馈回路&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>核心动作&lt;/strong>&lt;/td>
&lt;td style="text-align:left">觉察感受、澄清需要、正向表达&lt;/td>
&lt;td style="text-align:left">改变环境结构、借力、获取反馈&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>依赖什么&lt;/strong>&lt;/td>
&lt;td style="text-align:left">自身已有的信息和能力&lt;/td>
&lt;td style="text-align:left">外部环境的质量&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>这篇文章想讨论的不是哪一种更好，而是它们各自能解决什么问题、在哪里失效、怎样组合起来，以及在向外已经变得太容易的今天，向内还意味着什么。&lt;/p>
&lt;hr>
&lt;h2 id="向内从非暴力沟通里取什么">向内：从非暴力沟通里取什么&lt;/h2>
&lt;p>马歇尔·卢森堡把非暴力沟通拆成四个要素：观察、感受、需要和请求。&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>&lt;/p>
&lt;p>但在中文语境里，直接照搬这套句式很难落地。“我感到失落，因为我需要被尊重，你愿意……吗？”这样的话放在家人或同事之间，听起来更像翻译腔，甚至会让对方觉得你在“用技巧”。我们的日常表达更含蓄，很多情绪习惯用语气、行动或者一顿饭来传递，而不是直接说出口。&lt;/p>
&lt;p>所以我更倾向于不搬句式，只取原则。这套方法常被当成和别人沟通的技巧，但它的顺序本来就是先向内、再向外：先把自己理清，再开口。书里专门有一章讲怎样用它对待自己，我这次回头再看，最先用上的对象也是自己。&lt;/p>
&lt;h3 id="先观察自己">先观察自己&lt;/h3>
&lt;p>书里反复强调两组区分：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>观察与评论&lt;/strong>：“我最近越来越不自律”是评论，“年初列了 12 本书，到 9 月初读了 5 本”才是观察；&lt;/li>
&lt;li>&lt;strong>感受与想法&lt;/strong>：“我觉得自己在退步”是一个判断，“不踏实”才是感受。&lt;/li>
&lt;/ul>
&lt;p>这两组区分用在自己身上，比用在别人身上更难。评论自己几乎是一种条件反射：“太懒了”“没毅力”，话一出口就定了性，接下来要么硬逼自己，要么干脆放弃。&lt;/p>
&lt;p>卢森堡对这种自我评判有一个很准确的说法：自我评判和所有评判一样，是没有被满足的需要的一种悲剧性表达。&lt;sup id="fnref1:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> “我太不自律了”这句话底下，真正在说的是：有一个需要一直没有被照顾到。&lt;/p>
&lt;p>按书里的方法拆一下：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>观察&lt;/strong>：换成开车通勤后，路上的时间给了播客和讲书，12 本的阅读计划到 9 月初只完成了 5 本；&lt;/li>
&lt;li>&lt;strong>感受&lt;/strong>：不踏实，听了很多，心里却不满足；&lt;/li>
&lt;li>&lt;strong>需要&lt;/strong>：一段能沉下来的阅读和思考。&lt;/li>
&lt;/ul>
&lt;h3 id="分清需要和策略">分清需要和策略&lt;/h3>
&lt;p>拆到“需要”这一步，还有一个很容易滑过去的区分，也是我这次觉得最有用的一点：需要和策略不是一回事。&lt;/p>
&lt;p>卢森堡给过一个判断标准：需要不指向具体的人做具体的事；一旦说出“我要（谁）去做（什么）”，那就已经是策略了。在他看来，所有人的需要都是相通的，人与人之间的冲突，几乎都发生在策略层面。&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>&lt;/p>
&lt;p>用这个标准回头看，“读书”其实是一种策略，“能沉下来思考”才是需要。播客和讲书也是策略，它们满足的是“获取信息”，满足不了“深度”。这就解释了我那段时间的别扭：路上的时间一点没浪费，信息也没少听，可真正的那个需要一直空着。&lt;/p>
&lt;p>分清这一点有实际的用处。如果我把需要当成“读完计划里的书”，半小时一本的讲书几乎是最省事的办法；可我要的是自己沉下来想，讲书恰好把这一步替我省掉了。&lt;/p>
&lt;h3 id="把应该换成选择">把“应该”换成“选择”&lt;/h3>
&lt;p>书里还有一个专门针对自己的练习：把“我不得不”“我应该”换成“我选择……因为我想要……”。&lt;sup id="fnref2:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> 卢森堡认为，出于“应该”的行动，背后往往是内疚、羞愧或者义务感，即使做成了，人也很难从中得到乐趣。&lt;/p>
&lt;p>“我应该多读书”是一句压在自己身上的要求，做不到就自责；换成“我选择每天睡前读半小时，因为我想要一段能沉下来想事情的时间”，事情还是那件事，动力的来源变了：前者在和自己较劲，后者在照顾自己的需要。&lt;/p>
&lt;p>上面这几步都发生在心里，不需要对任何人说。它们的作用是让自己先分清：哪些是发生了的事，哪些是我加上去的解读；我真正缺的是什么，我正在用的办法又是不是对路。&lt;/p>
&lt;h3 id="倾听听懂孩子的心声">倾听：听懂孩子的心声&lt;/h3>
&lt;p>在自己身上练熟了这几组区分，再听别人说话，也更容易听到话底下的东西。&lt;/p>
&lt;p>比如家里的娃。他今年上一年级，有时我晚上回到家已经快十点了，他还不愿意睡觉。我担心他睡眠不够，一着急就会吼着让他去睡，结果往往适得其反。事后拆一下才看清：我的初心是担心他没睡够、影响第二天的状态，可一吼出来，反而让当晚的入睡变得更难。让我失控的不是娃，而是那份没有被自己看清的担心。&lt;/p>
&lt;p>后来有一次陪他躺下，我没有催，而是问他：为什么不早点睡，每天早上又起不来？他的回答很简单：还想玩。&lt;/p>
&lt;p>他不是故意对着干，只是还没玩够。我在意的是他睡够、第二天状态好，他在意的是玩够，两边都没错，冲突的只是策略：“现在就去睡”和“再玩一会儿”。听懂了这一层，说出口的话也会不一样：&lt;/p>
&lt;blockquote>
&lt;p>“都几点了还玩！赶紧去睡！”&lt;/p>
&lt;p>“我有点担心你明天早上又起不来。是不是还没玩够？我们一起想个办法，既能玩，又能早点睡。”&lt;/p>
&lt;/blockquote>
&lt;p>第二句没有“我感到……因为我需要……”的标准句式，但感受、需要和请求都在里面，还把他的需要也放了进来。问题就从“怎么让他听话”，变成了“怎么让两边的需要都被照顾到”。&lt;/p>
&lt;p>对自己也一样：累了一天、只想省力的那个自己也有它的需要，跟它硬碰，通常赢不了。&lt;/p>
&lt;h3 id="请求要具体">请求要具体&lt;/h3>
&lt;p>表达不必套四段式，关键是把“指责对方”换成“说清自己”，并且请求要具体、做得到。“你能不能懂点事”没法执行，“我们约好几点上床”就很清楚。对自己也一样：“我要多读书”是空话，“每天睡前读半小时”才是做得到的请求。&lt;/p>
&lt;p>这是我这次重新理解非暴力沟通的地方：&lt;strong>向内澄清的终点，是一个具体的请求，对别人如此，对自己也是如此。&lt;/strong> 但也正是在这里，我过去实操时的那个卡点出现了：想清楚了，下一个晚上怎么办？&lt;/p>
&lt;hr>
&lt;h2 id="向内的边界看清自己并不容易">向内的边界：看清自己并不容易&lt;/h2>
&lt;p>问题在于，向内这条路并不总是走得通。&lt;/p>
&lt;p>&lt;strong>第一，计划是在冷静时做的，执行却常常发生在情绪里。&lt;/strong> 《助推》第二章引用了行为经济学家 George Loewenstein 提出的“冷热共情鸿沟”：人在冷静的“冷状态”下，会系统性地低估自己在饥饿、渴求、情绪上头这些“热状态”下会怎么做。&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> 快十点娃还不睡的那一刻，就是一个典型的热状态：书里的方法在平静时很好理解，可急火一上来，根本想不起什么观察和感受，等回过神来，话已经吼出去了。&lt;/p>
&lt;p>&lt;strong>第二，自我叙事很容易变成自我辩护。&lt;/strong> 我们向内分析时，用的是同一个大脑，它既是被审视的对象，也是审视者。心理学家 Nisbett 和 Wilson 在 1977 年报告过一个很有名的实验：让路人从一排四双完全相同的丝袜里挑出质量最好的一双，结果最右边那双被选中的次数，几乎是最左边的四倍。问到理由时，大家说的都是质地、做工；直接问是不是受了摆放位置的影响，几乎所有人都否认。&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup> 他们的结论是，人解释自己为什么这么做时，很多时候并没有真的“看见”内心，只是按常理推了一个说得通的理由。向内找到的东西也一样，有时是真正的需要，有时只是一个让自己舒服的解释。&lt;/p>
&lt;p>&lt;strong>第三，知道不等于做到。&lt;/strong> 我很清楚自己需要深度阅读，但“清楚”本身并不会把书送到手边。孩子也一样，他知道早上会起不来，到了晚上还是想再玩一会儿。&lt;/p>
&lt;p>向内能解决“我不知道自己要什么”的问题，却很难单独解决“我知道但做不到”的问题。后者正是《助推》关注的地方。&lt;/p>
&lt;hr>
&lt;h2 id="向外用助推从结构上改变环境">向外：用助推从结构上改变环境&lt;/h2>
&lt;p>理查德·塞勒和卡斯·桑斯坦在《助推》里区分了两种人：经济学模型里的“经济人”（Econs）总能理性计算，现实中的“普通人”（Humans）则会拖延、怕麻烦、受默认选项和周围人的影响。&lt;sup id="fnref1:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> 书中借用心理学里的两套思维系统来解释这件事：自动系统快速、直觉、省力，反思系统缓慢、审慎、费力，而大多数日常决策是由前者完成的。&lt;/p>
&lt;p>既然人很难每次都调动反思系统，那么与其要求人更自律，不如调整做选择的环境。作者把这称为“选择架构”，并且强调不存在中性的设计。他们举的例子是建筑师总得决定洗手间放在哪里，这个位置会悄悄影响同事们在走廊里碰面的次数。选择总发生在某种环境里，环境就算没人有意设计，也会推人一把。&lt;/p>
&lt;p>我丢掉阅读习惯的过程就是一个例子。地铁车厢本来就是一个无意间的助推：它给了我一段做不了别的事、正好适合读书的时间。换成开车，这个助推消失了，车里最顺手的选择变成了播客和讲书，习惯也就悄悄跟着走了。&lt;/p>
&lt;p>书里有几个例子，到现在还常被引用：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>默认选项&lt;/strong>：Madrian 和 Shea 研究了一家美国大公司把 401(k) 养老计划从“主动加入”改为“自动加入、可以退出”的前后变化。入职时间相近的员工里，改之前的参与率是 37%，改之后是 86%，而计划本身的经济条款一点没变；&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup>&lt;/li>
&lt;li>&lt;strong>器官捐献&lt;/strong>：德国需要主动登记，同意捐献的比例约为 12%；奥地利默认同意、可以退出，这个比例是 99.98%。&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup> 不过要补一句：登记率的差距远大于实际捐献的差距。同一项研究在控制其他因素后发现，默认同意的国家，每百万人口的实际捐献数只高出约 16%，因为家属意见、医疗条件等因素都会起作用；&lt;/li>
&lt;li>&lt;strong>承诺机制&lt;/strong>：“明天存更多”计划让员工提前承诺，把未来每次加薪的一部分存进养老账户，绕开了“当下多存钱很痛”的心理障碍。在第一家实施的公司里，参与者的平均储蓄率在 40 个月里从 3.5% 升到了 13.6%；&lt;sup id="fnref:7">&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref">7&lt;/a>&lt;/sup>&lt;/li>
&lt;li>&lt;strong>小便池里的苍蝇&lt;/strong>：阿姆斯特丹史基浦机场在小便池里印了一只苍蝇，流传最广的说法是溅洒减少了 80%。但这个数字从来没有正式的研究支撑，当年负责这件事的机场经理 Aad Kieboom 自己也说，它“非常凭经验”。&lt;sup id="fnref:8">&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref">8&lt;/a>&lt;/sup>&lt;/li>
&lt;/ul>
&lt;p>这些例子都没有去改变人的内心。它们承认人有局限，然后调整环境，让正确的行为更容易发生。&lt;/p>
&lt;h3 id="从结构上改才能少内耗">从结构上改，才能少内耗&lt;/h3>
&lt;p>内耗常常来自一种很普遍的模式：环境不变，全靠意志力硬扛。每一次都要和自己的自动系统打一架，赢了很累，输了还要自责。&lt;/p>
&lt;p>《助推》用一个模型来描述这种拉扯：每个人身上都住着一个有远见的“计划者”和一个只顾眼前的“执行者”。计划者代表反思系统，想为长远打算；执行者受自动系统驱动，直接暴露在各种诱惑面前。&lt;sup id="fnref2:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> 结合前面的冷热鸿沟，思路就清楚了：&lt;strong>不要指望执行者在热状态下做对，而是让计划者在冷状态下，提前把环境改好。&lt;/strong>&lt;/p>
&lt;p>床头的书就是这样起作用的。睡前是一天里最累的时候，如果那一刻还要从头决定“今晚读不读、读哪本”，执行者多半会选更省力的那个；书就在枕边，伸手就能拿到，这个决定就不用再做了。&lt;/p>
&lt;p>这算不上偷懒。承认自己是普通人，才能把有限的注意力留给真正需要判断的事情。&lt;/p>
&lt;h3 id="按原则改一次改一处">按原则改，一次改一处&lt;/h3>
&lt;p>改环境也不是想到什么改什么。《助推》用 NUDGES 这个缩写总结了好的选择架构的六条原则。为了凑出这个缩写，作者还自嘲“稍微作弊了一下”：打头的 N 其实取自 iNcentives 的第二个字母。&lt;sup id="fnref3:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> 我把它们放到重拾阅读这件事上：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">原则&lt;/th>
&lt;th style="text-align:left">在重拾阅读上的用法&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>用好激励&lt;/strong>（iNcentives）&lt;/td>
&lt;td style="text-align:left">给自己设计及时、看得见的小回报&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>理解映射关系&lt;/strong>（Understand mappings）&lt;/td>
&lt;td style="text-align:left">把抽象目标换算成具体结果：每天半小时，一个月就是十五个小时&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>设好默认选项&lt;/strong>（Defaults）&lt;/td>
&lt;td style="text-align:left">把书放在床头，让睡前阅读成为不需要做决定的默认安排&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>给出反馈&lt;/strong>（Give feedback）&lt;/td>
&lt;td style="text-align:left">记下读了什么、想到了什么，让积累被看见&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>预期会犯错&lt;/strong>（Expect error）&lt;/td>
&lt;td style="text-align:left">提前接受会有断掉的晚上，断了第二天照常，不自责&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>简化复杂选择&lt;/strong>（Structure complex choices）&lt;/td>
&lt;td style="text-align:left">提前选好下一本，睡前不用再挑&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>这六条里，我现在做得最差的是反馈。以前偶尔会把读书时的想法记进收集的笔记里，最近基本没怎么写了。&lt;/p>
&lt;p>在此之上，还可以借一点实验的思路：一次只改一处环境，观察两三周，有效就保留，无效就换一个。床头放书就是我改的第一处，到写这篇时差不多三周。这样改变就不用靠一次下决心的冲刺，而是拆成一连串可以验证的小实验。这和调试代码很像，也和后面要讲的 Agent 一样：小步修改，看反馈，再决定下一步。&lt;/p>
&lt;hr>
&lt;h2 id="向外的边界环境也可能把人带偏">向外的边界：环境也可能把人带偏&lt;/h2>
&lt;p>助推的力量来自环境，它的风险也来自环境。&lt;/p>
&lt;p>同样的默认选项，既可以帮人储蓄，也可以诱导人订阅一项难以取消的服务。后者常被称为“暗黑模式”，技术上和助推几乎一样，区别只在于设计者站在谁的一边。塞勒后来专门给这类设计起了个名字，叫 sludge（淤泥）：好的助推帮人做出“按他们自己的标准”更好的选择，淤泥则故意制造摩擦，让人更难做对自己有利的事，比如繁琐到让人放弃的退款流程。&lt;sup id="fnref:9">&lt;a href="#fn:9" class="footnote-ref" role="doc-noteref">9&lt;/a>&lt;/sup> 桑斯坦也专门讨论过助推的伦理问题，强调透明、可退出和符合被助推者自身的利益。&lt;sup id="fnref:10">&lt;a href="#fn:10" class="footnote-ref" role="doc-noteref">10&lt;/a>&lt;/sup>&lt;/p>
&lt;p>另一个风险是依赖。环境可以帮我们做到一件事，却不一定帮我们理解为什么要做。一旦环境变化，行为可能随之消失。地铁上天天读的书，通勤方式一换，习惯就散了，说明它很大程度上是靠环境撑着的，并没有真正长在自己身上。&lt;/p>
&lt;p>所以向外看并不是把判断交出去，而是要先想清楚：我希望被推向哪里？这个问题又回到了向内。&lt;/p>
&lt;hr>
&lt;h2 id="一体两面非暴力沟通与助推">一体两面：非暴力沟通与助推&lt;/h2>
&lt;p>回到开头那个疑问：为什么《非暴力沟通》的理念很好，我实操时却总觉得不够？重拾阅读这件事给了我一个解释。&lt;/p>
&lt;p>非暴力沟通帮我看清了需要：我缺的不是信息，而是深度思考。但如果只停在这里，想得再清楚，到了晚上累了一天，那点清楚也敌不过惯性。&lt;/p>
&lt;p>助推帮我把这份理解变成结构：书放在床头，睡前半小时成了默认安排。但如果跳过前一步，只盯着“一年读多少本”，再配上打卡和奖励，环境倒是设计得很完整，推的方向却可能是错的：为了凑数去挑薄书、快书。古德哈特定律常被概括成一句话：一个指标一旦变成目标，就不再是一个好指标。&lt;/p>
&lt;p>说起来，我年初那份 12 本的计划本身就是一个数量指标。拿它提醒自己没有问题，我也是看到“12 本读了 5 本”才意识到落后了；可一旦把凑够数量当成目标，前面说的半小时一本的讲书，就会显得是一条很合理的捷径。数字适合用来发现问题，不适合用来定义需要。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">flowchart LR
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> self[&amp;#34;观察自己&amp;lt;br/&amp;gt;听了很多却不踏实&amp;#34;] --&amp;gt; need[&amp;#34;分清需要&amp;lt;br/&amp;gt;深度思考，而不是读书数量&amp;#34;]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> need --&amp;gt; nudge[&amp;#34;改变默认&amp;lt;br/&amp;gt;书放在床头&amp;#34;]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> nudge --&amp;gt; act[&amp;#34;睡前半小时&amp;#34;]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> act --&amp;gt; feedback[&amp;#34;看见反馈&amp;lt;br/&amp;gt;读了什么、想到了什么&amp;#34;]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> feedback -.-&amp;gt;|不合适就调整| need
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>开头引的孟子和荀子，分歧在更底层：怎么看人性。孟子主张性善，善端本在心中，所以“反求诸己”；荀子在《性恶》篇里点名反驳孟子：“人之性恶，其善者伪也。”“伪”不是虚伪，而是“人为”：善要靠师法和礼义一点点塑造，这也是他在《劝学》里强调“善假于物”的底层理由。&lt;/p>
&lt;p>两本书的出发点，几乎就落在这两端。卢森堡在书的开头说，他相信人天生乐于以慈悲的方式给予和接受，暴力是人与这种天性断开之后的结果；&lt;sup id="fnref3:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> 《助推》当然不认为人性恶，但它同样不指望人自发做对，它的前提是普通人会犯可以预见的错，所以要从外部设计环境。&lt;sup id="fnref4:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> 一个相信内在，一个借助外物，和孟荀之争的结构很像。&lt;/p>
&lt;p>所以我现在觉得，这两本书是一体两面：&lt;strong>非暴力沟通回答“我真正需要什么”，助推回答“怎样让它不再依赖每一次的意志力”。&lt;/strong> 前者向内，决定了方向；后者向外，让方向可以持续。只有前者，想清楚的事容易在下一个晚上被打回原形；只有后者，改变容易被错误的指标带偏，用在别人身上，还可能变成操纵。&lt;/p>
&lt;hr>
&lt;h2 id="大模型的向内推理">大模型的向内：推理&lt;/h2>
&lt;p>读这两本书的时候，我脑子里总在对照另一件事：大模型。模型面对的是同一个困境：只靠自己，能想清楚的东西是有上限的。&lt;/p>
&lt;p>让模型“先想再答”，起点是 2022 年的思维链（Chain-of-Thought，CoT）：只要在示例里展示推理过程，或者加一句 “Let's think step by step”，大模型在数学和常识推理上的表现就会明显提升。&lt;sup id="fnref:11">&lt;a href="#fn:11" class="footnote-ref" role="doc-noteref">11&lt;/a>&lt;/sup>&lt;sup id="fnref:12">&lt;a href="#fn:12" class="footnote-ref" role="doc-noteref">12&lt;/a>&lt;/sup> 那时它还是一个写在提示词里的技巧。之后，OpenAI o1（2024 年 9 月）和 DeepSeek-R1（2025 年 1 月）用强化学习把“想得更久”直接训练进了模型；&lt;sup id="fnref:13">&lt;a href="#fn:13" class="footnote-ref" role="doc-noteref">13&lt;/a>&lt;/sup>&lt;sup id="fnref:14">&lt;a href="#fn:14" class="footnote-ref" role="doc-noteref">14&lt;/a>&lt;/sup> 到 2025 年 8 月 GPT-5 发布时，ChatGPT 已经由一个路由根据问题的难度自动决定要不要深入思考，API 里则用 &lt;code>reasoning_effort&lt;/code> 这样的参数调节想多久。&lt;sup id="fnref:15">&lt;a href="#fn:15" class="footnote-ref" role="doc-noteref">15&lt;/a>&lt;/sup> 到今天，推理已经是主流模型的默认能力，一道题值得想多久，基本由模型自己判断。&lt;/p>
&lt;p>形式变了，做的事没变：把一团直觉拆成可以被检查的结构，这和非暴力沟通做的是同一件事。模型没有获得新的信息，但获得了更多的计算步骤。Merrill 和 Sabharwal 从理论上证明过，允许 Transformer 在回答前生成中间步骤，确实能扩展它能解决的问题范围，扩展多少取决于中间步骤有多长。&lt;sup id="fnref:16">&lt;a href="#fn:16" class="footnote-ref" role="doc-noteref">16&lt;/a>&lt;/sup> 说白了，推理给了模型一张草稿纸。&lt;/p>
&lt;p>严格说，草稿纸本身就是一种外化：思考被写成文本，模型再读着自己写下的东西往下推。所以推理的“内”，指的是信息来源仍然只有模型自己，没有新的事实进来；形式上，它已经借了外物。内与外从这里开始就不是截然分开的，后面还会再遇到。&lt;/p>
&lt;p>推理的边界，也和人向内时遇到的问题很像。模型变强之后，这些问题并没有消失，只是换了形式：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>越想越错&lt;/strong>：早先 Huang 等人就发现，缺少外部信号时，让模型“检查一下自己的答案”，它有时会把原本正确的答案改错。&lt;sup id="fnref:17">&lt;a href="#fn:17" class="footnote-ref" role="doc-noteref">17&lt;/a>&lt;/sup> 推理模型学会了回头检查，问题却换了一种形态。Anthropic 的研究人员在 2025 年构造了一批任务，模型推理得越长，准确率反而越低：比如问“你有一个苹果和一个橘子，一共有几个水果”，题干里再掺一段无关的概率描述，Claude Opus 4 和 DeepSeek R1 想得越久，越容易把干扰信息算进去；&lt;sup id="fnref:18">&lt;a href="#fn:18" class="footnote-ref" role="doc-noteref">18&lt;/a>&lt;/sup>&lt;/li>
&lt;li>&lt;strong>自我叙事&lt;/strong>：Turpin 等人在 2023 年做过一个实验，把示例里的选项重新排序，让正确答案总是 (A)。模型的答案明显被这种位置偏向带偏了，写出的推理过程却对此只字不提。&lt;sup id="fnref:19">&lt;a href="#fn:19" class="footnote-ref" role="doc-noteref">19&lt;/a>&lt;/sup> 2025 年，Anthropic 沿用这个思路在推理模型上重做了一遍：在提示里悄悄塞进答案线索，模型确实用了线索，但在推理过程里承认这一点的，Claude 3.7 Sonnet 平均只有 25%，DeepSeek R1 只有 39%。&lt;sup id="fnref:20">&lt;a href="#fn:20" class="footnote-ref" role="doc-noteref">20&lt;/a>&lt;/sup> 推理模型比普通模型坦诚一些，可大多数时候，写出来的推理仍然不是它真正的理由；&lt;/li>
&lt;li>&lt;strong>想不出不知道的事&lt;/strong>：推理再深，也无法凭空得到训练数据之外的新事实，比如今天的股价、某个仓库里一段没见过的代码。&lt;/li>
&lt;/ul>
&lt;p>这几条几乎可以逐一对应到人身上：想得越多越偏的内耗、事后编出来的理由，以及知识本身的边界。Turpin 和 Anthropic 的实验与那排丝袜尤其像：模型被选项的位置或一条暗示带偏，路人被丝袜的摆放位置带偏，事后给出的理由，都没提到真正起作用的那个因素。&lt;/p>
&lt;hr>
&lt;h2 id="大模型的向外harness">大模型的向外：harness&lt;/h2>
&lt;p>推理是模型自身能力的演进；harness 则是模型之外的一切。Agent 的思路更接近《助推》：既然模型单靠内部推理有局限，那就把它放进一个能提供反馈的环境里。&lt;/p>
&lt;p>这条路的起点是 2022 年的 ReAct：让推理和行动交替进行，模型想一步、查一步，再根据观察结果继续想。&lt;sup id="fnref:21">&lt;a href="#fn:21" class="footnote-ref" role="doc-noteref">21&lt;/a>&lt;/sup> 随后的 CRITIC 说明，一旦允许模型借助搜索、代码解释器等工具验证自己的输出，自我纠正就变得可靠得多。&lt;sup id="fnref:22">&lt;a href="#fn:22" class="footnote-ref" role="doc-noteref">22&lt;/a>&lt;/sup> 今天的 Claude Code、Codex 这类编程 Agent，最里层转的仍然是这个“想、做、看”的循环，但和当年比，模型内外两侧都变了。&lt;/p>
&lt;p>模型这一侧，循环里的思考和调用工具，都已经成了训练出来的能力。推理模型可以在两次工具调用之间继续思考，拿到结果先想一想，再决定下一步；&lt;sup id="fnref:23">&lt;a href="#fn:23" class="footnote-ref" role="doc-noteref">23&lt;/a>&lt;/sup> 调用工具也不再靠提示词里的格式约定，而是模型的原生能力（这段是怎么来的，后面会讲）。怎么转这个循环，已经不需要人去教。&lt;/p>
&lt;p>模型之外，工程的重心从循环本身挪到了循环外面的环境。2026 年 2 月，OpenAI 和 LangChain 前后相隔几天发文，把这件事叫作 harness engineering。&lt;sup id="fnref:24">&lt;a href="#fn:24" class="footnote-ref" role="doc-noteref">24&lt;/a>&lt;/sup>&lt;sup id="fnref:25">&lt;a href="#fn:25" class="footnote-ref" role="doc-noteref">25&lt;/a>&lt;/sup> LangChain 的定义最简洁：Agent = 模型 + harness，除了模型本身，其余的代码、配置和执行逻辑都算 harness。&lt;sup id="fnref:26">&lt;a href="#fn:26" class="footnote-ref" role="doc-noteref">26&lt;/a>&lt;/sup> 它要决定给模型看什么上下文、开放哪些工具和权限、每一步之后自动跑哪些检查、什么时候压缩历史、什么时候把任务拆给子 Agent。这一层有多重要，LangChain 做过一个对照：模型固定不变，只改 harness，他们的编程 Agent 在 Terminal Bench 2.0 上的得分从 52.8% 提到了 66.5%。&lt;sup id="fnref1:25">&lt;a href="#fn:25" class="footnote-ref" role="doc-noteref">25&lt;/a>&lt;/sup>&lt;/p>
&lt;p>今年上半年，各家的 harness 一度层出不穷，到年中，逐渐收敛到头部几家，彼此之间也在相互借鉴思路。一篇对 11 个生产级编程 harness 做源码分析的论文发现，它们没有一个依赖 LangChain 这类通用的 Agent 框架，彼此却越长越像：Codex 直接沿用了 Claude Code 的 hooks 术语，还能导入它的会话和配置。&lt;sup id="fnref:27">&lt;a href="#fn:27" class="footnote-ref" role="doc-noteref">27&lt;/a>&lt;/sup>&lt;/p>
&lt;p>在代码场景里，向外的价值最明显。我在 &lt;a href="https://imxwell.com/blog/codeagent_brain/">Code Agent 的中控系统&lt;/a> 里写过，编译器、单元测试和 &lt;code>git diff&lt;/code> 比模型自评可靠得多。模型不用去猜“这段代码应该没问题”，运行一次测试就知道了。外部环境在这里扮演的是一面镜子，帮模型看见自己看不见的错误。&lt;/p>
&lt;p>OpenAI 那篇文章里有一句话，把这层关系说得很直白：当工程团队的主要工作不再是写代码，剩下的就是设计环境、说清意图、搭建反馈回路，让 Agent 能可靠地干活。&lt;sup id="fnref1:24">&lt;a href="#fn:24" class="footnote-ref" role="doc-noteref">24&lt;/a>&lt;/sup> 换成《助推》的说法，harness 就是给模型设计的选择架构，写 harness 的人，就是模型的选择架构师：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">助推中的设计&lt;/th>
&lt;th style="text-align:left">harness 中的对应&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">设好默认选项&lt;/td>
&lt;td style="text-align:left">每次启动自动读入项目规则（&lt;code>AGENTS.md&lt;/code>、&lt;code>CLAUDE.md&lt;/code>），默认按项目约定干活&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">理解映射关系&lt;/td>
&lt;td style="text-align:left">给一张地图，而不是一本手册：规则文件只当目录，细节按需去查&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">简化复杂选择&lt;/td>
&lt;td style="text-align:left">先写计划，把大任务拆成小步，必要时交给子 Agent&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">给出反馈&lt;/td>
&lt;td style="text-align:left">用 hooks 在每次改动后自动跑 lint 和测试&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">预期会犯错&lt;/td>
&lt;td style="text-align:left">沙箱、权限确认、git 检查点和回滚&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>其中几条，OpenAI 做得很彻底：&lt;code>AGENTS.md&lt;/code> 控制在一百行左右，只当目录用，详细的设计和架构文档放在仓库的 &lt;code>docs/&lt;/code> 里按需查阅；自定义 lint 的报错信息直接写成修复指引，报错的同时就告诉 Agent 该怎么改。&lt;sup id="fnref2:24">&lt;a href="#fn:24" class="footnote-ref" role="doc-noteref">24&lt;/a>&lt;/sup> 一个好的 harness，不是让模型每一步都做艰难的判断，而是让正确的动作成为最自然的下一步。&lt;/p>
&lt;p>向外同样有边界。测试覆盖不足时，Agent 可能学会“让测试通过”而不是“把问题修好”，这就是前面读书指标那个问题在代码里的翻版。它还可能过早宣布完工：Anthropic 在长时任务的 harness 里专门对付这一点，先让 Agent 把要做的功能全部列成清单、一律标为“未通过”，再一次只做一项，做完留下提交记录和进度说明。&lt;sup id="fnref:28">&lt;a href="#fn:28" class="footnote-ref" role="doc-noteref">28&lt;/a>&lt;/sup> 检索到的网页可能过时，甚至带有恶意指令；工具权限过大时，一次错误调用的代价远高于一次错误回答。这和被暗黑模式带偏的人很像：环境越强，环境本身的质量就越重要。&lt;/p>
&lt;hr>
&lt;h2 id="一段钟摆大模型在内外之间来回">一段钟摆：大模型在内外之间来回&lt;/h2>
&lt;p>回看这几年的演进，业界注意力的重心大致在向内和向外之间摆了几次。这是事后整理出来的叙事，实际上两条路线一直并行，ReAct 本身就是推理和行动交替。但重心的转移是看得见的：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>2022 年&lt;/strong>，CoT 让大家意识到，模型“多想一会儿”就能变强；&lt;/li>
&lt;li>&lt;strong>2022 年底到 2023 年&lt;/strong>，ReAct、function calling 和各种 Agent 框架相继出现，注意力转向工具、检索和环境；&lt;/li>
&lt;li>&lt;strong>2024 年到 2025 年初&lt;/strong>，OpenAI o1、DeepSeek-R1 等推理模型把“想得更久”直接训练进模型，推理时计算成了新的扩展方向；&lt;sup id="fnref1:13">&lt;a href="#fn:13" class="footnote-ref" role="doc-noteref">13&lt;/a>&lt;/sup>&lt;sup id="fnref1:14">&lt;a href="#fn:14" class="footnote-ref" role="doc-noteref">14&lt;/a>&lt;/sup>&lt;/li>
&lt;li>&lt;strong>2025 年&lt;/strong>，推理和工具调用在模型内部合流。4 月，OpenAI 发布 o3 和 o4-mini，官方的说法是，这是他们的推理模型第一次可以在推理过程中自主使用并组合 ChatGPT 里的所有工具；&lt;sup id="fnref:29">&lt;a href="#fn:29" class="footnote-ref" role="doc-noteref">29&lt;/a>&lt;/sup> 5 月发布的 Claude 4 可以在两次工具调用之间继续思考；&lt;sup id="fnref1:23">&lt;a href="#fn:23" class="footnote-ref" role="doc-noteref">23&lt;/a>&lt;/sup> 8 月的 GPT-5 把推理变成了默认配置。&lt;sup id="fnref1:15">&lt;a href="#fn:15" class="footnote-ref" role="doc-noteref">15&lt;/a>&lt;/sup> 也是在这一年，Claude Code、Codex 这类编程 Agent 走进了日常开发；&lt;/li>
&lt;li>&lt;strong>2026 年上半年&lt;/strong>，推理和调用工具都成了模型自带的能力，注意力又转回模型之外：harness engineering 有了名字，各家 harness 集中涌现，又很快收敛到头部几家，相互借鉴。&lt;sup id="fnref3:24">&lt;a href="#fn:24" class="footnote-ref" role="doc-noteref">24&lt;/a>&lt;/sup>&lt;sup id="fnref1:27">&lt;a href="#fn:27" class="footnote-ref" role="doc-noteref">27&lt;/a>&lt;/sup>&lt;/li>
&lt;/ul>
&lt;p>每一次转移都不是否定上一次，更像是撞到了上一种方式的边界：只会想的模型碰到了知识和验证的上限，于是转向工具；只会调工具的 Agent 暴露出规划和判断的不足，于是回头补强推理；等推理和调用工具都成了模型自带的能力，差距又落回了模型之外：给它什么上下文、什么约束、什么反馈。这一次钟摆摆向外面，摆到的已经不是“多接几个工具”，而是“设计整个环境”，和《助推》的思路几乎一样。最后留下来的，是一个既会想、也会看的系统。&lt;/p>
&lt;p>我的阅读习惯也走过类似的一圈：先是被地铁这个外部环境托着，环境一撤就散了；后来靠向内的觉察找回方向，再用床头的书重新搭起一个外部结构。&lt;/p>
&lt;hr>
&lt;h2 id="内与外不是二选一">内与外不是二选一&lt;/h2>
&lt;p>这样看下来，向内和向外不是两条路线，而是同一个循环的两半。&lt;/p>
&lt;p>&lt;strong>向内决定了向外的质量。&lt;/strong> 一个说不清自己需要什么的人，即使求助也很难得到有效帮助；一个没有规划的 Agent，工具再多也容易乱用。非暴力沟通最后落在“请求”上，Agent 里的推理最后落在“下一步调用什么工具”上，道理是一样的：先想清楚，外部的力量才能用对地方。&lt;/p>
&lt;p>&lt;strong>向外反过来塑造向内。&lt;/strong> 被助推形成的习惯，时间久了可能变成自己的一部分。床头这本书能不能做到这一步，让习惯在环境再变时也留得住，才过了三周，还不好说。大模型在这一点上倒是给了一个清楚的例子。DeepSeek 在训练 R1 的过程中，先做了一个 R1-Zero：直接用可验证的外部奖励做强化学习，奖励主要看最终答案对不对，并不教模型该怎么想。可训练过程中，模型的回答越来越长，开始自己回头检查、换思路重试；论文里还记录了一个“顿悟时刻”：“wait” 这个词在训练早期几乎不出现，8000 步之后突然激增，模型学会了停下来重新审视自己的步骤。&lt;sup id="fnref2:14">&lt;a href="#fn:14" class="footnote-ref" role="doc-noteref">14&lt;/a>&lt;/sup> 外部反馈，最终被内化成了向内的能力。&lt;/p>
&lt;p>更日常的例子是 Agent 的 harness。早期要让模型用工具，得在提示词里规定好 “Thought / Action / Observation” 这样的格式，再由框架从输出的文本里把调用解析出来，格式一乱就会调用失败。2023 年 6 月，OpenAI 推出 function calling，模型经过微调，能自己判断什么时候该调用函数，并按函数签名输出 JSON。&lt;sup id="fnref:30">&lt;a href="#fn:30" class="footnote-ref" role="doc-noteref">30&lt;/a>&lt;/sup> “一步一步思考”也走了同样的路：它原本是写在提示词里的外部技巧，到了推理模型，OpenAI 的官方指南反而建议别再这么写，因为模型已经会在内部推理，额外要求有时还会拖累效果。&lt;sup id="fnref:31">&lt;a href="#fn:31" class="footnote-ref" role="doc-noteref">31&lt;/a>&lt;/sup> 到了今天，这个过程还在加快：LangChain 在文章里提到，Claude Code 和 Codex 背后的模型，后训练时就是连同 harness 一起练的，文件操作、执行命令、做计划、分派子 Agent 这些 harness 设计者希望它擅长的动作，被直接练成了模型的本能。&lt;sup id="fnref1:26">&lt;a href="#fn:26" class="footnote-ref" role="doc-noteref">26&lt;/a>&lt;/sup> 很多一开始要靠 harness 搭出来的能力，就这样一点点变成了模型本身的能力。&lt;/p>
&lt;p>反方向的移动也在同时发生。前面那篇源码分析观察到，原本写在提示词里的行为约束，正越来越多地搬进配置。&lt;sup id="fnref2:27">&lt;a href="#fn:27" class="footnote-ref" role="doc-noteref">27&lt;/a>&lt;/sup> 与其在提示词里嘱咐模型“改完代码记得跑测试”，不如写一个 hook，每次改动之后自动跑。这几乎就是《助推》的主张：不指望执行者在当下记得做对，而是让计划者提前把环境改好。模型身上的“应该”，也在被一条条换成结构。&lt;/p>
&lt;p>&lt;strong>最好的外部工具，常常是帮人向内的工具。&lt;/strong> 程序员有一个老办法叫“小黄鸭调试”，出自 1999 年出版的《程序员修炼之道》：遇到解决不了的 bug，就对着桌上的一只橡皮鸭，逐行解释代码在做什么。&lt;sup id="fnref:32">&lt;a href="#fn:32" class="footnote-ref" role="doc-noteref">32&lt;/a>&lt;/sup> 鸭子什么也不会说，但很多时候，解释到一半，问题就自己浮现出来了。鸭子是外物，它帮助的却是向内的澄清。非暴力沟通里的“请求”、写给自己的计划、Agent 在行动前写下的 plan，连同前面推理的那张草稿纸，都有点像这只鸭子：借一个外部的形式，逼自己把内部想清楚。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span class="line">&lt;span class="cl">&lt;span class="n">flowchart&lt;/span> &lt;span class="n">LR&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">clarify&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;向内澄清&amp;lt;br/&amp;gt;观察、需要、目标&amp;#34;&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">--&amp;gt;&lt;/span> &lt;span class="n">plan&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;具体请求&amp;lt;br/&amp;gt;或行动计划&amp;#34;&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">plan&lt;/span> &lt;span class="o">--&amp;gt;&lt;/span> &lt;span class="n">act&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;向外行动&amp;lt;br/&amp;gt;工具、他人、环境&amp;#34;&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">act&lt;/span> &lt;span class="o">--&amp;gt;&lt;/span> &lt;span class="k">signal&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;外部反馈&amp;#34;&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">signal&lt;/span> &lt;span class="o">--&amp;gt;&lt;/span> &lt;span class="n">update&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;更新认知&amp;#34;&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">update&lt;/span> &lt;span class="o">--&amp;gt;&lt;/span> &lt;span class="n">clarify&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">signal&lt;/span> &lt;span class="o">-.-&amp;gt;|&lt;/span>&lt;span class="err">长期积累&lt;/span>&lt;span class="o">|&lt;/span> &lt;span class="n">habit&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;内化为&amp;lt;br/&amp;gt;习惯或能力&amp;#34;&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">habit&lt;/span> &lt;span class="o">-.-&amp;gt;&lt;/span> &lt;span class="n">clarify&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>落到具体问题上，我会用几个问题判断该先往哪边走：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">当前的困难&lt;/th>
&lt;th style="text-align:left">更适合的方向&lt;/th>
&lt;th style="text-align:left">人的例子&lt;/th>
&lt;th style="text-align:left">模型的例子&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">不清楚自己要什么&lt;/td>
&lt;td style="text-align:left">先向内&lt;/td>
&lt;td style="text-align:left">区分感受、需要和策略&lt;/td>
&lt;td style="text-align:left">先拆解任务、写计划&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">知道要什么，但做不到&lt;/td>
&lt;td style="text-align:left">向外设计环境&lt;/td>
&lt;td style="text-align:left">改默认选项、找人监督&lt;/td>
&lt;td style="text-align:left">写进项目规则，用 hooks 自动检查&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">缺少必要的信息&lt;/td>
&lt;td style="text-align:left">向外获取&lt;/td>
&lt;td style="text-align:left">请教、查资料&lt;/td>
&lt;td style="text-align:left">检索、调用工具&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">反复思考却没有进展&lt;/td>
&lt;td style="text-align:left">找外部反馈&lt;/td>
&lt;td style="text-align:left">找人聊一聊、先做一个小尝试&lt;/td>
&lt;td style="text-align:left">运行测试、换一条路径&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">外部意见太多、互相冲突&lt;/td>
&lt;td style="text-align:left">回到向内&lt;/td>
&lt;td style="text-align:left">重新确认自己的需要&lt;/td>
&lt;td style="text-align:left">回到目标和验收条件&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;hr>
&lt;h2 id="当向外变得太容易">当向外变得太容易&lt;/h2>
&lt;p>最后还有一个问题绕不过去：对今天的人来说，向外看已经太容易了。&lt;/p>
&lt;p>遇到不懂的问题，打开对话框问一句，几秒钟就能得到一个条理清晰的答案；心里别扭，也可以让大模型帮忙分析情绪、润色措辞。大模型成了一个随时可用、几乎零成本的外部环境。&lt;/p>
&lt;p>开头我把丢掉阅读归因于环境变了。现在回头看，还有另一层：播客和讲书本身就是一种太容易的向外。别人已经替你读完、消化好，再用半小时讲给你听，获取信息的成本很低，但咀嚼和思考的那一步，也一起被省掉了。用非暴力沟通的话说，它是一个很高效的策略，却刚好绕开了那个需要。&lt;/p>
&lt;p>大模型让这个问题变得更隐蔽。讲书只是替你读，大模型还能替你组织思路、替你下结论。如果连“我到底想要什么”“我此刻是什么感受”都交给模型回答，得到的答案再漂亮，也只是一个外部的猜测。非暴力沟通里最难的部分，恰恰是没法外包的：观察要自己看，感受要自己认，需要要自己找。&lt;/p>
&lt;p>写代码时，这一点我感受最深。Claude Code 是很好的工具，确实能大幅提效，但怎么用好它是一门学问。它常常一下子交回一大段代码，看上去需求也实现了；可我描述到的部分做对了，没描述到的地方，却不知道埋了多少隐患，我经常要回头收拾残局。&lt;/p>
&lt;p>有一次我让大模型写 SQL，查一个场景的曝光和点击率。点击的口径我明确告诉过它，但同一轮里还给了几个别的口径，它把这几个混在了一起。偏偏我跑 Claude Code 的机器连不上数据库，它没法自己跑一遍、拿一手数据核对，只能在上下文里顺着推，推出了一堆有模有样的结论。直到几组数据叠在一起越看越不对劲，我才回头手动推了一遍，发现点击口径用错了，整个分析都失效了。&lt;/p>
&lt;p>复盘下来，问题出在两头。向内没理干净：口径我说了，但几个口径一起给，哪个用在哪里没有划清边界，模糊的地方它就按自己的理解补上，还补得像模像样。向外被切断了：没有数据库，就没有反馈，模型只能自己检查自己，这正是前面讲的推理的边界，没有外部信号时，自我纠正并不可靠，错误的解释反而越写越圆。前面说“测试通过”不等于“问题修好”，这一次更糟：连测试都没有。&lt;/p>
&lt;p>一个简单的做法是给自己一点助推：问模型之前，先写下自己的判断，哪怕只有一两句。写代码时，这个判断就是验收标准：要做成什么样，哪些地方不能动，怎样才算做完。它也不是开头写一次就够了，模型每交回一段代码，都要拿它对一遍。能给模型一条自己验证的路就尽量给，哪怕只是一小份样本数据；给不了，这个核对就只能由我来做。这样模型的回答就成了反馈，而不是替代。OpenAI 讲 harness engineering 时，把工程师剩下的工作归结为设计环境、说清意图、搭建反馈回路；回头看那次 SQL，后两件我都没有做好。先有意图，工具才是助力；没有意图，工具只会带着人跑。&lt;/p>
&lt;hr>
&lt;h2 id="我现在怎么理解">我现在怎么理解&lt;/h2>
&lt;p>回到床头那本书。它能起作用，靠的不只是“放在床头”这个向外的动作：如果不是先察觉到自己听了很多却不踏实，真正想要的是沉下来的阅读，书放在哪里都不会被翻开。反过来，光有这份察觉也不够，是床头的书让它每天都有机会变成行动。&lt;/p>
&lt;p>向内求是为了看清，向外看是为了借力。&lt;/p>
&lt;p>《非暴力沟通》让我学会在开口之前先理一理自己的脉络，分清什么是需要、什么只是策略；《助推》让我接受人的局限，与其和自己较劲，不如从结构上把环境改好。放到大模型上，推理让模型更充分地使用已有的能力，harness 则让它可以依靠真实世界的反馈，看见自己原本看不见的错误。&lt;/p>
&lt;p>最好的状态也许不是只选其中一种，而是知道自己此刻卡在哪里：想不清楚的时候向内，想清楚了却做不到的时候向外，被外部信息淹没的时候再回到自己。反求诸己和善假于物，本来就不矛盾。&lt;/p>
&lt;hr>
&lt;h2 id="参考资料">参考资料&lt;/h2>
&lt;p>关于 Agent 如何借助外部环境形成闭环，可以继续阅读：&lt;a href="https://imxwell.com/blog/codeagent_brain/">Code Agent 的中控系统&lt;/a> 和 &lt;a href="https://imxwell.com/blog/agent_obs2act/">Agent 如何积累能力：RAG、Memory 与 Skills&lt;/a>。&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>马歇尔·卢森堡，《非暴力沟通》（&lt;em>Nonviolent Communication: A Language of Life&lt;/em>），章节号按英文第二版。人天生乐于以慈悲的方式给予和接受，见第一章 “Giving From the Heart”；自我评判、“把‘不得不’换成‘我选择’”见第九章 “Connecting Compassionately with Ourselves”。&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&amp;#160;&lt;a href="#fnref1:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&amp;#160;&lt;a href="#fnref2:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&amp;#160;&lt;a href="#fnref3:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>Marshall B. Rosenberg, &lt;a href="https://nonviolentcommunication.com/wp-content/uploads/2019/06/WCW-1e5p-web-sample-060719.pdf">&lt;em>We Can Work It Out: Resolving Conflicts Peacefully and Powerfully&lt;/em>&lt;/a>, PuddleDancer Press。&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>理查德·塞勒、卡斯·桑斯坦，《助推：如何做出有关健康、财富与幸福的最佳决策》（&lt;em>Nudge: Improving Decisions About Health, Wealth, and Happiness&lt;/em>），2008。冷热状态与“计划者/执行者”见第二章 “Resisting Temptation”；NUDGES 见第五章 “Choice Architecture”。&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&amp;#160;&lt;a href="#fnref1:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&amp;#160;&lt;a href="#fnref2:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&amp;#160;&lt;a href="#fnref3:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&amp;#160;&lt;a href="#fnref4:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>Richard E. Nisbett and Timothy D. Wilson, &lt;a href="https://doi.org/10.1037/0033-295X.84.3.231">Telling More Than We Can Know: Verbal Reports on Mental Processes&lt;/a>, &lt;em>Psychological Review&lt;/em>, 1977。&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>Brigitte C. Madrian and Dennis F. Shea, &lt;a href="https://www.nber.org/papers/w7682">The Power of Suggestion: Inertia in 401(k) Participation and Savings Behavior&lt;/a>, &lt;em>The Quarterly Journal of Economics&lt;/em>, 2001。&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>Eric J. Johnson and Daniel Goldstein, &lt;a href="https://www.science.org/doi/10.1126/science.1091721">Do Defaults Save Lives?&lt;/a>, &lt;em>Science&lt;/em>, 2003。&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:7">
&lt;p>Richard H. Thaler and Shlomo Benartzi, &lt;a href="https://doi.org/10.1086/380085">Save More Tomorrow: Using Behavioral Economics to Increase Employee Saving&lt;/a>, &lt;em>Journal of Political Economy&lt;/em>, 2004。&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:8">
&lt;p>Blake Evans-Pritchard, &lt;a href="https://worksthatwork.com/1/urinal-fly">Aiming to Reduce Cleaning Costs&lt;/a>, &lt;em>Works That Work&lt;/em>, 2013。&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:9">
&lt;p>Richard H. Thaler, &lt;a href="https://doi.org/10.1126/science.aau9241">Nudge, not sludge&lt;/a>, &lt;em>Science&lt;/em>, 2018。&amp;#160;&lt;a href="#fnref:9" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:10">
&lt;p>Cass R. Sunstein, &lt;em>The Ethics of Influence: Government in the Age of Behavioral Science&lt;/em>, 2016。&amp;#160;&lt;a href="#fnref:10" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:11">
&lt;p>Jason Wei et al., &lt;a href="https://arxiv.org/abs/2201.11903">Chain-of-Thought Prompting Elicits Reasoning in Large Language Models&lt;/a>, 2022。&amp;#160;&lt;a href="#fnref:11" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:12">
&lt;p>Takeshi Kojima et al., &lt;a href="https://arxiv.org/abs/2205.11916">Large Language Models are Zero-Shot Reasoners&lt;/a>, 2022。&amp;#160;&lt;a href="#fnref:12" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:13">
&lt;p>OpenAI, &lt;a href="https://openai.com/index/learning-to-reason-with-llms/">Learning to Reason with LLMs&lt;/a>, 2024。&amp;#160;&lt;a href="#fnref:13" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&amp;#160;&lt;a href="#fnref1:13" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:14">
&lt;p>DeepSeek-AI, &lt;a href="https://arxiv.org/abs/2501.12948v2">DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning&lt;/a>, 2025。“wait” 的词频统计见 arXiv v2 补充材料 C.2 的 Figure 9，v1 只有“顿悟时刻”的案例，没有这组统计。&amp;#160;&lt;a href="#fnref:14" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&amp;#160;&lt;a href="#fnref1:14" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&amp;#160;&lt;a href="#fnref2:14" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:15">
&lt;p>OpenAI, &lt;a href="https://openai.com/index/introducing-gpt-5/">Introducing GPT-5&lt;/a> 与 &lt;a href="https://openai.com/index/introducing-gpt-5-for-developers/">Introducing GPT-5 for developers&lt;/a>, 2025。&amp;#160;&lt;a href="#fnref:15" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&amp;#160;&lt;a href="#fnref1:15" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:16">
&lt;p>William Merrill and Ashish Sabharwal, &lt;a href="https://arxiv.org/abs/2310.07923">The Expressive Power of Transformers with Chain of Thought&lt;/a>, ICLR 2024。&amp;#160;&lt;a href="#fnref:16" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:17">
&lt;p>Jie Huang et al., &lt;a href="https://arxiv.org/abs/2310.01798">Large Language Models Cannot Self-Correct Reasoning Yet&lt;/a>, 2023。&amp;#160;&lt;a href="#fnref:17" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:18">
&lt;p>Aryo Pradipta Gema et al., &lt;a href="https://arxiv.org/abs/2507.14417">Inverse Scaling in Test-Time Compute&lt;/a>, &lt;em>TMLR&lt;/em>, 2025。&amp;#160;&lt;a href="#fnref:18" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:19">
&lt;p>Miles Turpin et al., &lt;a href="https://arxiv.org/abs/2305.04388">Language Models Don't Always Say What They Think: Unfaithful Explanations in Chain-of-Thought Prompting&lt;/a>, 2023。&amp;#160;&lt;a href="#fnref:19" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:20">
&lt;p>Yanda Chen et al., &lt;a href="https://arxiv.org/abs/2505.05410">Reasoning Models Don't Always Say What They Think&lt;/a>, Anthropic, 2025。&amp;#160;&lt;a href="#fnref:20" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:21">
&lt;p>Shunyu Yao et al., &lt;a href="https://arxiv.org/abs/2210.03629">ReAct: Synergizing Reasoning and Acting in Language Models&lt;/a>, 2022。&amp;#160;&lt;a href="#fnref:21" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:22">
&lt;p>Zhibin Gou et al., &lt;a href="https://arxiv.org/abs/2305.11738">CRITIC: Large Language Models Can Self-Correct with Tool-Interactive Critiquing&lt;/a>, 2023。&amp;#160;&lt;a href="#fnref:22" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:23">
&lt;p>Anthropic, &lt;a href="https://platform.claude.com/docs/en/build-with-claude/extended-thinking">Extended thinking: Interleaved thinking&lt;/a>。Claude 4 起以 beta 形式提供，之后的模型在自适应思考模式下默认开启。&amp;#160;&lt;a href="#fnref:23" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&amp;#160;&lt;a href="#fnref1:23" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:24">
&lt;p>Ryan Lopopolo, &lt;a href="https://openai.com/index/harness-engineering/">Harness engineering: leveraging Codex in an agent-first world&lt;/a>, OpenAI, 2026-02-11。&amp;#160;&lt;a href="#fnref:24" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&amp;#160;&lt;a href="#fnref1:24" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&amp;#160;&lt;a href="#fnref2:24" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&amp;#160;&lt;a href="#fnref3:24" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:25">
&lt;p>Vivek Trivedy, &lt;a href="https://www.langchain.com/blog/improving-deep-agents-with-harness-engineering">Improving Deep Agents with harness engineering&lt;/a>, LangChain, 2026-02-17。&amp;#160;&lt;a href="#fnref:25" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&amp;#160;&lt;a href="#fnref1:25" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:26">
&lt;p>Vivek Trivedy, &lt;a href="https://www.langchain.com/blog/the-anatomy-of-an-agent-harness">The Anatomy of an Agent Harness&lt;/a>, LangChain, 2026-03-10。&amp;#160;&lt;a href="#fnref:26" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&amp;#160;&lt;a href="#fnref1:26" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:27">
&lt;p>Paul Barbaste et al., &lt;a href="https://arxiv.org/abs/2609.00006">Harness Engineering: Anatomy, Architecture, and Evolution of Coding Agents – A Source-Code Study of Eleven Systems&lt;/a>, 2026。&amp;#160;&lt;a href="#fnref:27" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&amp;#160;&lt;a href="#fnref1:27" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&amp;#160;&lt;a href="#fnref2:27" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:28">
&lt;p>Anthropic, &lt;a href="https://www.anthropic.com/engineering/effective-harnesses-for-long-running-agents">Effective harnesses for long-running agents&lt;/a>, 2025。&amp;#160;&lt;a href="#fnref:28" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:29">
&lt;p>OpenAI, &lt;a href="https://openai.com/index/introducing-o3-and-o4-mini/">Introducing OpenAI o3 and o4-mini&lt;/a>, 2025。&amp;#160;&lt;a href="#fnref:29" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:30">
&lt;p>OpenAI, &lt;a href="https://openai.com/index/function-calling-and-other-api-updates/">Function calling and other API updates&lt;/a>, 2023。&amp;#160;&lt;a href="#fnref:30" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:31">
&lt;p>OpenAI, &lt;a href="https://developers.openai.com/api/docs/guides/reasoning-best-practices">Reasoning best practices&lt;/a>。&amp;#160;&lt;a href="#fnref:31" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:32">
&lt;p>Andrew Hunt and David Thomas, &lt;em>The Pragmatic Programmer: From Journeyman to Master&lt;/em>（中译本《程序员修炼之道》）, Addison-Wesley, 1999。&amp;#160;&lt;a href="#fnref:32" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item></channel></rss>